diff --git a/poky/.gitignore b/poky/.gitignore
index 6dde540..4bfe022 100644
--- a/poky/.gitignore
+++ b/poky/.gitignore
@@ -30,4 +30,5 @@
 pull-*/
 bitbake/lib/toaster/contrib/tts/backlog.txt
 bitbake/lib/toaster/contrib/tts/log/*
-bitbake/lib/toaster/contrib/tts/.cache/*
\ No newline at end of file
+bitbake/lib/toaster/contrib/tts/.cache/*
+bitbake/lib/bb/tests/runqueue-tests/bitbake-cookerdaemon.log
\ No newline at end of file
diff --git a/poky/bitbake/README b/poky/bitbake/README
index 479c376..96e6007 100644
--- a/poky/bitbake/README
+++ b/poky/bitbake/README
@@ -11,7 +11,7 @@
 
 Bitbake plain documentation can be found under the doc directory or its integrated
 html version at the Yocto Project website:
-    http://yoctoproject.org/documentation
+    https://docs.yoctoproject.org
 
 Contributing
 ------------
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
index d74e768..56abf77 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
@@ -244,7 +244,8 @@
   BBFILE_COLLECTIONS = "upstream local"
   BBFILE_PATTERN_upstream = "^/stuff/openembedded/"
   BBFILE_PATTERN_local = "^/stuff/openembedded.modified/"
-  BBFILE_PRIORITY_upstream = "5" BBFILE_PRIORITY_local = "10"
+  BBFILE_PRIORITY_upstream = "5"
+  BBFILE_PRIORITY_local = "10"
 
 .. note::
 
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
index 6760b10..e9a5f33 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
@@ -624,6 +624,34 @@
    SRC_URI = "repo://REPOROOT;protocol=git;branch=some_branch;manifest=my_manifest.xml"
    SRC_URI = "repo://REPOROOT;protocol=file;branch=some_branch;manifest=my_manifest.xml"
 
+.. _az-fetcher:
+
+Az Fetcher (``az://``)
+--------------------------
+
+This submodule fetches data from an
+`Azure Storage account <https://docs.microsoft.com/en-us/azure/storage/>`__ ,
+it inherits its functionality from the HTTP wget fetcher, but modifies its
+behavior to accomodate the usage of a
+`Shared Access Signature (SAS) <https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview>`__
+for non-public data.
+
+Such functionality is set by the variable:
+
+-  :term:`AZ_SAS`: The Azure Storage Shared Access Signature provides secure
+   delegate access to resources, if this variable is set, the Az Fetcher will
+   use it when fetching artifacts from the cloud.
+
+You can specify the AZ_SAS variable as shown below: ::
+
+   AZ_SAS = "se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>"
+
+Here is an example URL: ::
+
+   SRC_URI = "az://<azure-storage-account>.blob.core.windows.net/<foo_container>/<bar_file>"
+
+It can also be used when setting mirrors definitions using the :term:`PREMIRRORS` variable.
+
 Other Fetchers
 --------------
 
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
index 7ea68ad..d4190c2 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
@@ -1296,6 +1296,17 @@
 See the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:variable flags`" section for information
 on variable flags you can use with tasks.
 
+.. note::
+
+   While it's infrequent, it's possible to define multiple tasks as
+   dependencies when calling ``addtask``. For example, here's a snippet
+   from the OpenEmbedded class file ``package_tar.bbclass``::
+
+     addtask package_write_tar before do_build after do_packagedata do_package
+
+   Note how the ``package_write_tar`` task has to wait until both of
+   ``do_packagedata`` and ``do_package`` complete.
+
 Deleting a Task
 ---------------
 
@@ -1569,7 +1580,7 @@
    events when each of the workers parse the base configuration or if
    the server changes configuration and reparses. Any given datastore
    only has one such event executed against it, however. If
-   ```BB_INVALIDCONF`` <#>`__ is set in the datastore by the event
+   :term:`BB_INVALIDCONF` is set in the datastore by the event
    handler, the configuration is reparsed and a new event triggered,
    allowing the metadata to update configuration.
 
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
index 6469f9d..1528b04 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
@@ -39,6 +39,19 @@
       when specified allows for the Git binary from the host to be used
       rather than building ``git-native``.
 
+   :term:`AZ_SAS`
+      Azure Storage Shared Access Signature, when using the
+      :ref:`Azure Storage fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
+      This variable can be defined to be used by the fetcher to authenticate
+      and gain access to non-public artifacts.
+      ::
+
+         AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
+
+      For more information see Microsoft's Azure Storage documentation at
+      https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
+
+
    :term:`B`
       The directory in which BitBake executes functions during a recipe's
       build process.
@@ -257,45 +270,6 @@
       ``my-recipe.bb`` is executing, the ``BB_FILENAME`` variable contains
       "/foo/path/my-recipe.bb".
 
-   :term:`BBFILES_DYNAMIC`
-      Activates content depending on presence of identified layers.  You
-      identify the layers by the collections that the layers define.
-
-      Use the ``BBFILES_DYNAMIC`` variable to avoid ``.bbappend`` files whose
-      corresponding ``.bb`` file is in a layer that attempts to modify other
-      layers through ``.bbappend`` but does not want to introduce a hard
-      dependency on those other layers.
-
-      Additionally you can prefix the rule with "!" to add ``.bbappend`` and
-      ``.bb`` files in case a layer is not present.  Use this avoid hard
-      dependency on those other layers.
-
-      Use the following form for ``BBFILES_DYNAMIC``: ::
-
-         collection_name:filename_pattern
-
-      The following example identifies two collection names and two filename
-      patterns: ::
-
-         BBFILES_DYNAMIC += "\
-             clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
-             core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
-         "
-
-      When the collection name is prefixed with "!" it will add the file pattern in case
-      the layer is absent: ::
-
-         BBFILES_DYNAMIC += "\
-             !clang-layer:${LAYERDIR}/backfill/meta-clang/*/*/*.bb \
-         "
-
-      This next example shows an error message that occurs because invalid
-      entries are found, which cause parsing to abort: ::
-
-         ERROR: BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not:
-         /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
-         /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
-
    :term:`BB_GENERATE_MIRROR_TARBALLS`
       Causes tarballs of the Git repositories, including the Git metadata,
       to be placed in the :term:`DL_DIR` directory. Anyone
@@ -671,6 +645,45 @@
       For details on the syntax, see the documentation by following the
       previous link.
 
+   :term:`BBFILES_DYNAMIC`
+      Activates content depending on presence of identified layers.  You
+      identify the layers by the collections that the layers define.
+
+      Use the ``BBFILES_DYNAMIC`` variable to avoid ``.bbappend`` files whose
+      corresponding ``.bb`` file is in a layer that attempts to modify other
+      layers through ``.bbappend`` but does not want to introduce a hard
+      dependency on those other layers.
+
+      Additionally you can prefix the rule with "!" to add ``.bbappend`` and
+      ``.bb`` files in case a layer is not present.  Use this avoid hard
+      dependency on those other layers.
+
+      Use the following form for ``BBFILES_DYNAMIC``: ::
+
+         collection_name:filename_pattern
+
+      The following example identifies two collection names and two filename
+      patterns: ::
+
+         BBFILES_DYNAMIC += "\
+             clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
+             core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
+         "
+
+      When the collection name is prefixed with "!" it will add the file pattern in case
+      the layer is absent: ::
+
+         BBFILES_DYNAMIC += "\
+             !clang-layer:${LAYERDIR}/backfill/meta-clang/*/*/*.bb \
+         "
+
+      This next example shows an error message that occurs because invalid
+      entries are found, which cause parsing to abort: ::
+
+         ERROR: BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not:
+         /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
+         /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
+
    :term:`BBINCLUDED`
       Contains a space-separated list of all of all files that BitBake's
       parser included during parsing of the current file.
@@ -1303,6 +1316,8 @@
       -  ``svn://`` : Fetches files from a Subversion (``svn``) revision
          control repository.
 
+      -  ``az://`` : Fetches files from an Azure Storage account using HTTPS.
+
       Here are some additional options worth mentioning:
 
       -  ``unpack`` : Controls whether or not to unpack the file if it is
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index 84a9051..afce5cc 100644
--- a/poky/bitbake/lib/bb/__init__.py
+++ b/poky/bitbake/lib/bb/__init__.py
@@ -58,7 +58,7 @@
         if not bb.event.worker_pid:
             if self.name in bb.msg.loggerDefaultDomains and loglevel > (bb.msg.loggerDefaultDomains[self.name]):
                 return
-            if loglevel > bb.msg.loggerDefaultLogLevel:
+            if loglevel < bb.msg.loggerDefaultLogLevel:
                 return
         return self.log(loglevel, msg, *args, **kwargs)
 
diff --git a/poky/bitbake/lib/bb/build.py b/poky/bitbake/lib/bb/build.py
index f4f897e..b2715fc 100644
--- a/poky/bitbake/lib/bb/build.py
+++ b/poky/bitbake/lib/bb/build.py
@@ -854,6 +854,23 @@
         file_name = d.getVar('BB_FILENAME')
         bb.parse.siggen.dump_sigtask(file_name, task, stampbase, True)
 
+def find_stale_stamps(task, d, file_name=None):
+    current = stamp_internal(task, d, file_name)
+    current2 = stamp_internal(task + "_setscene", d, file_name)
+    cleanmask = stamp_cleanmask_internal(task, d, file_name)
+    found = []
+    for mask in cleanmask:
+        for name in glob.glob(mask):
+            if "sigdata" in name or "sigbasedata" in name:
+                continue
+            if name.endswith('.taint'):
+                continue
+            if name == current or name == current2:
+                continue
+            logger.debug2("Stampfile %s does not match %s or %s" % (name, current, current2))
+            found.append(name)
+    return found
+
 def del_stamp(task, d, file_name = None):
     """
     Removes a stamp for a given task
diff --git a/poky/bitbake/lib/bb/cache.py b/poky/bitbake/lib/bb/cache.py
index aea2b8b..27eb271 100644
--- a/poky/bitbake/lib/bb/cache.py
+++ b/poky/bitbake/lib/bb/cache.py
@@ -126,6 +126,7 @@
         self.inherits         = self.getvar('__inherit_cache', metadata, expand=False)
         self.fakerootenv      = self.getvar('FAKEROOTENV', metadata)
         self.fakerootdirs     = self.getvar('FAKEROOTDIRS', metadata)
+        self.fakerootlogs     = self.getvar('FAKEROOTLOGS', metadata)
         self.fakerootnoenv    = self.getvar('FAKEROOTNOENV', metadata)
         self.extradepsfunc    = self.getvar('calculate_extra_depends', metadata)
 
@@ -163,6 +164,7 @@
         cachedata.fakerootenv = {}
         cachedata.fakerootnoenv = {}
         cachedata.fakerootdirs = {}
+        cachedata.fakerootlogs = {}
         cachedata.extradepsfunc = {}
 
     def add_cacheData(self, cachedata, fn):
@@ -231,6 +233,7 @@
         cachedata.fakerootenv[fn] = self.fakerootenv
         cachedata.fakerootnoenv[fn] = self.fakerootnoenv
         cachedata.fakerootdirs[fn] = self.fakerootdirs
+        cachedata.fakerootlogs[fn] = self.fakerootlogs
         cachedata.extradepsfunc[fn] = self.extradepsfunc
 
 def virtualfn2realfn(virtualfn):
diff --git a/poky/bitbake/lib/bb/codeparser.py b/poky/bitbake/lib/bb/codeparser.py
index 25a7ac6..0cec452 100644
--- a/poky/bitbake/lib/bb/codeparser.py
+++ b/poky/bitbake/lib/bb/codeparser.py
@@ -212,9 +212,9 @@
             funcstr = codegen.to_source(func)
             argstr = codegen.to_source(arg)
         except TypeError:
-            self.log.debug(2, 'Failed to convert function and argument to source form')
+            self.log.debug2('Failed to convert function and argument to source form')
         else:
-            self.log.debug(1, self.unhandled_message % (funcstr, argstr))
+            self.log.debug(self.unhandled_message % (funcstr, argstr))
 
     def visit_Call(self, node):
         name = self.called_node_name(node.func)
@@ -450,7 +450,7 @@
 
                 cmd = word[1]
                 if cmd.startswith("$"):
-                    self.log.debug(1, self.unhandled_template % cmd)
+                    self.log.debug(self.unhandled_template % cmd)
                 elif cmd == "eval":
                     command = " ".join(word for _, word in words[1:])
                     self._parse_shell(command)
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index f4ab797..39e10e6 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -502,22 +502,30 @@
 
     def showVersions(self):
 
-        (latest_versions, preferred_versions) = self.findProviders()
+        (latest_versions, preferred_versions, required) = self.findProviders()
 
-        logger.plain("%-35s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version")
-        logger.plain("%-35s %25s %25s\n", "===========", "==============", "=================")
+        logger.plain("%-35s %25s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version", "Required Version")
+        logger.plain("%-35s %25s %25s %25s\n", "===========", "==============", "=================", "================")
 
         for p in sorted(self.recipecaches[''].pkg_pn):
-            pref = preferred_versions[p]
+            preferred = preferred_versions[p]
             latest = latest_versions[p]
+            requiredstr = ""
+            preferredstr = ""
+            if required[p]:
+                if preferred[0] is not None:
+                    requiredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
+                else:
+                    bb.fatal("REQUIRED_VERSION of package %s not available" % p)
+            else:
+                preferredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
 
-            prefstr = pref[0][0] + ":" + pref[0][1] + '-' + pref[0][2]
             lateststr = latest[0][0] + ":" + latest[0][1] + "-" + latest[0][2]
 
-            if pref == latest:
-                prefstr = ""
+            if preferred == latest:
+                preferredstr = ""
 
-            logger.plain("%-35s %25s %25s", p, lateststr, prefstr)
+            logger.plain("%-35s %25s %25s %25s", p, lateststr, preferredstr, requiredstr)
 
     def showEnvironment(self, buildfile=None, pkgs_to_build=None):
         """
@@ -1063,10 +1071,16 @@
         if pn in self.recipecaches[mc].providers:
             filenames = self.recipecaches[mc].providers[pn]
             eligible, foundUnique = bb.providers.filterProviders(filenames, pn, self.databuilder.mcdata[mc], self.recipecaches[mc])
-            filename = eligible[0]
+            if eligible is not None:
+                filename = eligible[0]
+            else:
+                filename = None
             return None, None, None, filename
         elif pn in self.recipecaches[mc].pkg_pn:
-            return bb.providers.findBestProvider(pn, self.databuilder.mcdata[mc], self.recipecaches[mc], self.recipecaches[mc].pkg_pn)
+            (latest, latest_f, preferred_ver, preferred_file, required) = bb.providers.findBestProvider(pn, self.databuilder.mcdata[mc], self.recipecaches[mc], self.recipecaches[mc].pkg_pn)
+            if required and preferred_file is None:
+                return None, None, None, None
+            return (latest, latest_f, preferred_ver, preferred_file)
         else:
             return None, None, None, None
 
diff --git a/poky/bitbake/lib/bb/event.py b/poky/bitbake/lib/bb/event.py
index 23e1f31..0454c75 100644
--- a/poky/bitbake/lib/bb/event.py
+++ b/poky/bitbake/lib/bb/event.py
@@ -118,7 +118,7 @@
             if _eventfilter:
                 if not _eventfilter(name, handler, event, d):
                     continue
-            if d and not name in (d.getVar("__BBHANDLERS_MC") or []):
+            if d is not None and not name in (d.getVar("__BBHANDLERS_MC") or set()):
                 continue
             execute_handler(name, handler, event, d)
 
@@ -232,12 +232,16 @@
 def register(name, handler, mask=None, filename=None, lineno=None, data=None):
     """Register an Event handler"""
 
-    if data and data.getVar("BB_CURRENT_MC"):
+    if data is not None and data.getVar("BB_CURRENT_MC"):
         mc = data.getVar("BB_CURRENT_MC")
         name = '%s%s' % (mc.replace('-', '_'), name)
 
     # already registered
     if name in _handlers:
+        if data is not None:
+            bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
+            bbhands_mc.add(name)
+            data.setVar("__BBHANDLERS_MC", bbhands_mc)
         return AlreadyRegistered
 
     if handler is not None:
@@ -274,16 +278,16 @@
                     _event_handler_map[m] = {}
                 _event_handler_map[m][name] = True
 
-        if data:
-            bbhands_mc = (data.getVar("__BBHANDLERS_MC") or [])
-            bbhands_mc.append(name)
+        if data is not None:
+            bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
+            bbhands_mc.add(name)
             data.setVar("__BBHANDLERS_MC", bbhands_mc)
 
         return Registered
 
 def remove(name, handler, data=None):
     """Remove an Event handler"""
-    if data:
+    if data is not None:
         if data.getVar("BB_CURRENT_MC"):
             mc = data.getVar("BB_CURRENT_MC")
             name = '%s%s' % (mc.replace('-', '_'), name)
@@ -295,8 +299,8 @@
         if name in _event_handler_map[event]:
             _event_handler_map[event].pop(name)
 
-    if data:
-        bbhands_mc = (data.getVar("__BBHANDLERS_MC") or [])
+    if data is not None:
+        bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
         if name in bbhands_mc:
             bbhands_mc.remove(name)
             data.setVar("__BBHANDLERS_MC", bbhands_mc)
@@ -666,6 +670,17 @@
         Event.__init__(self)
         self.stamps = stamps
 
+class StaleSetSceneTasks(Event):
+    """
+    An event listing setscene tasks which are 'stale' and will
+    be rerun. The metadata may use to clean up stale data.
+    tasks is a mapping of tasks and matching stale stamps.
+    """
+
+    def __init__(self, tasks):
+        Event.__init__(self)
+        self.tasks = tasks
+
 class FilesMatchingFound(Event):
     """
     Event when a list of files matching the supplied pattern has
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index 19169d7..cf0201c 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -1243,7 +1243,7 @@
 
             if checksum_name in self.parm:
                 checksum_expected = self.parm[checksum_name]
-            elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3"]:
+            elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3", "az"]:
                 checksum_expected = None
             else:
                 checksum_expected = d.getVarFlag("SRC_URI", checksum_name)
@@ -1908,6 +1908,7 @@
 from . import clearcase
 from . import npm
 from . import npmsw
+from . import az
 
 methods.append(local.Local())
 methods.append(wget.Wget())
@@ -1927,3 +1928,4 @@
 methods.append(clearcase.ClearCase())
 methods.append(npm.Npm())
 methods.append(npmsw.NpmShrinkWrap())
+methods.append(az.Az())
diff --git a/poky/bitbake/lib/bb/fetch2/az.py b/poky/bitbake/lib/bb/fetch2/az.py
new file mode 100644
index 0000000..3ccc594
--- /dev/null
+++ b/poky/bitbake/lib/bb/fetch2/az.py
@@ -0,0 +1,93 @@
+"""
+BitBake 'Fetch' Azure Storage implementation
+
+"""
+
+# Copyright (C) 2021 Alejandro Hernandez Samaniego
+#
+# Based on bb.fetch2.wget:
+# Copyright (C) 2003, 2004  Chris Larson
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import shlex
+import os
+import bb
+from   bb.fetch2 import FetchError
+from   bb.fetch2 import logger
+from   bb.fetch2.wget import Wget
+
+
+class Az(Wget):
+
+    def supports(self, ud, d):
+        """
+        Check to see if a given url can be fetched from Azure Storage
+        """
+        return ud.type in ['az']
+
+
+    def checkstatus(self, fetch, ud, d, try_again=True):
+
+        # checkstatus discards parameters either way, we need to do this before adding the SAS
+        ud.url = ud.url.replace('az://','https://').split(';')[0]
+
+        az_sas = d.getVar('AZ_SAS')
+        if az_sas and az_sas not in ud.url:
+            ud.url += az_sas
+
+        return Wget.checkstatus(self, fetch, ud, d, try_again)
+
+    # Override download method, include retries
+    def download(self, ud, d, retries=3):
+        """Fetch urls"""
+
+        # If were reaching the account transaction limit we might be refused a connection,
+        # retrying allows us to avoid false negatives since the limit changes over time
+        fetchcmd = self.basecmd + ' --retry-connrefused --waitretry=5'
+
+        # We need to provide a localpath to avoid wget using the SAS
+        # ud.localfile either has the downloadfilename or ud.path
+        localpath = os.path.join(d.getVar("DL_DIR"), ud.localfile)
+        bb.utils.mkdirhier(os.path.dirname(localpath))
+        fetchcmd += " -O %s" % shlex.quote(localpath)
+
+
+        if ud.user and ud.pswd:
+            fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (ud.user, ud.pswd)
+
+        # Check if a Shared Access Signature was given and use it
+        az_sas = d.getVar('AZ_SAS')
+
+        if az_sas:
+            azuri = '%s%s%s%s' % ('https://', ud.host, ud.path, az_sas)
+        else:
+            azuri = '%s%s%s' % ('https://', ud.host, ud.path)
+
+        if os.path.exists(ud.localpath):
+            # file exists, but we didnt complete it.. trying again.
+            fetchcmd += d.expand(" -c -P ${DL_DIR} '%s'" % azuri)
+        else:
+            fetchcmd += d.expand(" -P ${DL_DIR} '%s'" % azuri)
+
+        try:
+            self._runwget(ud, d, fetchcmd, False)
+        except FetchError as e:
+            # Azure fails on handshake sometimes when using wget after some stress, producing a
+            # FetchError from the fetcher, if the artifact exists retyring should succeed
+            if 'Unable to establish SSL connection' in str(e):
+                logger.debug2('Unable to establish SSL connection: Retries remaining: %s, Retrying...' % retries)
+                self.download(ud, d, retries -1)
+
+        # Sanity check since wget can pretend it succeed when it didn't
+        # Also, this used to happen if sourceforge sent us to the mirror page
+        if not os.path.exists(ud.localpath):
+            raise FetchError("The fetch command returned success for url %s but %s doesn't exist?!" % (azuri, ud.localpath), azuri)
+
+        if os.path.getsize(ud.localpath) == 0:
+            os.remove(ud.localpath)
+            raise FetchError("The fetch of %s resulted in a zero size file?! Deleting and failing since this isn't right." % (azuri), azuri)
+
+        return True
diff --git a/poky/bitbake/lib/bb/providers.py b/poky/bitbake/lib/bb/providers.py
index b5a6cd0..3ec11a4 100644
--- a/poky/bitbake/lib/bb/providers.py
+++ b/poky/bitbake/lib/bb/providers.py
@@ -38,16 +38,17 @@
     localdata = data.createCopy(cfgData)
     bb.data.expandKeys(localdata)
 
+    required = {}
     preferred_versions = {}
     latest_versions = {}
 
     for pn in pkg_pn:
-        (last_ver, last_file, pref_ver, pref_file) = findBestProvider(pn, localdata, dataCache, pkg_pn)
+        (last_ver, last_file, pref_ver, pref_file, req) = findBestProvider(pn, localdata, dataCache, pkg_pn)
         preferred_versions[pn] = (pref_ver, pref_file)
         latest_versions[pn] = (last_ver, last_file)
+        required[pn] = req
 
-    return (latest_versions, preferred_versions)
-
+    return (latest_versions, preferred_versions, required)
 
 def allProviders(dataCache):
     """
@@ -59,7 +60,6 @@
         all_providers[pn].append((ver, fn))
     return all_providers
 
-
 def sortPriorities(pn, dataCache, pkg_pn = None):
     """
     Reorder pkg_pn by file priority and default preference
@@ -87,6 +87,21 @@
 
     return tmp_pn
 
+def versionVariableMatch(cfgData, keyword, pn):
+    """
+    Return the value of the <keyword>_VERSION variable if set.
+    """
+
+    # pn can contain '_', e.g. gcc-cross-x86_64 and an override cannot
+    # hence we do this manually rather than use OVERRIDES
+    ver = cfgData.getVar("%s_VERSION_pn-%s" % (keyword, pn))
+    if not ver:
+        ver = cfgData.getVar("%s_VERSION_%s" % (keyword, pn))
+    if not ver:
+        ver = cfgData.getVar("%s_VERSION" % keyword)
+
+    return ver
+
 def preferredVersionMatch(pe, pv, pr, preferred_e, preferred_v, preferred_r):
     """
     Check if the version pe,pv,pr is the preferred one.
@@ -102,19 +117,28 @@
 
 def findPreferredProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
     """
-    Find the first provider in pkg_pn with a PREFERRED_VERSION set.
+    Find the first provider in pkg_pn with REQUIRED_VERSION or PREFERRED_VERSION set.
     """
 
     preferred_file = None
     preferred_ver = None
+    required = False
 
-    # pn can contain '_', e.g. gcc-cross-x86_64 and an override cannot
-    # hence we do this manually rather than use OVERRIDES
-    preferred_v = cfgData.getVar("PREFERRED_VERSION_pn-%s" % pn)
-    if not preferred_v:
-        preferred_v = cfgData.getVar("PREFERRED_VERSION_%s" % pn)
-    if not preferred_v:
-        preferred_v = cfgData.getVar("PREFERRED_VERSION")
+    required_v = versionVariableMatch(cfgData, "REQUIRED", pn)
+    preferred_v = versionVariableMatch(cfgData, "PREFERRED", pn)
+
+    itemstr = ""
+    if item:
+        itemstr = " (for item %s)" % item
+
+    if required_v is not None:
+        if preferred_v is not None:
+            logger.warn("REQUIRED_VERSION and PREFERRED_VERSION for package %s%s are both set using REQUIRED_VERSION %s", pn, itemstr, required_v)
+        else:
+            logger.debug("REQUIRED_VERSION is set for package %s%s", pn, itemstr)
+        # REQUIRED_VERSION always takes precedence over PREFERRED_VERSION
+        preferred_v = required_v
+        required = True
 
     if preferred_v:
         m = re.match(r'(\d+:)*(.*)(_.*)*', preferred_v)
@@ -147,11 +171,9 @@
             pv_str = preferred_v
         if not (preferred_e is None):
             pv_str = '%s:%s' % (preferred_e, pv_str)
-        itemstr = ""
-        if item:
-            itemstr = " (for item %s)" % item
         if preferred_file is None:
-            logger.warn("preferred version %s of %s not available%s", pv_str, pn, itemstr)
+            if not required:
+                logger.warn("preferred version %s of %s not available%s", pv_str, pn, itemstr)
             available_vers = []
             for file_set in pkg_pn:
                 for f in file_set:
@@ -164,11 +186,15 @@
             if available_vers:
                 available_vers.sort()
                 logger.warn("versions of %s available: %s", pn, ' '.join(available_vers))
+            if required:
+                logger.error("required version %s of %s not available%s", pv_str, pn, itemstr)
         else:
-            logger.debug("selecting %s as PREFERRED_VERSION %s of package %s%s", preferred_file, pv_str, pn, itemstr)
+            if required:
+                logger.debug("selecting %s as REQUIRED_VERSION %s of package %s%s", preferred_file, pv_str, pn, itemstr)
+            else:
+                logger.debug("selecting %s as PREFERRED_VERSION %s of package %s%s", preferred_file, pv_str, pn, itemstr)
 
-    return (preferred_ver, preferred_file)
-
+    return (preferred_ver, preferred_file, required)
 
 def findLatestProvider(pn, cfgData, dataCache, file_set):
     """
@@ -189,7 +215,6 @@
 
     return (latest, latest_f)
 
-
 def findBestProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
     """
     If there is a PREFERRED_VERSION, find the highest-priority bbfile
@@ -198,17 +223,16 @@
     """
 
     sortpkg_pn = sortPriorities(pn, dataCache, pkg_pn)
-    # Find the highest priority provider with a PREFERRED_VERSION set
-    (preferred_ver, preferred_file) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
+    # Find the highest priority provider with a REQUIRED_VERSION or PREFERRED_VERSION set
+    (preferred_ver, preferred_file, required) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
     # Find the latest version of the highest priority provider
     (latest, latest_f) = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[0])
 
-    if preferred_file is None:
+    if not required and preferred_file is None:
         preferred_file = latest_f
         preferred_ver = latest
 
-    return (latest, latest_f, preferred_ver, preferred_file)
-
+    return (latest, latest_f, preferred_ver, preferred_file, required)
 
 def _filterProviders(providers, item, cfgData, dataCache):
     """
@@ -234,10 +258,13 @@
 
     logger.debug("providers for %s are: %s", item, list(sorted(pkg_pn.keys())))
 
-    # First add PREFERRED_VERSIONS
+    # First add REQUIRED_VERSIONS or PREFERRED_VERSIONS
     for pn in sorted(pkg_pn):
         sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn)
-        preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
+        preferred_ver, preferred_file, required = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
+        if required and preferred_file is None:
+            return eligible
+        preferred_versions[pn] = (preferred_ver, preferred_file)
         if preferred_versions[pn][1]:
             eligible.append(preferred_versions[pn][1])
 
@@ -249,7 +276,6 @@
         eligible.append(preferred_versions[pn][1])
 
     if not eligible:
-        logger.error("no eligible providers for %s", item)
         return eligible
 
     # If pn == item, give it a slight default preference
@@ -266,7 +292,6 @@
 
     return eligible
 
-
 def filterProviders(providers, item, cfgData, dataCache):
     """
     Take a list of providers and filter/reorder according to the
@@ -388,7 +413,6 @@
 
     return rproviders
 
-
 def buildWorldTargetList(dataCache, task=None):
     """
     Build package list for "bitbake world"
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 54ef245..80d7f6c 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -1242,6 +1242,7 @@
         magic = "decafbad"
         if self.cooker.configuration.profile:
             magic = "decafbadbad"
+        fakerootlogs = None
         if fakeroot:
             magic = magic + "beef"
             mcdata = self.cooker.databuilder.mcdata[mc]
@@ -1251,10 +1252,11 @@
             for key, value in (var.split('=') for var in fakerootenv):
                 env[key] = value
             worker = subprocess.Popen(fakerootcmd + ["bitbake-worker", magic], stdout=subprocess.PIPE, stdin=subprocess.PIPE, env=env)
+            fakerootlogs = self.rqdata.dataCaches[mc].fakerootlogs
         else:
             worker = subprocess.Popen(["bitbake-worker", magic], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
         bb.utils.nonblockingfd(worker.stdout)
-        workerpipe = runQueuePipe(worker.stdout, None, self.cfgData, self, rqexec)
+        workerpipe = runQueuePipe(worker.stdout, None, self.cfgData, self, rqexec, fakerootlogs=fakerootlogs)
 
         workerdata = {
             "taskdeps" : self.rqdata.dataCaches[mc].task_deps,
@@ -1772,7 +1774,7 @@
         self.sqdata = SQData()
         build_scenequeue_data(self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self)
 
-    def runqueue_process_waitpid(self, task, status):
+    def runqueue_process_waitpid(self, task, status, fakerootlog=None):
 
         # self.build_stamps[pid] may not exist when use shared work directory.
         if task in self.build_stamps:
@@ -1787,7 +1789,7 @@
             self.sq_live.remove(task)
         else:
             if status != 0:
-                self.task_fail(task, status)
+                self.task_fail(task, status, fakerootlog=fakerootlog)
             else:
                 self.task_complete(task)
         return True
@@ -1908,14 +1910,31 @@
         self.task_completeoutright(task)
         self.runq_tasksrun.add(task)
 
-    def task_fail(self, task, exitcode):
+    def task_fail(self, task, exitcode, fakerootlog=None):
         """
         Called when a task has failed
         Updates the state engine with the failure
         """
         self.stats.taskFailed()
         self.failed_tids.append(task)
-        bb.event.fire(runQueueTaskFailed(task, self.stats, exitcode, self.rq), self.cfgData)
+
+        fakeroot_log = ""
+        if fakerootlog and os.path.exists(fakerootlog):
+            with open(fakerootlog) as fakeroot_log_file:
+                fakeroot_failed = False
+                for line in reversed(fakeroot_log_file.readlines()):
+                    for fakeroot_error in ['mismatch', 'error', 'fatal']:
+                        if fakeroot_error in line.lower():
+                            fakeroot_failed = True
+                    if 'doing new pid setup and server start' in line:
+                        break
+                    fakeroot_log = line + fakeroot_log
+
+            if not fakeroot_failed:
+                fakeroot_log = None
+
+        bb.event.fire(runQueueTaskFailed(task, self.stats, exitcode, self.rq, fakeroot_log=fakeroot_log), self.cfgData)
+
         if self.rqdata.taskData[''].abort:
             self.rq.state = runQueueCleanUp
 
@@ -1943,6 +1962,10 @@
             logger.error("Scenequeue had holdoff tasks: %s" % pprint.pformat(self.holdoff_tasks))
             err = True
 
+        for tid in self.scenequeue_covered.intersection(self.scenequeue_notcovered):
+            # No task should end up in both covered and uncovered, that is a bug.
+            logger.error("Setscene task %s in both covered and notcovered." % tid)
+
         for tid in self.rqdata.runq_setscene_tids:
             if tid not in self.scenequeue_covered and tid not in self.scenequeue_notcovered:
                 err = True
@@ -2431,6 +2454,9 @@
 
         for dep in sorted(self.sqdata.sq_deps[task]):
             if fail and task in self.sqdata.sq_harddeps and dep in self.sqdata.sq_harddeps[task]:
+                if dep in self.scenequeue_covered or dep in self.scenequeue_notcovered:
+                    # dependency could be already processed, e.g. noexec setscene task
+                    continue
                 logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep))
                 self.sq_task_failoutright(dep)
                 continue
@@ -2755,6 +2781,20 @@
 
     update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True)
 
+    # Compute a list of 'stale' sstate tasks where the current hash does not match the one
+    # in any stamp files. Pass the list out to metadata as an event.
+    found = {}
+    for tid in rqdata.runq_setscene_tids:
+        (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+        stamps = bb.build.find_stale_stamps(taskname, rqdata.dataCaches[mc], taskfn)
+        if stamps:
+            if mc not in found:
+                found[mc] = {}
+            found[mc][tid] = stamps
+    for mc in found:
+        event = bb.event.StaleSetSceneTasks(found[mc])
+        bb.event.fire(event, cooker.databuilder.mcdata[mc])
+
 def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True):
 
     tocheck = set()
@@ -2876,12 +2916,16 @@
     """
     Event notifying a task failed
     """
-    def __init__(self, task, stats, exitcode, rq):
+    def __init__(self, task, stats, exitcode, rq, fakeroot_log=None):
         runQueueEvent.__init__(self, task, stats, rq)
         self.exitcode = exitcode
+        self.fakeroot_log = fakeroot_log
 
     def __str__(self):
-        return "Task (%s) failed with exit code '%s'" % (self.taskstring, self.exitcode)
+        if self.fakeroot_log:
+            return "Task (%s) failed with exit code '%s' \nPseudo log:\n%s" % (self.taskstring, self.exitcode, self.fakeroot_log)
+        else:
+            return "Task (%s) failed with exit code '%s'" % (self.taskstring, self.exitcode)
 
 class sceneQueueTaskFailed(sceneQueueEvent):
     """
@@ -2933,7 +2977,7 @@
     """
     Abstraction for a pipe between a worker thread and the server
     """
-    def __init__(self, pipein, pipeout, d, rq, rqexec):
+    def __init__(self, pipein, pipeout, d, rq, rqexec, fakerootlogs=None):
         self.input = pipein
         if pipeout:
             pipeout.close()
@@ -2942,6 +2986,7 @@
         self.d = d
         self.rq = rq
         self.rqexec = rqexec
+        self.fakerootlogs = fakerootlogs
 
     def setrunqueueexec(self, rqexec):
         self.rqexec = rqexec
@@ -2987,7 +3032,11 @@
                     task, status = pickle.loads(self.queue[10:index])
                 except (ValueError, pickle.UnpicklingError, AttributeError, IndexError) as e:
                     bb.msg.fatal("RunQueue", "failed load pickle '%s': '%s'" % (e, self.queue[10:index]))
-                self.rqexec.runqueue_process_waitpid(task, status)
+                (_, _, _, taskfn) = split_tid_mcfn(task)
+                fakerootlog = None
+                if self.fakerootlogs and taskfn and taskfn in self.fakerootlogs:
+                    fakerootlog = self.fakerootlogs[taskfn]
+                self.rqexec.runqueue_process_waitpid(task, status, fakerootlog=fakerootlog)
                 found = True
                 self.queue = self.queue[index+11:]
                 index = self.queue.find(b"</exitcode>")
diff --git a/poky/bitbake/lib/bb/tests/color.py b/poky/bitbake/lib/bb/tests/color.py
index bf03750..88dd278 100644
--- a/poky/bitbake/lib/bb/tests/color.py
+++ b/poky/bitbake/lib/bb/tests/color.py
@@ -31,7 +31,7 @@
     def setUp(self):
         self.d = bb.data.init()
         self._progress_watcher = ProgressWatcher()
-        bb.event.register("bb.build.TaskProgress", self._progress_watcher.handle_event)
+        bb.event.register("bb.build.TaskProgress", self._progress_watcher.handle_event, data=self.d)
 
     def tearDown(self):
         bb.event.remove("bb.build.TaskProgress", None)
diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py
index 7b2dac7..ddf6e97 100644
--- a/poky/bitbake/lib/bb/tests/fetch.py
+++ b/poky/bitbake/lib/bb/tests/fetch.py
@@ -1345,7 +1345,7 @@
                       "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.2.tar.gz",
                       "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.3.tar.gz",
                       "https://yoctoproject.org/",
-                      "https://yoctoproject.org/documentation",
+                      "https://docs.yoctoproject.org",
                       "http://downloads.yoctoproject.org/releases/opkg/opkg-0.1.7.tar.gz",
                       "http://downloads.yoctoproject.org/releases/opkg/opkg-0.3.0.tar.gz",
                       "ftp://sourceware.org/pub/libffi/libffi-1.20.tar.gz",
diff --git a/poky/bitbake/lib/bb/tinfoil.py b/poky/bitbake/lib/bb/tinfoil.py
index 763c329..796a98f 100644
--- a/poky/bitbake/lib/bb/tinfoil.py
+++ b/poky/bitbake/lib/bb/tinfoil.py
@@ -440,7 +440,7 @@
         to initialise Tinfoil and use it with config_only=True first and
         then conditionally call this function to parse recipes later.
         """
-        config_params = TinfoilConfigParameters(config_only=False)
+        config_params = TinfoilConfigParameters(config_only=False, quiet=self.quiet)
         self.run_actions(config_params)
         self.recipes_parsed = True
 
diff --git a/poky/bitbake/lib/bblayers/query.py b/poky/bitbake/lib/bblayers/query.py
index f5e3c84..947422a 100644
--- a/poky/bitbake/lib/bblayers/query.py
+++ b/poky/bitbake/lib/bblayers/query.py
@@ -128,7 +128,7 @@
                     sys.exit(1)
 
         pkg_pn = self.tinfoil.cooker.recipecaches[mc].pkg_pn
-        (latest_versions, preferred_versions) = self.tinfoil.find_providers(mc)
+        (latest_versions, preferred_versions, required_versions) = self.tinfoil.find_providers(mc)
         allproviders = self.tinfoil.get_all_providers(mc)
 
         # Ensure we list skipped recipes
diff --git a/poky/documentation/README b/poky/documentation/README
index be03bb1..159ec94 100644
--- a/poky/documentation/README
+++ b/poky/documentation/README
@@ -47,7 +47,7 @@
 Each folder is self-contained regarding content and figures.
 
 If you want to find HTML versions of the Yocto Project manuals on the web,
-go to https://www.yoctoproject.org and click on the "Documentation" tab.  From
+go to https://www.yoctoproject.org and click on the "Docs" tab.  From
 there you have access to archived documentation from previous releases, current
 documentation for the latest release, and "Docs in Progress" for the release
 currently being developed.
@@ -91,13 +91,13 @@
 A new website has been created to host the Yocto Project
 documentation, it can be found at: https://docs.yoctoproject.org/.
 
-The entire Yocto Project documentation, as well as the BitBake manual
+The entire Yocto Project documentation, as well as the BitBake manual,
 is published on this website, including all previously released
 versions. A version switcher was added, as a drop-down menu on the top
 of the page to switch back and forth between the various versions of
 the current active Yocto Project releases.
 
-Transition pages have been added (as rst file) to show links to old
+Transition pages have been added (as rst files) to show links to old
 versions of the Yocto Project documentation with links to each manual
 generated with DocBook.
 
@@ -109,7 +109,7 @@
 documentation with Python3.
 
 Sphinx might be available in your Linux distro packages repositories,
-however it is not recommend using distro packages, as they might be
+however it is not recommend to use distro packages, as they might be
 old versions, especially if you are using an LTS version of your
 distro. The recommended method to install Sphinx and all required
 dependencies is to use the Python Package Index (pip).
@@ -185,7 +185,7 @@
 https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary:
 
     This directive must contain a reST definition list with terms and
-    definitions. The definitions will then be referencable with the
+    definitions. It's then possible to refer to each definition through the
     [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term
     'term' role].
 
@@ -206,7 +206,7 @@
 used/nested inside code-block sections.
 
 A Sphinx extension was implemented to support variable substitutions
-to mimic the DocBook based documentation behavior. Variabes
+to mimic the DocBook based documentation behavior. Variable
 substitutions are done while reading/parsing the .rst files. The
 pattern for variables substitutions is the same as with DocBook,
 e.g. `&VAR;`.
@@ -222,7 +222,7 @@
 content:
 
   .. code-block::
-      $ mkdir ~/poky-&DISTRO;
+      $ mkdir poky-&DISTRO;
       or
       $ git clone &YOCTO_GIT_URL;/git/poky -b &DISTRO_NAME_NO_CAP;
 
@@ -237,14 +237,14 @@
 Sphinx has a builtin 'note' directive that produces clean Note section
 in the output file. There are various types of directives such as
 "attention", "caution", "danger", "error", "hint", "important", "tip",
-"warning", "admonition" that are supported, and additional directive
+"warning", "admonition" that are supported, and additional directives
 can be added as Sphinx extension if needed.
 
 Figures
 =======
 
 The Yocto Project documentation has many figures/images. Sphinx has a
-'figure' directive which is straight forward to use. To include a
+'figure' directive which is straightforward to use. To include a
 figure in the body of the documentation:
 
   .. image:: figures/YP-flow-diagram.png
@@ -262,7 +262,7 @@
 References
 ==========
 
-The following extension is enabed by default:
+The following extension is enabled by default:
 sphinx.ext.autosectionlabel
 (https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html).
 
@@ -271,7 +271,7 @@
 insert references from any document.
 
 For example, to insert an HTML link to a section from
-documentaion/manual/intro.rst, use:
+documentation/manual/intro.rst, use:
 
   Please check this :ref:`manual/intro:Cross-References to Locations in the Same Document`
 
@@ -294,7 +294,8 @@
 
 The sphinx.ext.extlinks extension is enabled by default
 (https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension),
-and it is configured with:
+and it is configured with the 'extlinks' definitions in
+the 'documentation/conf.py' file:
 
   'yocto_home': ('https://yoctoproject.org%s', None),
   'yocto_wiki': ('https://wiki.yoctoproject.org%s', None),
@@ -306,6 +307,10 @@
   'yocto_git': ('https://git.yoctoproject.org%s', None),
   'oe_home': ('https://www.openembedded.org%s', None),
   'oe_lists': ('https://lists.openembedded.org%s', None),
+  'oe_git': ('https://git.openembedded.org%s', None),
+  'oe_wiki': ('https://www.openembedded.org/wiki%s', None),
+  'oe_layerindex': ('https://layers.openembedded.org%s', None),
+  'oe_layer': ('https://layers.openembedded.org/layerindex/branch/master/layer%s', None),
 
 It creates convenient shortcuts which can be used throughout the
 documentation rst files, as:
diff --git a/poky/documentation/brief-yoctoprojectqs/index.rst b/poky/documentation/brief-yoctoprojectqs/index.rst
index 63083cb..4ac222c 100644
--- a/poky/documentation/brief-yoctoprojectqs/index.rst
+++ b/poky/documentation/brief-yoctoprojectqs/index.rst
@@ -176,7 +176,7 @@
 
    .. code-block:: shell
 
-      $ cd ~/poky
+      $ cd poky
       $ source oe-init-build-env
       You had no conf/local.conf file. This configuration file has therefore been
       created for you with some default values. You may wish to edit it to, for
@@ -189,7 +189,7 @@
 
       The Yocto Project has extensive documentation about OE including a reference
       manual which can be found at:
-          http://yoctoproject.org/documentation
+          https://docs.yoctoproject.org
 
       For more information about OpenEmbedded see their website:
           http://www.openembedded.org/
@@ -293,7 +293,7 @@
 
    .. code-block:: shell
 
-      $ cd ~/poky
+      $ cd poky
       $ git clone https://github.com/kraj/meta-altera.git
       Cloning into 'meta-altera'...
       remote: Counting objects: 25170, done.
@@ -337,7 +337,7 @@
 
    .. code-block:: shell
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake-layers add-layer ../meta-altera
       NOTE: Starting bitbake server...
       Parsing recipes: 100% |##################################################################| Time: 0:00:32
@@ -374,7 +374,7 @@
 
 .. code-block:: shell
 
-   $ cd ~/poky
+   $ cd poky
    $ bitbake-layers create-layer meta-mylayer
    NOTE: Starting bitbake server...
    Add your new layer with 'bitbake-layers add-layer meta-mylayer'
diff --git a/poky/documentation/dev-manual/common-tasks.rst b/poky/documentation/dev-manual/common-tasks.rst
index 65db4ae..4313d90 100644
--- a/poky/documentation/dev-manual/common-tasks.rst
+++ b/poky/documentation/dev-manual/common-tasks.rst
@@ -3007,7 +3007,7 @@
    running the AUH utility:
    ::
 
-      $ cd ~/poky
+      $ cd poky
       $ source oe-init-build-env your_AUH_build_directory
 
    Re-using an existing build directory and its configurations is not
@@ -5908,7 +5908,7 @@
               $ wic help ls
 
 
-   The following command shows what is in Partition one:
+   The following command shows what is in partition one:
    ::
 
         $ wic ls tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1
@@ -5956,8 +5956,8 @@
    kernel:
    ::
 
-      cp ~/poky_sdk/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+git999-r0/linux-yocto-4.12.12+git999/arch/x86/boot/bzImage \
-         ~/poky/build/tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1/vmlinuz
+      $ wic cp poky_sdk/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+git999-r0/linux-yocto-4.12.12+git999/arch/x86/boot/bzImage \
+               poky/build/tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1/vmlinuz
 
    Once the new kernel is added back into the image, you can use the
    ``dd`` command or :ref:`bmaptool
@@ -6956,7 +6956,7 @@
 
 1. Open the ``local.conf`` file inside your
    :term:`Build Directory` (e.g.
-   ``~/poky/build/conf/local.conf``).
+   ``poky/build/conf/local.conf``).
 
 2. Select the desired package format as follows:
    ::
@@ -7048,11 +7048,11 @@
 your packaging choice (i.e. the
 :term:`PACKAGE_CLASSES`
 setting), simply start the server. The following example assumes a build
-directory of ``~/poky/build/tmp/deploy/rpm`` and a ``PACKAGE_CLASSES``
+directory of ``poky/build/tmp/deploy/rpm`` and a ``PACKAGE_CLASSES``
 setting of "package_rpm":
 ::
 
-   $ cd ~/poky/build/tmp/deploy/rpm
+   $ cd poky/build/tmp/deploy/rpm
    $ python3 -m http.server
 
 Target Setup
@@ -8409,7 +8409,7 @@
 might be significant in human-readable form. Here is an example:
 ::
 
-   $ ~/poky/poky/scripts/buildhistory-diff . HEAD^
+   $ poky/poky/scripts/buildhistory-diff . HEAD^
    Changes to images/qemux86_64/glibc/core-image-minimal (files-in-image.txt):
       /etc/anotherpkg.conf was added
       /sbin/anotherpkg was added
@@ -10023,7 +10023,52 @@
 more load on the target system and can alter the characteristics of the
 program being debugged.
 
-To help get past the previously mentioned constraints, you can use
+To help get past the previously mentioned constraints, there are two
+methods you can use: running a debuginfod server and using gdbserver.
+
+Using the debuginfod server method
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+"debuginfod" from "elfutils" is a way to distribute "debuginfo" files.
+Running a "debuginfod" server makes debug symbols readily available,
+which means you don't need to download debugging information
+and the binaries of the process being debugged. You can just fetch
+debug symbols from the server.
+
+To run a debuginfod server, you need to do the following:
+
+-  Ensure that this variable is set in your ``local.conf`` file:
+   ::
+
+      PACKAGECONFIG_pn-elfutils-native = "debuginfod libdebuginfod"
+
+   This :term:`PACKAGECONFIG` option enables debuginfod and libdebuginfod for
+   "elfutils-native".
+
+-  Run the following commands to set up the "debuginfod" server:
+   ::
+
+      $ oe-debuginfod
+
+
+To use debuginfod on the target, you need the following:
+
+-  Ensure that this variable is set in your ``local.conf`` file:
+   ::
+
+      DEBUGINFOD_URLS = "http://localhost:8002/"
+
+   This :term:`DEBUGINFOD_URLS` option does the client configuration.
+
+   ::
+
+        PACKAGECONFIG_pn-gdb = "debuginfod"
+
+   This :term:`PACKAGECONFIG` option enables "debuginfod" for "gdb".
+
+Using the gdbserver method
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 gdbserver, which runs on the remote target and does not load any
 debugging information from the debugged process. Instead, a GDB instance
 processes the debugging information that is run on a remote computer -
@@ -10738,7 +10783,7 @@
    are ``create-pull-request`` and ``send-pull-request``. You can find
    these scripts in the ``scripts`` directory within the
    :term:`Source Directory` (e.g.
-   ``~/poky/scripts``).
+   ``poky/scripts``).
 
    Using these scripts correctly formats the requests without
    introducing any whitespace or HTML formatting. The maintainer that
@@ -10752,7 +10797,7 @@
    line in the created patch files:
    ::
 
-      $ ~/poky/scripts/create-pull-request -u meta-intel-contrib -s "Updated Manual Section Reference in README"
+      $ poky/scripts/create-pull-request -u meta-intel-contrib -s "Updated Manual Section Reference in README"
 
    Running this script forms ``*.patch`` files in a folder named
    ``pull-``\ `PID` in the current directory. One of the patch files is a
@@ -10766,7 +10811,7 @@
    list:
    ::
 
-      $ ~/poky/scripts/send-pull-request -p ~/meta-intel/pull-10565 -t meta-intel@yoctoproject.org
+      $ poky/scripts/send-pull-request -p ~/meta-intel/pull-10565 -t meta-intel@yoctoproject.org
 
    You need to follow the prompts as the script is interactive.
 
diff --git a/poky/documentation/dev-manual/qemu.rst b/poky/documentation/dev-manual/qemu.rst
index 766691b..c6bb9e9 100644
--- a/poky/documentation/dev-manual/qemu.rst
+++ b/poky/documentation/dev-manual/qemu.rst
@@ -58,7 +58,7 @@
       environment script (i.e. :ref:`structure-core-script`):
       ::
 
-         $ cd ~/poky
+         $ cd poky
          $ source oe-init-build-env
 
    -  If you installed a cross-toolchain, you can run the script that
@@ -66,7 +66,7 @@
       the initialization script from the default ``poky_sdk`` directory:
       ::
 
-         . ~/poky_sdk/environment-setup-core2-64-poky-linux
+         . poky_sdk/environment-setup-core2-64-poky-linux
 
 3. *Ensure the Artifacts are in Place:* You need to be sure you have a
    pre-built kernel that will boot in QEMU. You also need the target
diff --git a/poky/documentation/dev-manual/start.rst b/poky/documentation/dev-manual/start.rst
index 03061a7..efe369c 100644
--- a/poky/documentation/dev-manual/start.rst
+++ b/poky/documentation/dev-manual/start.rst
@@ -768,7 +768,7 @@
    exists on your system and by default, it is checked out:
    ::
 
-      $ cd ~/poky
+      $ cd poky
       $ git status
       On branch master
       Your branch is up-to-date with 'origin/master'.
diff --git a/poky/documentation/kernel-dev/common.rst b/poky/documentation/kernel-dev/common.rst
index 58adcc9..0e545d1 100644
--- a/poky/documentation/kernel-dev/common.rst
+++ b/poky/documentation/kernel-dev/common.rst
@@ -57,7 +57,7 @@
    the build environment script (i.e. :ref:`structure-core-script`):
    ::
 
-      $ cd ~/poky
+      $ cd poky
       $ source oe-init-build-env
 
    .. note::
@@ -74,7 +74,7 @@
    ``MACHINE`` variable appropriately in your ``conf/local.conf`` file
    found in the
    :term:`Build Directory` (i.e.
-   ``~/poky/build`` in this example).
+   ``poky/build`` in this example).
 
    Also, since you are preparing to work on the kernel image, you need
    to set the
@@ -94,7 +94,7 @@
    ``bitbake-layers create-layer`` command as follows:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake-layers create-layer ../../meta-mylayer
       NOTE: Starting bitbake server...
       Add your new layer with 'bitbake-layers add-layer ../../meta-mylayer'
@@ -119,7 +119,7 @@
    ``bblayers.conf`` file as follows:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake-layers add-layer ../../meta-mylayer
       NOTE: Starting bitbake server...
       $
@@ -128,7 +128,7 @@
    specifically for use with images to be run using QEMU:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake core-image-minimal -c populate_sdk_ext
 
    Once
@@ -136,21 +136,21 @@
    ``*.sh`` file) in the following directory:
    ::
 
-      ~/poky/build/tmp/deploy/sdk
+      poky/build/tmp/deploy/sdk
 
    For this example, the installer file is named
    ``poky-glibc-x86_64-core-image-minimal-i586-toolchain-ext-&DISTRO;.sh``.
 
 6. *Install the Extensible SDK:* Use the following command to install
    the SDK. For this example, install the SDK in the default
-   ``~/poky_sdk`` directory:
+   ``poky_sdk`` directory:
    ::
 
-      $ cd ~/poky/build/tmp/deploy/sdk
+      $ cd poky/build/tmp/deploy/sdk
       $ ./poky-glibc-x86_64-core-image-minimal-i586-toolchain-ext-&DISTRO;.sh
       Poky (Yocto Project Reference Distro) Extensible SDK installer version &DISTRO;
       ============================================================================
-      Enter target directory for SDK (default: ~/poky_sdk):
+      Enter target directory for SDK (default: poky_sdk):
       You are about to install the SDK to "/home/scottrif/poky_sdk". Proceed [Y/n]? Y
       Extracting SDK......................................done
       Setting it up...
@@ -175,7 +175,7 @@
    directed by the output from installing the SDK:
    ::
 
-      $ source ~/poky_sdk/environment-setup-i586-poky-linux
+      $ source poky_sdk/environment-setup-i586-poky-linux
       "SDK environment now set up; additionally you may now run devtool to perform development tasks.
       Run devtool --help for further details.
 
@@ -240,7 +240,7 @@
    section in the Yocto Project Development Tasks Manual.
    ::
 
-      $ cd ~/poky
+      $ cd poky
       $ git branch
       master
       * &DISTRO_NAME_NO_CAP;
@@ -260,7 +260,7 @@
    ``MACHINE`` variable appropriately in your ``conf/local.conf`` file
    found in the
    :term:`Build Directory` (i.e.
-   ``~/poky/build`` in this example).
+   ``poky/build`` in this example).
 
    Also, since you are preparing to work on the kernel image, you need
    to set the
@@ -280,7 +280,7 @@
    ``bitbake-layers create-layer`` command as follows:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake-layers create-layer ../../meta-mylayer
       NOTE: Starting bitbake server...
       Add your new layer with 'bitbake-layers add-layer ../../meta-mylayer'
@@ -304,7 +304,7 @@
    ``bblayers.conf`` file as follows:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake-layers add-layer ../../meta-mylayer
       NOTE: Starting bitbake server ...
       $
@@ -398,7 +398,6 @@
 1. *Create Structure*: Create the layer's structure:
    ::
 
-      $ cd $HOME
       $ mkdir meta-mylayer
       $ mkdir meta-mylayer/conf
       $ mkdir meta-mylayer/recipes-kernel
@@ -819,12 +818,12 @@
 
    1. *Change the working directory*: In the previous step, the output
       noted where you can find the source files (e.g.
-      ``~/poky_sdk/workspace/sources/linux-yocto``). Change to where the
+      ``poky_sdk/workspace/sources/linux-yocto``). Change to where the
       kernel source code is before making your edits to the
       ``calibrate.c`` file:
       ::
 
-         $ cd ~/poky_sdk/workspace/sources/linux-yocto
+         $ cd poky_sdk/workspace/sources/linux-yocto
 
    2. *Edit the source file*: Edit the ``init/calibrate.c`` file to have
       the following changes:
@@ -896,7 +895,7 @@
    and use these Git commands to stage and commit your changes:
    ::
 
-      $ cd ~/poky_sdk/workspace/sources/linux-yocto
+      $ cd poky_sdk/workspace/sources/linux-yocto
       $ git status
       $ git add init/calibrate.c
       $ git commit -m "calibrate: Add printk example"
@@ -926,7 +925,7 @@
    set up to run BitBake:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake core-image-minimal
 
 Using Traditional Kernel Development to Patch the Kernel
@@ -1015,7 +1014,7 @@
    to the following to your ``local.conf``:
    ::
 
-      $ cd ~/poky/build/conf
+      $ cd poky/build/conf
 
    Add the following to the ``local.conf``:
    ::
@@ -1037,7 +1036,7 @@
    you can now use BitBake to build the image:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ bitbake core-image-minimal
 
 5. *Boot the image*: Boot the modified image in the QEMU emulator using
@@ -1045,7 +1044,7 @@
    with no password:
    ::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ runqemu qemux86
 
 6. *Look for Your Changes:* As QEMU booted, you might have seen your
@@ -1119,7 +1118,7 @@
       the following sequence of commands:
       ::
 
-              $ cd ~/poky/build
+              $ cd poky/build
               $ bitbake -c cleanall yocto-linux
               $ bitbake core-image-minimal -c cleanall
               $ bitbake core-image-minimal
@@ -1172,7 +1171,7 @@
 The following commands initialize the BitBake environment, run the
 :ref:`ref-tasks-kernel_configme`
 task, and launch ``menuconfig``. These commands assume the Source
-Directory's top-level folder is ``~/poky``:
+Directory's top-level folder is ``poky``:
 ::
 
    $ cd poky
diff --git a/poky/documentation/ref-manual/terms.rst b/poky/documentation/ref-manual/terms.rst
index bf46148..32bb75b 100644
--- a/poky/documentation/ref-manual/terms.rst
+++ b/poky/documentation/ref-manual/terms.rst
@@ -28,7 +28,7 @@
       to allow for matching recipe names. For example, suppose you have an
       append file named as follows:
       ::
-      
+
          busybox_1.21.%.bbappend
 
       That append file
@@ -76,7 +76,7 @@
 
             .. code-block:: shell
 
-               $ cd $HOME/poky
+               $ cd poky
                $ source oe-init-build-env
 
          -  Create the Build Directory inside your home directory and
@@ -84,19 +84,16 @@
 
             .. code-block:: shell
 
-               $ cd $HOME
                $ source poky/oe-init-build-env test-builds
 
          -  Provide a directory path and specifically name the Build
             Directory. Any intermediate folders in the pathname must exist.
             This next example creates a Build Directory named
-            ``YP-&POKYVERSION;`` in your home directory within the existing
-            directory ``mybuilds``:
+            ``YP-&POKYVERSION;`` within the existing directory ``mybuilds``:
 
             .. code-block:: shell
 
-               $ cd $HOME
-               $ source $HOME/poky/oe-init-build-env $HOME/mybuilds/YP-&POKYVERSION;
+               $ source poky/oe-init-build-env mybuilds/YP-&POKYVERSION;
 
       .. note::
 
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 2cb37b6..0310429 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -270,6 +270,18 @@
       ":ref:`Basic Syntax <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:basic syntax>`" section in the BitBake
       User Manual for more information.
 
+   :term:`AZ_SAS`
+      Azure Storage Shared Access Signature, when using the
+      :ref:`Azure Storage fetcher (az://) <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
+      This variable can be defined to be used by the fetcher to authenticate
+      and gain access to non-public artifacts.
+      ::
+
+         AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
+
+      For more information see Microsoft's Azure Storage documentation at
+      https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
+
    :term:`B`
       The directory within the :term:`Build Directory` in
       which the OpenEmbedded build system places generated objects during a
@@ -1553,6 +1565,12 @@
 
          DEBIANNAME_${PN} = "dbus-1"
 
+   :term:`DEBUGINFOD_URLS`
+      Points to the URL of the "debuginfod" server. Such that for every
+      debugging information lookup, the debuginfod client will query the
+      server and return the requested information. You set this variable
+      in your ``local.conf`` file.
+
    :term:`DEBUG_BUILD`
       Specifies to build packages with debugging information. This
       influences the value of the ``SELECTED_OPTIMIZATION`` variable.
@@ -2218,7 +2236,7 @@
       .. note::
 
          To add packages to the root filesystem, see the various
-         \*:term:`RDEPENDS` and \*:term:`RRECOMMENDS` variables.
+         :term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
 
    :term:`EXTRANATIVEPATH`
       A list of subdirectories of
@@ -7103,6 +7121,8 @@
 
       -  ``npm://`` - Fetches JavaScript modules from a registry.
 
+      -  ``az://`` - Fetches files from an Azure Storage account.
+
       Standard and recipe-specific options for ``SRC_URI`` exist. Here are
       standard options:
 
@@ -8787,7 +8807,7 @@
       The ``WKS_FILE_DEPENDS`` variable is similar to the
       :term:`DEPENDS` variable. When you use the variable in
       your recipe that builds the Wic image, dependencies you list in the
-      ``WIC_FILE_DEPENDS`` variable are added to the ``DEPENDS`` variable.
+      ``WKS_FILE_DEPENDS`` variable are added to the ``DEPENDS`` variable.
 
       With the ``WKS_FILE_DEPENDS`` variable, you have the possibility to
       specify a list of additional dependencies (e.g. native tools,
diff --git a/poky/documentation/sdk-manual/appendix-obtain.rst b/poky/documentation/sdk-manual/appendix-obtain.rst
index f158c24..395102c 100644
--- a/poky/documentation/sdk-manual/appendix-obtain.rst
+++ b/poky/documentation/sdk-manual/appendix-obtain.rst
@@ -173,7 +173,7 @@
    ``tmp/deploy/sdk`` in the Build Directory. Following is an example:
    ::
 
-      $ cd ~/poky/build/tmp/deploy/sdk
+      $ cd poky/build/tmp/deploy/sdk
       $ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
 
    During execution of the script, you choose the root location for the
@@ -249,7 +249,7 @@
    ":ref:`sdk-manual/appendix-obtain:locating pre-built sdk installers`" section:
    ::
 
-      $ source ~/poky_sdk/environment-setup-core2-64-poky-linux
+      $ source poky_sdk/environment-setup-core2-64-poky-linux
 
 3. *Extract the Root Filesystem:* Use the ``runqemu-extract-sdk``
    command and provide the root filesystem image.
diff --git a/poky/documentation/sdk-manual/extensible.rst b/poky/documentation/sdk-manual/extensible.rst
index 5962e94..d2ed9a9 100644
--- a/poky/documentation/sdk-manual/extensible.rst
+++ b/poky/documentation/sdk-manual/extensible.rst
@@ -118,7 +118,7 @@
    $ ./Downloads/poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.5.sh
    Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.5
    ==========================================================================
-   Enter target directory for SDK (default: ~/poky_sdk):
+   Enter target directory for SDK (default: poky_sdk):
    You are about to install the SDK to "/home/scottrif/poky_sdk". Proceed [Y/n]? Y
    Extracting SDK..............done
    Setting it up...
diff --git a/poky/documentation/toaster-manual/reference.rst b/poky/documentation/toaster-manual/reference.rst
index d2ab14c..8ef5818 100644
--- a/poky/documentation/toaster-manual/reference.rst
+++ b/poky/documentation/toaster-manual/reference.rst
@@ -554,7 +554,7 @@
 
 .. code-block:: shell
 
-   $ cd ~/poky/build
+   $ cd poky/build
    $ python ../bitbake/lib/toaster/manage.py buildslist
 
 If your Toaster database had only one build, the above
diff --git a/poky/documentation/toaster-manual/setup-and-use.rst b/poky/documentation/toaster-manual/setup-and-use.rst
index ded771e..cabf025 100644
--- a/poky/documentation/toaster-manual/setup-and-use.rst
+++ b/poky/documentation/toaster-manual/setup-and-use.rst
@@ -155,7 +155,7 @@
    is the :term:`Build Directory`,
    invoke the ``createsuperuser`` command from ``manage.py``::
 
-      $ cd ~/poky/build
+      $ cd poky/build
       $ ../bitbake/lib/toaster/manage.py createsuperuser
 
 #. Django prompts you for the username, which you need to provide.
@@ -417,13 +417,13 @@
 
       [Unit]
       Description=Toaster runbuilds
-      
+
       [Service]
       Type=forking User=toaster
       ExecStart=/usr/bin/screen -d -m -S runbuilds /var/www/toaster/poky/bitbake/lib/toaster/runbuilds-service.sh start
       ExecStop=/usr/bin/screen -S runbuilds -X quit
       WorkingDirectory=/var/www/toaster/poky
-      
+
       [Install]
       WantedBy=multi-user.target
 
@@ -433,11 +433,11 @@
     up executable permissions::
 
       #!/bin/bash
-      
+
       #export http_proxy=http://proxy.host.com:8080
       #export https_proxy=http://proxy.host.com:8080
       #export GIT_PROXY_COMMAND=$HOME/bin/gitproxy
-      cd ~/poky/
+      cd poky/
       source ./oe-init-build-env build
       source ../bitbake/bin/toaster $1 noweb
       [ "$1" == 'start' ] && /bin/bash
diff --git a/poky/meta-poky/conf/distro/include/poky-world-exclude.inc b/poky/meta-poky/conf/distro/include/poky-world-exclude.inc
index 1a2dea5..f3ac59c 100644
--- a/poky/meta-poky/conf/distro/include/poky-world-exclude.inc
+++ b/poky/meta-poky/conf/distro/include/poky-world-exclude.inc
@@ -1,4 +1,4 @@
 #
-# Things we exlude fromw world testing within the reference distro
+# Things we exlude from world testing within the reference distro
 #
 
diff --git a/poky/meta-poky/conf/distro/poky-tiny.conf b/poky/meta-poky/conf/distro/poky-tiny.conf
index 5a867b1..e4ff975 100644
--- a/poky/meta-poky/conf/distro/poky-tiny.conf
+++ b/poky/meta-poky/conf/distro/poky-tiny.conf
@@ -26,7 +26,7 @@
 # [ ] Drop ldconfig from the installation
 # [ ] Modify the runqemu scripts to work with ext2 parameter:
 #     runqemu qemux86 qemuparams="-nographic" bootparams="console=ttyS0,115200 root=0800"
-# [ ] Modify busybox to allow for DISTRO_FEATURES-like confiruration
+# [ ] Modify busybox to allow for DISTRO_FEATURES-like configuration
 
 require conf/distro/poky.conf
 require conf/distro/include/gcsections.inc
diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf
index 623f39d..4e416c0 100644
--- a/poky/meta-poky/conf/distro/poky.conf
+++ b/poky/meta-poky/conf/distro/poky.conf
@@ -25,8 +25,8 @@
 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
 SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"
 
-DISTRO_EXTRA_RDEPENDS += " ${POKY_DEFAULT_EXTRA_RDEPENDS}"
-DISTRO_EXTRA_RRECOMMENDS += " ${POKY_DEFAULT_EXTRA_RRECOMMENDS}"
+DISTRO_EXTRA_RDEPENDS += "${POKY_DEFAULT_EXTRA_RDEPENDS}"
+DISTRO_EXTRA_RRECOMMENDS += "${POKY_DEFAULT_EXTRA_RRECOMMENDS}"
 
 TCLIBCAPPEND = ""
 
diff --git a/poky/meta-poky/conf/layer.conf b/poky/meta-poky/conf/layer.conf
index 7241af0..22f7fe2 100644
--- a/poky/meta-poky/conf/layer.conf
+++ b/poky/meta-poky/conf/layer.conf
@@ -9,7 +9,7 @@
 BBFILE_PATTERN_yocto = "^${LAYERDIR}/"
 BBFILE_PRIORITY_yocto = "5"
 
-LAYERSERIES_COMPAT_yocto = "gatesgarth"
+LAYERSERIES_COMPAT_yocto = "hardknott"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/poky/meta-poky/conf/local.conf.sample b/poky/meta-poky/conf/local.conf.sample
index 096359e..a94b613 100644
--- a/poky/meta-poky/conf/local.conf.sample
+++ b/poky/meta-poky/conf/local.conf.sample
@@ -206,7 +206,7 @@
 #
 # Shared-state files from other locations
 #
-# As mentioned above, shared state files are prebuilt cache data objects which can
+# As mentioned above, shared state files are prebuilt cache data objects which can be
 # used to accelerate build time. This variable can be used to configure the system
 # to search other mirror locations for these objects before it builds the data itself.
 #
diff --git a/poky/meta-poky/conf/local.conf.sample.extended b/poky/meta-poky/conf/local.conf.sample.extended
index ba1d097..c241caa 100644
--- a/poky/meta-poky/conf/local.conf.sample.extended
+++ b/poky/meta-poky/conf/local.conf.sample.extended
@@ -390,3 +390,8 @@
 #
 #require conf/distro/include/lto.inc
 #DISTRO_FEATURES_append = " lto"
+
+#
+# Set PS1 for SDK
+#
+#SDK_PS1 ?= "${SDK_NAME}${SDK_VENDOR}:\$ "
diff --git a/poky/meta-selftest/conf/layer.conf b/poky/meta-selftest/conf/layer.conf
index 37570aa..5604f82 100644
--- a/poky/meta-selftest/conf/layer.conf
+++ b/poky/meta-selftest/conf/layer.conf
@@ -9,4 +9,4 @@
 BBFILE_PATTERN_selftest = "^${LAYERDIR}/"
 BBFILE_PRIORITY_selftest = "5"
 
-LAYERSERIES_COMPAT_selftest = "gatesgarth"
+LAYERSERIES_COMPAT_selftest = "hardknott"
diff --git a/poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb b/poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
index 9f905a5..dcf6c8b 100644
--- a/poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
+++ b/poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
@@ -4,6 +4,7 @@
 
 SUMMARY = "GNU Aspell spell-checker"
 SECTION = "console/utils"
+HOMEPAGE = "https://ftp.gnu.org/gnu/aspell/"
 
 LICENSE = "LGPLv2 | LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
diff --git a/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb b/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
index 08089b4..9429564 100644
--- a/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
+++ b/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Test recipe for fetching git submodules"
+HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/git-submodule-test/"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
diff --git a/poky/meta-selftest/recipes-test/poison/poison.bb b/poky/meta-selftest/recipes-test/poison/poison.bb
new file mode 100644
index 0000000..7ace901
--- /dev/null
+++ b/poky/meta-selftest/recipes-test/poison/poison.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Sysroot poisoning test"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+inherit nopackages
+
+# This test confirms that compiling code that searches /usr/include for headers
+# will result in compiler errors.  This recipe should will fail to build and
+# oe-selftest has a test that verifies that.
+do_compile() {
+    touch empty.c
+    ${CPP} ${CFLAGS} -I/usr/include empty.c
+}
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/poky/meta-skeleton/conf/layer.conf b/poky/meta-skeleton/conf/layer.conf
index cea5c74..ba30174 100644
--- a/poky/meta-skeleton/conf/layer.conf
+++ b/poky/meta-skeleton/conf/layer.conf
@@ -14,4 +14,4 @@
 
 LAYERDEPENDS_skeleton = "core"
 
-LAYERSERIES_COMPAT_skeleton = "gatesgarth"
+LAYERSERIES_COMPAT_skeleton = "hardknott"
diff --git a/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb b/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
index 946a12d..ee945c1 100644
--- a/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
+++ b/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Baremetal examples to work with the several QEMU architectures supported on OpenEmbedded"
 HOMEPAGE = "https://github.com/aehs29/baremetal-helloqemu"
+DESCRIPTION = "These are introductory examples to showcase the use of QEMU to run baremetal applications."
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=39346640a23c701e4f459e05f56f4449"
 
diff --git a/poky/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb b/poky/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
index 3d33446..bc9accc 100644
--- a/poky/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
+++ b/poky/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Example of how to build an external Linux kernel module"
+DESCRIPTION = "${SUMMARY}"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
 
diff --git a/poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb b/poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
index 6194d4f..d53f9c7 100644
--- a/poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
+++ b/poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
@@ -1,6 +1,6 @@
+SUMMARY = "An example kernel recipe that uses the linux-yocto and oe-core"
 # linux-yocto-custom.bb:
 #
-#   An example kernel recipe that uses the linux-yocto and oe-core
 #   kernel classes to apply a subset of yocto kernel management to git
 #   managed kernel repositories.
 #
diff --git a/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb b/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
index f13186f..e7d50ae 100644
--- a/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
+++ b/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
@@ -1,5 +1,4 @@
-#
-# An example of a multilib image
+SUMMARY = "An example of a multilib image"
 #
 # This example includes a lib32 version of bash into an otherwise standard
 # sato image. It assumes a "lib32" multilib has been enabled in the user's
diff --git a/poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb b/poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
index 6416618..669d173 100644
--- a/poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
+++ b/poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
@@ -1,5 +1,6 @@
 SUMMARY = "The canonical example of init scripts"
 SECTION = "base"
+DESCRIPTION = "This recipe is a canonical example of init scripts"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYRIGHT;md5=349c872e0066155e1818b786938876a4"
 
diff --git a/poky/meta-yocto-bsp/conf/layer.conf b/poky/meta-yocto-bsp/conf/layer.conf
index bf0c1bf..caf3e4b 100644
--- a/poky/meta-yocto-bsp/conf/layer.conf
+++ b/poky/meta-yocto-bsp/conf/layer.conf
@@ -9,4 +9,4 @@
 BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
 BBFILE_PRIORITY_yoctobsp = "5"
 LAYERVERSION_yoctobsp = "4"
-LAYERSERIES_COMPAT_yoctobsp = "gatesgarth"
+LAYERSERIES_COMPAT_yoctobsp = "hardknott"
diff --git a/poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf b/poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
index f8368eb..04cbd3b 100644
--- a/poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
+++ b/poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
@@ -9,7 +9,7 @@
 
 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
 
-EXTRA_IMAGEDEPENDS += "u-boot"
+EXTRA_IMAGEDEPENDS += "virtual/bootloader"
 
 DEFAULTTUNE ?= "cortexa8hf-neon"
 include conf/machine/include/tune-cortexa8.inc
@@ -18,7 +18,7 @@
 EXTRA_IMAGECMD_jffs2 = "-lnp "
 WKS_FILE ?= "beaglebone-yocto.wks"
 IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
-do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot u-boot:do_deploy"
+do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot virtual/bootloader:do_deploy"
 
 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0"
 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
diff --git a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend
index 87e4735..bc2b3bf 100644
--- a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend
+++ b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend
@@ -7,17 +7,17 @@
 KMACHINE_genericx86-64 ?= "common-pc-64"
 KMACHINE_beaglebone-yocto ?= "beaglebone"
 
-SRCREV_machine_genericx86 ?= "cdca78778415b4b3bd64e8390ee8adf04bf7e17a"
-SRCREV_machine_genericx86-64 ?= "cdca78778415b4b3bd64e8390ee8adf04bf7e17a"
-SRCREV_machine_edgerouter ?= "2e1fb8f84f09ca768eb531f33a126a40bb90e791"
-SRCREV_machine_beaglebone-yocto ?= "cdca78778415b4b3bd64e8390ee8adf04bf7e17a"
+SRCREV_machine_genericx86 ?= "8c516ced69f41563404ada0bea315a55bcf1df6f"
+SRCREV_machine_genericx86-64 ?= "8c516ced69f41563404ada0bea315a55bcf1df6f"
+SRCREV_machine_edgerouter ?= "965ab3ab746ae8a1158617b6302d9c218ffbbb66"
+SRCREV_machine_beaglebone-yocto ?= "8c516ced69f41563404ada0bea315a55bcf1df6f"
 
 COMPATIBLE_MACHINE_genericx86 = "genericx86"
 COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
 COMPATIBLE_MACHINE_edgerouter = "edgerouter"
 COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
 
-LINUX_VERSION_genericx86 = "5.10.12"
-LINUX_VERSION_genericx86-64 = "5.10.12"
-LINUX_VERSION_edgerouter = "5.10.12"
-LINUX_VERSION_beaglebone-yocto = "5.10.12"
+LINUX_VERSION_genericx86 = "5.10.21"
+LINUX_VERSION_genericx86-64 = "5.10.21"
+LINUX_VERSION_edgerouter = "5.10.21"
+LINUX_VERSION_beaglebone-yocto = "5.10.21"
diff --git a/poky/meta-yocto-bsp/wic/beaglebone-yocto.wks b/poky/meta-yocto-bsp/wic/beaglebone-yocto.wks
index 701ae0b..7a28fb2 100644
--- a/poky/meta-yocto-bsp/wic/beaglebone-yocto.wks
+++ b/poky/meta-yocto-bsp/wic/beaglebone-yocto.wks
@@ -2,6 +2,6 @@
 # long-description: Creates a partitioned SD card image for Beaglebone.
 # Boot files are located in the first vfat partition.
 
-part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --size 16 --sourceparams="loader=u-boot" --use-uuid
+part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --fixed-size 32 --sourceparams="loader=u-boot" --use-uuid
 part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label root --align 4 --use-uuid
 bootloader --append="console=ttyS0,115200"
diff --git a/poky/meta/classes/base.bbclass b/poky/meta/classes/base.bbclass
index b416040..42fb84c 100644
--- a/poky/meta/classes/base.bbclass
+++ b/poky/meta/classes/base.bbclass
@@ -593,6 +593,8 @@
     srcuri = d.getVar('SRC_URI')
     for uri_string in srcuri.split():
         uri = bb.fetch.URI(uri_string)
+        # Also check downloadfilename as the URL path might not be useful for sniffing
+        path = uri.params.get("downloadfilename", uri.path)
 
         # HTTP/FTP use the wget fetcher
         if uri.scheme in ("http", "https", "ftp"):
@@ -626,27 +628,27 @@
             d.appendVarFlag('do_fetch', 'depends', ' nodejs-native:do_populate_sysroot')
 
         # *.lz4 should DEPEND on lz4-native for unpacking
-        if uri.path.endswith('.lz4'):
+        if path.endswith('.lz4'):
             d.appendVarFlag('do_unpack', 'depends', ' lz4-native:do_populate_sysroot')
 
         # *.lz should DEPEND on lzip-native for unpacking
-        elif uri.path.endswith('.lz'):
+        elif path.endswith('.lz'):
             d.appendVarFlag('do_unpack', 'depends', ' lzip-native:do_populate_sysroot')
 
         # *.xz should DEPEND on xz-native for unpacking
-        elif uri.path.endswith('.xz') or uri.path.endswith('.txz'):
+        elif path.endswith('.xz') or path.endswith('.txz'):
             d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot')
 
         # .zip should DEPEND on unzip-native for unpacking
-        elif uri.path.endswith('.zip') or uri.path.endswith('.jar'):
+        elif path.endswith('.zip') or path.endswith('.jar'):
             d.appendVarFlag('do_unpack', 'depends', ' unzip-native:do_populate_sysroot')
 
         # Some rpm files may be compressed internally using xz (for example, rpms from Fedora)
-        elif uri.path.endswith('.rpm'):
+        elif path.endswith('.rpm'):
             d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot')
 
         # *.deb should DEPEND on xz-native for unpacking
-        elif uri.path.endswith('.deb'):
+        elif path.endswith('.deb'):
             d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot')
 
     if needsrcrev:
diff --git a/poky/meta/classes/buildhistory.bbclass b/poky/meta/classes/buildhistory.bbclass
index 117a44e..49af61c 100644
--- a/poky/meta/classes/buildhistory.bbclass
+++ b/poky/meta/classes/buildhistory.bbclass
@@ -678,13 +678,16 @@
 POPULATE_SDK_POST_TARGET_COMMAND_append = " buildhistory_list_installed_sdk_target;"
 POPULATE_SDK_POST_TARGET_COMMAND_append = " buildhistory_get_sdk_installed_target;"
 POPULATE_SDK_POST_TARGET_COMMAND[vardepvalueexclude] .= "| buildhistory_list_installed_sdk_target;| buildhistory_get_sdk_installed_target;"
+POPULATE_SDK_POST_TARGET_COMMAND[vardepsexclude] += "buildhistory_list_installed_sdk_target buildhistory_get_sdk_installed_target"
 
 POPULATE_SDK_POST_HOST_COMMAND_append = " buildhistory_list_installed_sdk_host;"
 POPULATE_SDK_POST_HOST_COMMAND_append = " buildhistory_get_sdk_installed_host;"
 POPULATE_SDK_POST_HOST_COMMAND[vardepvalueexclude] .= "| buildhistory_list_installed_sdk_host;| buildhistory_get_sdk_installed_host;"
+POPULATE_SDK_POST_HOST_COMMAND[vardepsexclude] += "buildhistory_list_installed_sdk_host buildhistory_get_sdk_installed_host"
 
 SDK_POSTPROCESS_COMMAND_append = " buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
 SDK_POSTPROCESS_COMMAND[vardepvalueexclude] .= "| buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
+SDK_POSTPROCESS_COMMAND[vardepsexclude] += "buildhistory_get_sdkinfo buildhistory_get_extra_sdkinfo"
 
 python buildhistory_write_sigs() {
     if not "task" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
diff --git a/poky/meta/classes/buildstats.bbclass b/poky/meta/classes/buildstats.bbclass
index a8ee6e6..8e03039 100644
--- a/poky/meta/classes/buildstats.bbclass
+++ b/poky/meta/classes/buildstats.bbclass
@@ -106,26 +106,54 @@
 
 def write_host_data(logfile, e, d):
     import subprocess, os, datetime
+    # minimum time allowed for each command to run, in seconds
+    time_threshold = 0.5
+    # the total number of commands
+    num_cmds = 0
+    # interval at which data will be logged
+    interval = int(d.getVar("BB_HEARTBEAT_EVENT", False))
+    # the commands to be run at each interval
     cmds = d.getVar('BB_LOG_HOST_STAT_CMDS')
+    # if no commands are passed, issue a warning and return
     if cmds is None:
         d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
         d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0")
-        bb.warn("buildstats: Collecting host data failed. Set BB_LOG_HOST_STAT_CMDS=\"command1 ; command2 ; ... \" in conf\/local.conf\n")
+        bb.warn("buildstats: Collecting host data failed. Set BB_LOG_HOST_STAT_CMDS=\"command1 ; command2 ; ... \" in conf/local.conf\n")
         return
+    # find the total commands
+    c_san = []
+    for cmd in cmds.split(";"):
+        if len(cmd) == 0:
+            continue
+        num_cmds += 1
+        c_san.append(cmd)
+    if num_cmds <= 0:
+        d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+        d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0")
+        return
+
+    # return if the interval is not enough to run all commands within the specified BB_HEARTBEAT_EVENT interval
+    limit = interval / num_cmds
+    if limit <= time_threshold:
+        d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+        d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0")
+        bb.warn("buildstats: Collecting host data failed. BB_HEARTBEAT_EVENT interval not enough to run the specified commands. HINT: Increase value of BB_HEARTBEAT_EVENT in conf/local.conf\n")
+        return
+
+    # set the environment variables 
     path = d.getVar("PATH")
     opath = d.getVar("BB_ORIGENV", False).getVar("PATH")
     ospath = os.environ['PATH']
     os.environ['PATH'] = path + ":" + opath + ":" + ospath
     with open(logfile, "a") as f:
         f.write("Event Time: %f\nDate: %s\n" % (e.time, datetime.datetime.now()))
-        for cmd in cmds.split(";"):
-            if len(cmd) == 0:
-                continue
+        for c in c_san:
             try:
-                output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT, timeout=1).decode('utf-8')
+                output = subprocess.check_output(c.split(), stderr=subprocess.STDOUT, timeout=limit).decode('utf-8')
             except (subprocess.CalledProcessError, subprocess.TimeoutExpired, FileNotFoundError) as err:
-                output = "Error running command: %s\n%s\n" % (cmd, err)
-            f.write("%s\n%s\n" % (cmd, output))
+                output = "Error running command: %s\n%s\n" % (c, err)
+            f.write("%s\n%s\n" % (c, output))
+    # reset the environment
     os.environ['PATH'] = ospath
 
 python run_buildstats () {
diff --git a/poky/meta/classes/cmake.bbclass b/poky/meta/classes/cmake.bbclass
index 4af2226..8876ce5 100644
--- a/poky/meta/classes/cmake.bbclass
+++ b/poky/meta/classes/cmake.bbclass
@@ -81,6 +81,8 @@
 def map_host_arch_to_uname_arch(host_arch):
     if host_arch == "powerpc":
         return "ppc"
+    if host_arch == "powerpc64le":
+        return "ppc64le"
     if host_arch == "powerpc64":
         return "ppc64"
     return host_arch
@@ -100,7 +102,8 @@
 set( CMAKE_C_COMPILER_LAUNCHER ${OECMAKE_C_COMPILER_LAUNCHER} )
 set( CMAKE_CXX_COMPILER_LAUNCHER ${OECMAKE_CXX_COMPILER_LAUNCHER} )
 set( CMAKE_ASM_COMPILER ${OECMAKE_C_COMPILER} )
-set( CMAKE_AR ${OECMAKE_AR} CACHE FILEPATH "Archiver" )
+find_program( CMAKE_AR ${OECMAKE_AR} DOC "Archiver" REQUIRED )
+
 set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "CFLAGS" )
 set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" )
 set( CMAKE_ASM_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "ASM FLAGS" )
diff --git a/poky/meta/classes/core-image.bbclass b/poky/meta/classes/core-image.bbclass
index 88ca272..d81f68b 100644
--- a/poky/meta/classes/core-image.bbclass
+++ b/poky/meta/classes/core-image.bbclass
@@ -9,6 +9,7 @@
 #
 # Available IMAGE_FEATURES:
 #
+# - weston              - Weston Wayland compositor
 # - x11                 - X server
 # - x11-base            - X server with minimal environment
 # - x11-sato            - OpenedHand Sato environment
@@ -37,6 +38,7 @@
 # - stateless-rootfs    - systemctl-native not run, image populated by systemd at runtime
 # - splash              - bootup splash screen
 #
+FEATURE_PACKAGES_weston = "packagegroup-core-weston"
 FEATURE_PACKAGES_x11 = "packagegroup-core-x11"
 FEATURE_PACKAGES_x11-base = "packagegroup-core-x11-base"
 FEATURE_PACKAGES_x11-sato = "packagegroup-core-x11-sato"
diff --git a/poky/meta/classes/devshell.bbclass b/poky/meta/classes/devshell.bbclass
index fdf7dc1..76dd0b4 100644
--- a/poky/meta/classes/devshell.bbclass
+++ b/poky/meta/classes/devshell.bbclass
@@ -128,6 +128,7 @@
                     more = i.runsource(source, "<pyshell>")
                     if not more:
                         buf = []
+                    sys.stderr.flush()
                     prompt(more)
             except KeyboardInterrupt:
                 i.write("\nKeyboardInterrupt\n")
diff --git a/poky/meta/classes/externalsrc.bbclass b/poky/meta/classes/externalsrc.bbclass
index c7b2bf2..54cc7edb 100644
--- a/poky/meta/classes/externalsrc.bbclass
+++ b/poky/meta/classes/externalsrc.bbclass
@@ -217,14 +217,16 @@
             env['GIT_INDEX_FILE'] = tmp_index.name
             subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env)
             git_sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8")
-            submodule_helper = subprocess.check_output(['git', 'submodule--helper', 'list'], cwd=s_dir, env=env).decode("utf-8")
+            submodule_helper = subprocess.check_output(['git', 'submodule', 'status'], cwd=s_dir, env=env).decode("utf-8")
             for line in submodule_helper.splitlines():
-                module_dir = os.path.join(s_dir, line.rsplit(maxsplit=1)[1])
-                proc = subprocess.Popen(['git', 'add', '-A', '.'], cwd=module_dir, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
-                proc.communicate()
-                proc = subprocess.Popen(['git', 'write-tree'], cwd=module_dir, env=env, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
-                stdout, _ = proc.communicate()
-                git_sha1 += stdout.decode("utf-8")
+                module_relpath = line.split()[1]
+                if not module_relpath.split('/')[0] == '..':
+                    module_dir = os.path.join(s_dir, module_relpath)
+                    proc = subprocess.Popen(['git', 'add', '-A', '.'], cwd=module_dir, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+                    proc.communicate()
+                    proc = subprocess.Popen(['git', 'write-tree'], cwd=module_dir, env=env, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
+                    stdout, _ = proc.communicate()
+                    git_sha1 += stdout.decode("utf-8")
             sha1 = hashlib.sha1(git_sha1.encode("utf-8")).hexdigest()
         with open(oe_hash_file, 'w') as fobj:
             fobj.write(sha1)
diff --git a/poky/meta/classes/godep.bbclass b/poky/meta/classes/godep.bbclass
deleted file mode 100644
index c82401c..0000000
--- a/poky/meta/classes/godep.bbclass
+++ /dev/null
@@ -1,8 +0,0 @@
-DEPENDS_append = " go-dep-native"
-
-do_compile_prepend() {
-    rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.toml
-    rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.lock
-    ( cd ${WORKDIR}/build/src/${GO_IMPORT} && dep init && dep ensure )
-}
-
diff --git a/poky/meta/classes/image.bbclass b/poky/meta/classes/image.bbclass
index 41fc329..013455f 100644
--- a/poky/meta/classes/image.bbclass
+++ b/poky/meta/classes/image.bbclass
@@ -112,7 +112,7 @@
             'IMAGE_PREPROCESS_COMMAND','RPM_PREPROCESS_COMMANDS','RPM_POSTPROCESS_COMMANDS','DEB_PREPROCESS_COMMANDS','DEB_POSTPROCESS_COMMANDS']
 
 python () {
-    variables = rootfs_command_variables(d) + sdk_command_variables(d)
+    variables = rootfs_command_variables(d)
     for var in variables:
         if d.getVar(var, False):
             d.setVarFlag(var, 'func', '1')
@@ -507,7 +507,7 @@
 # Compute the rootfs size
 #
 def get_rootfs_size(d):
-    import subprocess
+    import subprocess, oe.utils
 
     rootfs_alignment = int(d.getVar('IMAGE_ROOTFS_ALIGNMENT'))
     overhead_factor = float(d.getVar('IMAGE_OVERHEAD_FACTOR'))
@@ -518,9 +518,7 @@
     initramfs_fstypes = d.getVar('INITRAMFS_FSTYPES') or ''
     initramfs_maxsize = d.getVar('INITRAMFS_MAXSIZE')
 
-    output = subprocess.check_output(['du', '-ks',
-                                      d.getVar('IMAGE_ROOTFS')])
-    size_kb = int(output.split()[0])
+    size_kb = oe.utils.directory_size(d.getVar("IMAGE_ROOTFS")) / 1024
 
     base_size = size_kb * overhead_factor
     bb.debug(1, '%f = %d * %f' % (base_size, size_kb, overhead_factor))
@@ -612,7 +610,7 @@
 deltask do_populate_sysroot
 do_package[noexec] = "1"
 deltask do_package_qa
-do_packagedata[noexec] = "1"
+deltask do_packagedata
 deltask do_package_write_ipk
 deltask do_package_write_deb
 deltask do_package_write_rpm
diff --git a/poky/meta/classes/insane.bbclass b/poky/meta/classes/insane.bbclass
index 53230fc..fa05fc0 100644
--- a/poky/meta/classes/insane.bbclass
+++ b/poky/meta/classes/insane.bbclass
@@ -1014,26 +1014,6 @@
     logdir = d.getVar('T')
     pn = d.getVar('PN')
 
-    # Check the compile log for host contamination
-    compilelog = os.path.join(logdir,"log.do_compile")
-
-    if os.path.exists(compilelog):
-        statement = "grep -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s > /dev/null" % compilelog
-        if subprocess.call(statement, shell=True) == 0:
-            msg = "%s: The compile log indicates that host include and/or library paths were used.\n \
-        Please check the log '%s' for more information." % (pn, compilelog)
-            package_qa_handle_error("compile-host-path", msg, d)
-
-    # Check the install log for host contamination
-    installlog = os.path.join(logdir,"log.do_install")
-
-    if os.path.exists(installlog):
-        statement = "grep -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s > /dev/null" % installlog
-        if subprocess.call(statement, shell=True) == 0:
-            msg = "%s: The install log indicates that host include and/or library paths were used.\n \
-        Please check the log '%s' for more information." % (pn, installlog)
-            package_qa_handle_error("install-host-path", msg, d)
-
     # Scan the packages...
     pkgdest = d.getVar('PKGDEST')
     packages = set((d.getVar('PACKAGES') or '').split())
@@ -1212,7 +1192,7 @@
     if bb.data.inherits_class('autotools', d) and not skip_configure_unsafe:
         bb.note("Checking autotools environment for common misconfiguration")
         for root, dirs, files in os.walk(workdir):
-            statement = "grep -q -F -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s" % \
+            statement = "grep -q -F -e 'is unsafe for cross-compilation' %s" % \
                         os.path.join(root,"config.log")
             if "config.log" in files:
                 if subprocess.call(statement, shell=True) == 0:
diff --git a/poky/meta/classes/kernel-fitimage.bbclass b/poky/meta/classes/kernel-fitimage.bbclass
index f5082c9..b9d8270 100644
--- a/poky/meta/classes/kernel-fitimage.bbclass
+++ b/poky/meta/classes/kernel-fitimage.bbclass
@@ -535,13 +535,19 @@
 	# Step 2: Prepare a DTB image section
 	#
 
-	if [ -z "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -n "${KERNEL_DEVICETREE}" ]; then
+	if [ -n "${KERNEL_DEVICETREE}" ]; then
 		dtbcount=1
 		for DTB in ${KERNEL_DEVICETREE}; do
 			if echo ${DTB} | grep -q '/dts/'; then
 				bbwarn "${DTB} contains the full path to the the dts file, but only the dtb name should be used."
 				DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
 			fi
+
+			# Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE}
+			if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -s ${EXTERNAL_KERNEL_DEVICETREE}/${DTB} ]; then
+				continue
+			fi
+
 			DTB_PATH="arch/${ARCH}/boot/dts/${DTB}"
 			if [ ! -e "${DTB_PATH}" ]; then
 				DTB_PATH="arch/${ARCH}/boot/${DTB}"
@@ -769,4 +775,4 @@
         bb.build.deltask('do_assemble_fitimage', d)
         bb.build.deltask('generate_rsa_keys', d)
         bb.build.addtask('generate_rsa_keys', 'do_assemble_fitimage_initramfs', 'do_bundle_initramfs', d)
-}
\ No newline at end of file
+}
diff --git a/poky/meta/classes/license.bbclass b/poky/meta/classes/license.bbclass
index bcea0b3..f7978e2 100644
--- a/poky/meta/classes/license.bbclass
+++ b/poky/meta/classes/license.bbclass
@@ -282,16 +282,15 @@
     """
     import fnmatch
 
-    # Assume if we're passed "GPLv3" or "*GPLv3" it means -or-later as well
-    for lic in wildcard_licenses[:]:
-        if not lic.endswith(("-or-later", "-only", "*")):
-            wildcard_licenses.append(lic + "+")
-
     licenses = wildcard_licenses[:]
     spdxmapkeys = d.getVarFlags('SPDXLICENSEMAP').keys()
     for wld_lic in wildcard_licenses:
         spdxflags = fnmatch.filter(spdxmapkeys, wld_lic)
         licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
+        # Assume if we're passed "GPLv3" or "*GPLv3" it means -or-later as well
+        if not wld_lic.endswith(("-or-later", "-only", "*", "+")):
+            spdxflags = fnmatch.filter(spdxmapkeys, wld_lic + "+")
+            licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
 
     spdx_lics = d.getVar('AVAILABLE_LICENSES').split()
     for wld_lic in wildcard_licenses:
diff --git a/poky/meta/classes/linux-dummy.bbclass b/poky/meta/classes/linux-dummy.bbclass
new file mode 100644
index 0000000..cd87915
--- /dev/null
+++ b/poky/meta/classes/linux-dummy.bbclass
@@ -0,0 +1,26 @@
+
+python __anonymous () {
+    if d.getVar('PREFERRED_PROVIDER_virtual/kernel') == 'linux-dummy':
+        # copy part codes from kernel.bbclass
+        kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
+
+        # set an empty package of kernel-devicetree
+        d.appendVar('PACKAGES', ' %s-devicetree' % kname)
+        d.setVar('ALLOW_EMPTY_%s-devicetree' % kname, '1')
+
+        # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into KERNEL_IMAGETYPES
+        type = d.getVar('KERNEL_IMAGETYPE') or ""
+        alttype = d.getVar('KERNEL_ALT_IMAGETYPE') or ""
+        types = d.getVar('KERNEL_IMAGETYPES') or ""
+        if type not in types.split():
+            types = (type + ' ' + types).strip()
+        if alttype not in types.split():
+            types = (alttype + ' ' + types).strip()
+
+        # set empty packages of kernel-image-*
+        for type in types.split():
+            typelower = type.lower()
+            d.appendVar('PACKAGES', ' %s-image-%s' % (kname, typelower))
+            d.setVar('ALLOW_EMPTY_%s-image-%s' % (kname, typelower), '1')
+}
+
diff --git a/poky/meta/classes/meson.bbclass b/poky/meta/classes/meson.bbclass
index a7644e7..bf9b02e 100644
--- a/poky/meta/classes/meson.bbclass
+++ b/poky/meta/classes/meson.bbclass
@@ -26,7 +26,8 @@
               --sysconfdir ${sysconfdir} \
               --localstatedir ${localstatedir} \
               --sharedstatedir ${sharedstatedir} \
-              --wrap-mode nodownload"
+              --wrap-mode nodownload \
+              --native-file ${WORKDIR}/meson.native"
 
 EXTRA_OEMESON_append = " ${PACKAGECONFIG_CONFARGS}"
 
@@ -102,12 +103,14 @@
 g-ir-scanner = '${STAGING_BINDIR}/g-ir-scanner-wrapper'
 g-ir-compiler = '${STAGING_BINDIR}/g-ir-compiler-wrapper'
 
-[properties]
-needs_exe_wrapper = true
+[built-in options]
 c_args = ${@meson_array('CFLAGS', d)}
 c_link_args = ${@meson_array('LDFLAGS', d)}
 cpp_args = ${@meson_array('CXXFLAGS', d)}
 cpp_link_args = ${@meson_array('LDFLAGS', d)}
+
+[properties]
+needs_exe_wrapper = true
 gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper'
 
 [host_machine]
@@ -122,8 +125,26 @@
 cpu = '${TARGET_ARCH}'
 endian = '${@meson_endian('TARGET', d)}'
 EOF
+
+    cat >${WORKDIR}/meson.native <<EOF
+[binaries]
+c = ${@meson_array('BUILD_CC', d)}
+cpp = ${@meson_array('BUILD_CXX', d)}
+ar = ${@meson_array('BUILD_AR', d)}
+nm = ${@meson_array('BUILD_NM', d)}
+strip = ${@meson_array('BUILD_STRIP', d)}
+readelf = ${@meson_array('BUILD_READELF', d)}
+pkgconfig = 'pkg-config-native'
+
+[built-in options]
+c_args = ${@meson_array('BUILD_CFLAGS', d)}
+c_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
+cpp_args = ${@meson_array('BUILD_CXXFLAGS', d)}
+cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
+EOF
 }
 
+# Tell externalsrc that changes to this file require a reconfigure
 CONFIGURE_FILES = "meson.build"
 
 meson_do_configure() {
@@ -140,33 +161,6 @@
     fi
 }
 
-override_native_tools() {
-    # Set these so that meson uses the native tools for its build sanity tests,
-    # which require executables to be runnable. The cross file will still
-    # override these for the target build.
-    export CC="${BUILD_CC}"
-    export CXX="${BUILD_CXX}"
-    export LD="${BUILD_LD}"
-    export AR="${BUILD_AR}"
-    export STRIP="${BUILD_STRIP}"
-    # These contain *target* flags but will be used as *native* flags.  The
-    # correct native flags will be passed via -Dc_args and so on, unset them so
-    # they don't interfere with tools invoked by Meson (such as g-ir-scanner)
-    unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
-}
-
-meson_do_configure_prepend_class-target() {
-    override_native_tools
-}
-
-meson_do_configure_prepend_class-nativesdk() {
-    override_native_tools
-}
-
-meson_do_configure_prepend_class-native() {
-    export PKG_CONFIG="pkg-config-native"
-}
-
 python meson_do_qa_configure() {
     import re
     warn_re = re.compile(r"^WARNING: Cross property (.+) is using default value (.+)$", re.MULTILINE)
diff --git a/poky/meta/classes/metadata_scm.bbclass b/poky/meta/classes/metadata_scm.bbclass
index 2608a7e..47cb969 100644
--- a/poky/meta/classes/metadata_scm.bbclass
+++ b/poky/meta/classes/metadata_scm.bbclass
@@ -1,8 +1,3 @@
-METADATA_BRANCH ?= "${@base_detect_branch(d)}"
-METADATA_BRANCH[vardepvalue] = "${METADATA_BRANCH}"
-METADATA_REVISION ?= "${@base_detect_revision(d)}"
-METADATA_REVISION[vardepvalue] = "${METADATA_REVISION}"
-
 def base_detect_revision(d):
     path = base_get_scmbasepath(d)
     return base_get_metadata_git_revision(path, d)
@@ -42,3 +37,8 @@
     except bb.process.ExecutionError:
         rev = '<unknown>'
     return rev.strip()
+
+METADATA_BRANCH := "${@base_detect_branch(d)}"
+METADATA_BRANCH[vardepvalue] = "${METADATA_BRANCH}"
+METADATA_REVISION := "${@base_detect_revision(d)}"
+METADATA_REVISION[vardepvalue] = "${METADATA_REVISION}"
diff --git a/poky/meta/classes/multilib_global.bbclass b/poky/meta/classes/multilib_global.bbclass
index 98f65c8..96257de 100644
--- a/poky/meta/classes/multilib_global.bbclass
+++ b/poky/meta/classes/multilib_global.bbclass
@@ -1,6 +1,7 @@
 def preferred_ml_updates(d):
-    # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set,
-    # we need to mirror these variables in the multilib case;
+    # If any of PREFERRED_PROVIDER, PREFERRED_RPROVIDER, REQUIRED_VERSION
+    # or PREFERRED_VERSION are set, we need to mirror these variables in
+    # the multilib case;
     multilibs = d.getVar('MULTILIBS') or ""
     if not multilibs:
         return
@@ -11,43 +12,51 @@
         if len(eext) > 1 and eext[0] == 'multilib':
             prefixes.append(eext[1])
 
-    versions = []
+    required_versions = []
+    preferred_versions = []
     providers = []
     rproviders = []
     for v in d.keys():
+        if v.startswith("REQUIRED_VERSION_"):
+            required_versions.append(v)
         if v.startswith("PREFERRED_VERSION_"):
-            versions.append(v)
+            preferred_versions.append(v)
         if v.startswith("PREFERRED_PROVIDER_"):
             providers.append(v)
         if v.startswith("PREFERRED_RPROVIDER_"):
             rproviders.append(v)
 
-    for v in versions:
-        val = d.getVar(v, False)
-        pkg = v.replace("PREFERRED_VERSION_", "")
-        if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
-            continue
-        if '-cross-' in pkg and '${' in pkg:
+    def sort_versions(versions, keyword):
+        version_str = "_".join([keyword, "VERSION", ""])
+        for v in versions:
+            val = d.getVar(v, False)
+            pkg = v.replace(version_str, "")
+            if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
+                continue
+            if '-cross-' in pkg and '${' in pkg:
+                for p in prefixes:
+                    localdata = bb.data.createCopy(d)
+                    override = ":virtclass-multilib-" + p
+                    localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
+                    if "-canadian-" in pkg:
+                        newname = localdata.expand(v)
+                    else:
+                        newname = localdata.expand(v).replace(version_str, version_str + p + '-')
+                    if newname != v:
+                        newval = localdata.expand(val)
+                        d.setVar(newname, newval)
+                # Avoid future variable key expansion
+                vexp = d.expand(v)
+                if v != vexp and d.getVar(v, False):
+                    d.renameVar(v, vexp)
+                continue
             for p in prefixes:
-                localdata = bb.data.createCopy(d)
-                override = ":virtclass-multilib-" + p
-                localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
-                if "-canadian-" in pkg:
-                    newname = localdata.expand(v)
-                else:
-                    newname = localdata.expand(v).replace("PREFERRED_VERSION_", "PREFERRED_VERSION_" + p + '-')
-                if newname != v:
-                    newval = localdata.expand(val)
-                    d.setVar(newname, newval)
-            # Avoid future variable key expansion
-            vexp = d.expand(v)
-            if v != vexp and d.getVar(v, False):
-                d.renameVar(v, vexp)
-            continue
-        for p in prefixes:
-            newname = "PREFERRED_VERSION_" + p + "-" + pkg
-            if not d.getVar(newname, False):
-                d.setVar(newname, val)
+                newname = version_str + p + "-" + pkg
+                if not d.getVar(newname, False):
+                    d.setVar(newname, val)
+
+    sort_versions(required_versions, "REQUIRED")
+    sort_versions(preferred_versions, "PREFERRED")
 
     for prov in providers:
         val = d.getVar(prov, False)
diff --git a/poky/meta/classes/populate_sdk_base.bbclass b/poky/meta/classes/populate_sdk_base.bbclass
index c8a7084..33ba3fc 100644
--- a/poky/meta/classes/populate_sdk_base.bbclass
+++ b/poky/meta/classes/populate_sdk_base.bbclass
@@ -329,6 +329,13 @@
 
 do_populate_sdk[vardeps] += "${@sdk_variables(d)}"
 
+python () {
+    variables = sdk_command_variables(d)
+    for var in variables:
+        if d.getVar(var, False):
+            d.setVarFlag(var, 'func', '1')
+}
+
 do_populate_sdk[file-checksums] += "${TOOLCHAIN_SHAR_REL_TMPL}:True \
                                     ${TOOLCHAIN_SHAR_EXT_TMPL}:True"
 
diff --git a/poky/meta/classes/populate_sdk_ext.bbclass b/poky/meta/classes/populate_sdk_ext.bbclass
index e6bf27c..84232ed 100644
--- a/poky/meta/classes/populate_sdk_ext.bbclass
+++ b/poky/meta/classes/populate_sdk_ext.bbclass
@@ -251,7 +251,9 @@
 
     # Create a layer for new recipes / appends
     bbpath = d.getVar('BBPATH')
-    bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 'workspace')])
+    env = os.environ.copy()
+    env['PYTHONDONTWRITEBYTECODE'] = '1'
+    bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 'workspace')], env=env)
 
     # Create bblayers.conf
     bb.utils.mkdirhier(baseoutpath + '/conf')
@@ -364,12 +366,19 @@
             # Hide the config information from bitbake output (since it's fixed within the SDK)
             f.write('BUILDCFG_HEADER = ""\n\n')
 
+            # Write METADATA_REVISION
+            f.write('METADATA_REVISION = "%s"\n\n' % d.getVar('METADATA_REVISION'))
+
             f.write('# Provide a flag to indicate we are in the EXT_SDK Context\n')
             f.write('WITHIN_EXT_SDK = "1"\n\n')
 
             # Map gcc-dependent uninative sstate cache for installer usage
             f.write('SSTATE_MIRRORS += " file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n\n')
 
+            if d.getVar("PRSERV_HOST"):
+                # Override this, we now include PR data, so it should only point ot the local database
+                f.write('PRSERV_HOST = "localhost:0"\n\n')
+
             # Allow additional config through sdk-extra.conf
             fn = bb.cookerdata.findConfigFile('sdk-extra.conf', d)
             if fn:
@@ -393,6 +402,27 @@
         bb.utils.mkdirhier(os.path.join(baseoutpath, 'cache'))
         shutil.copyfile(builddir + '/cache/bb_unihashes.dat', baseoutpath + '/cache/bb_unihashes.dat')
 
+    # If PR Service is in use, we need to export this as well
+    bb.note('Do we have a pr database?')
+    if d.getVar("PRSERV_HOST"):
+        bb.note('Writing PR database...')
+        # Based on the code in classes/prexport.bbclass
+        import oe.prservice
+        #dump meta info of tables
+        localdata = d.createCopy()
+        localdata.setVar('PRSERV_DUMPOPT_COL', "1")
+        localdata.setVar('PRSERV_DUMPDIR', os.path.join(baseoutpath, 'conf'))
+        localdata.setVar('PRSERV_DUMPFILE', '${PRSERV_DUMPDIR}/prserv.inc')
+
+        bb.note('PR Database write to %s' % (localdata.getVar('PRSERV_DUMPFILE')))
+
+        retval = oe.prservice.prserv_dump_db(localdata)
+        if not retval:
+            bb.error("prexport_handler: export failed!")
+            return
+        (metainfo, datainfo) = retval
+        oe.prservice.prserv_export_tofile(localdata, metainfo, datainfo, True)
+
     # Use templateconf.cfg file from builddir if exists
     if os.path.exists(builddir + '/conf/templateconf.cfg') and use_custom_templateconf == '1':
         shutil.copyfile(builddir + '/conf/templateconf.cfg', baseoutpath + '/conf/templateconf.cfg')
diff --git a/poky/meta/classes/qemuboot.bbclass b/poky/meta/classes/qemuboot.bbclass
index 4b7532b..1f8012e 100644
--- a/poky/meta/classes/qemuboot.bbclass
+++ b/poky/meta/classes/qemuboot.bbclass
@@ -72,6 +72,9 @@
 #                      Can be used to automatically determine the image from the other variables
 #                      but define things link 'bootindex' when booting from EFI or 'readonly' when using squashfs
 #                      without the need to specify a dedicated qemu configuration
+#
+# QB_GRAPHICS: QEMU video card type (e.g. "-vga std")
+#
 # Usage:
 # IMAGE_CLASSES += "qemuboot"
 # See "runqemu help" for more info
@@ -86,6 +89,7 @@
 QB_CMDLINE_IP_SLIRP ?= "ip=dhcp"
 QB_CMDLINE_IP_TAP ?= "ip=192.168.7.@CLIENT@::192.168.7.@GATEWAY@:255.255.255.0"
 QB_ROOTFS_EXTRA_OPT ?= ""
+QB_GRAPHICS ?= ""
 
 # This should be kept align with ROOT_VM
 QB_DRIVE_TYPE ?= "/dev/sd"
@@ -99,7 +103,7 @@
     build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE',
                 'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME',
                 'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE',
-                'STAGING_DIR_HOST']
+                'STAGING_DIR_HOST', 'SERIAL_CONSOLES']
     return build_vars + [k for k in d.keys() if k.startswith('QB_')]
 
 do_write_qemuboot_conf[vardeps] += "${@' '.join(qemuboot_vars(d))}"
diff --git a/poky/meta/classes/rootfs-postcommands.bbclass b/poky/meta/classes/rootfs-postcommands.bbclass
index 1f27a3d..e66ed59 100644
--- a/poky/meta/classes/rootfs-postcommands.bbclass
+++ b/poky/meta/classes/rootfs-postcommands.bbclass
@@ -34,7 +34,7 @@
 # Set default postinst log file
 POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
 # Set default target for systemd images
-SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
+SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains_any("IMAGE_FEATURES", [ "x11-base", "weston" ], "graphical.target", "multi-user.target", d)}'
 ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; systemd_create_users;", "", d)}'
 
 ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
diff --git a/poky/meta/classes/sanity.bbclass b/poky/meta/classes/sanity.bbclass
index 485173a..894f0e3 100644
--- a/poky/meta/classes/sanity.bbclass
+++ b/poky/meta/classes/sanity.bbclass
@@ -895,7 +895,7 @@
     mirror_vars = ['MIRRORS', 'PREMIRRORS', 'SSTATE_MIRRORS']
     protocols = ['http', 'ftp', 'file', 'https', \
                  'git', 'gitsm', 'hg', 'osc', 'p4', 'svn', \
-                 'bzr', 'cvs', 'npm', 'sftp', 'ssh', 's3' ]
+                 'bzr', 'cvs', 'npm', 'sftp', 'ssh', 's3', 'az' ]
     for mirror_var in mirror_vars:
         mirrors = (d.getVar(mirror_var) or '').replace('\\n', ' ').split()
 
diff --git a/poky/meta/classes/sstate.bbclass b/poky/meta/classes/sstate.bbclass
index f579168..8e8efd1 100644
--- a/poky/meta/classes/sstate.bbclass
+++ b/poky/meta/classes/sstate.bbclass
@@ -1146,14 +1146,18 @@
 
 SSTATE_PRUNE_OBSOLETEWORKDIR ?= "1"
 
-# Event handler which removes manifests and stamps file for
-# recipes which are no longer reachable in a build where they
-# once were.
+#
+# Event handler which removes manifests and stamps file for recipes which are no
+# longer 'reachable' in a build where they once were. 'Reachable' refers to
+# whether a recipe is parsed so recipes in a layer which was removed would no
+# longer be reachable. Switching between systemd and sysvinit where recipes
+# became skipped would be another example.
+#
 # Also optionally removes the workdir of those tasks/recipes
 #
-addhandler sstate_eventhandler2
-sstate_eventhandler2[eventmask] = "bb.event.ReachableStamps"
-python sstate_eventhandler2() {
+addhandler sstate_eventhandler_reachablestamps
+sstate_eventhandler_reachablestamps[eventmask] = "bb.event.ReachableStamps"
+python sstate_eventhandler_reachablestamps() {
     import glob
     d = e.data
     stamps = e.stamps.values()
@@ -1223,3 +1227,59 @@
     if preservestamps:
         os.remove(preservestampfile)
 }
+
+
+#
+# Bitbake can generate an event showing which setscene tasks are 'stale',
+# i.e. which ones will be rerun. These are ones where a stamp file is present but
+# it is stable (e.g. taskhash doesn't match). With that list we can go through
+# the manifests for matching tasks and "uninstall" those manifests now. We do
+# this now rather than mid build since the distribution of files between sstate
+# objects may have changed, new tasks may run first and if those new tasks overlap
+# with the stale tasks, we'd see overlapping files messages and failures. Thankfully
+# removing these files is fast.
+#
+addhandler sstate_eventhandler_stalesstate
+sstate_eventhandler_stalesstate[eventmask] = "bb.event.StaleSetSceneTasks"
+python sstate_eventhandler_stalesstate() {
+    d = e.data
+    tasks = e.tasks
+
+    bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}"))
+
+    for a in list(set(d.getVar("SSTATE_ARCHS").split())):
+        toremove = []
+        i = d.expand("${SSTATE_MANIFESTS}/index-" + a)
+        if not os.path.exists(i):
+            continue
+        with open(i, "r") as f:
+            lines = f.readlines()
+            for l in lines:
+                try:
+                    (stamp, manifest, workdir) = l.split()
+                    for tid in tasks:
+                        for s in tasks[tid]:
+                            if s.startswith(stamp):
+                                taskname = bb.runqueue.taskname_from_tid(tid)[3:]
+                                manname = manifest + "." + taskname
+                                if os.path.exists(manname):
+                                    bb.debug(2, "Sstate for %s is stale, removing related manifest %s" % (tid, manname))
+                                    toremove.append((manname, tid, tasks[tid]))
+                                    break
+                except ValueError:
+                    bb.fatal("Invalid line '%s' in sstate manifest '%s'" % (l, i))
+
+        if toremove:
+            msg = "Removing %d stale sstate objects for arch %s" % (len(toremove), a)
+            bb.event.fire(bb.event.ProcessStarted(msg, len(toremove)), d)
+
+            removed = 0
+            for (manname, tid, stamps) in toremove:
+                sstate_clean_manifest(manname, d)
+                for stamp in stamps:
+                    bb.utils.remove(stamp)
+                removed = removed + 1
+                bb.event.fire(bb.event.ProcessProgress(msg, removed), d)
+
+            bb.event.fire(bb.event.ProcessFinished(msg), d)
+}
diff --git a/poky/meta/classes/toolchain-scripts.bbclass b/poky/meta/classes/toolchain-scripts.bbclass
index db1d321..67a812c 100644
--- a/poky/meta/classes/toolchain-scripts.bbclass
+++ b/poky/meta/classes/toolchain-scripts.bbclass
@@ -8,6 +8,8 @@
 # default debug prefix map isn't valid in the SDK
 DEBUG_PREFIX_MAP = ""
 
+EXPORT_SDK_PS1 = "${@ 'export PS1=\'%s\'' % d.getVar('SDK_PS1') if d.getVar('SDK_PS1') else ''}"
+
 # This function creates an environment-setup-script for use in a deployable SDK
 toolchain_create_sdk_env_script () {
 	# Create environment setup script.  Remember that $SDKTARGETSYSROOT should
@@ -39,6 +41,7 @@
 	echo '    return 1' >> $script
 	echo 'fi' >> $script
 
+	echo "${EXPORT_SDK_PS1}" >> $script
 	echo 'export SDKTARGETSYSROOT='"$sysroot" >> $script
 	EXTRAPATH=""
 	for i in ${CANADIANEXTRAOS}; do
diff --git a/poky/meta/conf/bitbake.conf b/poky/meta/conf/bitbake.conf
index ecd4d16..d87d7ca 100644
--- a/poky/meta/conf/bitbake.conf
+++ b/poky/meta/conf/bitbake.conf
@@ -476,7 +476,7 @@
 # Build utility info.
 ##################################################################
 
-# Directory where host tools are copied
+# Directory with symlinks to host tools used by build
 HOSTTOOLS_DIR = "${TMPDIR}/hosttools"
 
 # Tools needed to run builds with OE-Core
@@ -541,7 +541,10 @@
 export BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"
 export BUILD_RANLIB = "${BUILD_PREFIX}ranlib"
 export BUILD_STRIP = "${BUILD_PREFIX}strip"
+BUILD_OBJCOPY = "${BUILD_PREFIX}objcopy"
+BUILD_OBJDUMP = "${BUILD_PREFIX}objdump"
 export BUILD_NM = "${BUILD_PREFIX}nm"
+BUILD_READELF = "${BUILD_PREFIX}readelf"
 
 export MAKE = "make"
 EXTRA_OEMAKE = ""
diff --git a/poky/meta/conf/distro/include/maintainers.inc b/poky/meta/conf/distro/include/maintainers.inc
index 9093f2d..6276331 100644
--- a/poky/meta/conf/distro/include/maintainers.inc
+++ b/poky/meta/conf/distro/include/maintainers.inc
@@ -224,7 +224,6 @@
 RECIPE_MAINTAINER_pn-go-cross-${TUNE_PKGARCH} = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-go-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-go-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-dep = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
 RECIPE_MAINTAINER_pn-go-helloworld = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-go-native = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-go-runtime = "Khem Raj <raj.khem@gmail.com>"
@@ -723,6 +722,7 @@
 RECIPE_MAINTAINER_pn-usbinit = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-usbutils = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-util-linux = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-util-linux-libuuid = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-util-macros = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
@@ -798,6 +798,7 @@
 RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-xxhash = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER_pn-xz = "Denys Dmytriyenko <denis@denix.org>"
 RECIPE_MAINTAINER_pn-zip = "Denys Dmytriyenko <denis@denix.org>"
 RECIPE_MAINTAINER_pn-zlib = "Denys Dmytriyenko <denis@denix.org>"
diff --git a/poky/meta/conf/distro/include/ptest-packagelists.inc b/poky/meta/conf/distro/include/ptest-packagelists.inc
index ce13368..e0a876d 100644
--- a/poky/meta/conf/distro/include/ptest-packagelists.inc
+++ b/poky/meta/conf/distro/include/ptest-packagelists.inc
@@ -60,6 +60,7 @@
 #    bash-ptest \ # Test outcomes are non-deterministic by design
 #    ifupdown-ptest \ # Tested separately in lib/oeqa/selftest/cases/imagefeatures.py
 #    mdadm-ptest \ # Tests rely on non-deterministic sleep() amounts
+#    libinput-ptest \ # Tests need an unloaded system to be reliable
 #"
 
 PTESTS_SLOW = "\
@@ -72,7 +73,6 @@
     glib-2.0-ptest \
     gstreamer1.0-ptest \
     libevent-ptest \
-    libinput-ptest \
     lttng-tools-ptest \
     openssh-ptest \
     openssl-ptest \
diff --git a/poky/meta/conf/image-uefi.conf b/poky/meta/conf/image-uefi.conf
index 882a0e7..6ef011e 100644
--- a/poky/meta/conf/image-uefi.conf
+++ b/poky/meta/conf/image-uefi.conf
@@ -14,6 +14,8 @@
 EFI_ARCH_x86-64 = "x64"
 EFI_ARCH_aarch64 = "aa64"
 EFI_ARCH_arm = "arm"
+EFI_ARCH_riscv32 = "riscv32"
+EFI_ARCH_riscv64 = "riscv64"
 
 # Determine name of bootloader image
 EFI_BOOT_IMAGE ?= "boot${EFI_ARCH}.efi"
diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf
index cda37c3..5210fd4 100644
--- a/poky/meta/conf/layer.conf
+++ b/poky/meta/conf/layer.conf
@@ -7,12 +7,12 @@
 BBFILE_PATTERN_core = "^${LAYERDIR}/"
 BBFILE_PRIORITY_core = "5"
 
-LAYERSERIES_CORENAMES = "gatesgarth"
+LAYERSERIES_CORENAMES = "hardknott"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
 LAYERVERSION_core = "12"
-LAYERSERIES_COMPAT_core = "gatesgarth"
+LAYERSERIES_COMPAT_core = "hardknott"
 
 BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
 
diff --git a/poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc b/poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
index cf5c3ef..467abc5 100644
--- a/poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
+++ b/poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
@@ -10,9 +10,6 @@
 # musl only supports elfv2 ABI for ppc64
 TUNE_CCARGS .= "${@['', ' -mabi=elfv2']['libc-musl' in d.getVar('OVERRIDES').split(':')]}"
 
-# user mode qemu doesn't support ppc64
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'qemu-usermode', '', d)}"
-
 AVAILTUNES += "powerpc64 powerpc64le"
 
 TUNE_FEATURES_tune-powerpc64 = "m64 fpu-hard bigendian"
diff --git a/poky/meta/conf/machine/include/qemuboot-mips.inc b/poky/meta/conf/machine/include/qemuboot-mips.inc
index 230f032..4954f30 100644
--- a/poky/meta/conf/machine/include/qemuboot-mips.inc
+++ b/poky/meta/conf/machine/include/qemuboot-mips.inc
@@ -5,4 +5,4 @@
 QB_OPT_APPEND = "-usb -device usb-tablet"
 
 # For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND += "-vga std"
+QB_GRAPHICS = "-vga std"
diff --git a/poky/meta/conf/machine/include/tune-cortexa32.inc b/poky/meta/conf/machine/include/tune-cortexa32.inc
index e86de6c..b9ae2b1 100644
--- a/poky/meta/conf/machine/include/tune-cortexa32.inc
+++ b/poky/meta/conf/machine/include/tune-cortexa32.inc
@@ -9,9 +9,9 @@
 AVAILTUNES += "cortexa32 cortexa32-crypto"
 ARMPKGARCH_tune-cortexa32             = "cortexa32"
 ARMPKGARCH_tune-cortexa32-crypto      = "cortexa32"
-TUNE_FEATURES_tune-cortexa32          = "armv8a cortexa32 crc"
+TUNE_FEATURES_tune-cortexa32          = "armv8a cortexa32 crc callconvention-hard neon"
 TUNE_FEATURES_tune-cortexa32-crypto   = "${TUNE_FEATURES_tune-cortexa32} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa32             = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa32"
-PACKAGE_EXTRA_ARCHS_tune-cortexa32-crypto      = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa32 cortexa32-crypto"
+PACKAGE_EXTRA_ARCHS_tune-cortexa32             = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa32 cortexa32hf-neon"
+PACKAGE_EXTRA_ARCHS_tune-cortexa32-crypto      = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa32 cortexa32hf-neon cortexa32hf-neon-crypto"
 BASE_LIB_tune-cortexa32               = "lib"
 BASE_LIB_tune-cortexa32-crypto        = "lib"
diff --git a/poky/meta/conf/machine/qemuarm.conf b/poky/meta/conf/machine/qemuarm.conf
index 257cfa3..e5ec4cc 100644
--- a/poky/meta/conf/machine/qemuarm.conf
+++ b/poky/meta/conf/machine/qemuarm.conf
@@ -17,10 +17,10 @@
 QB_MACHINE = "-machine virt,highmem=off"
 QB_CPU = "-cpu cortex-a15"
 # Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0 vmalloc=256"
+QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
 # For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND = "-device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_GRAPHICS = "-device VGA,edid=on"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
 # Virtio Networking support
 QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
 QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
diff --git a/poky/meta/conf/machine/qemuarm64.conf b/poky/meta/conf/machine/qemuarm64.conf
index 2f61eb0..51f7ecd 100644
--- a/poky/meta/conf/machine/qemuarm64.conf
+++ b/poky/meta/conf/machine/qemuarm64.conf
@@ -17,11 +17,9 @@
 QB_MACHINE = "-machine virt"
 QB_CPU = "-cpu cortex-a57"
 QB_CPU_KVM = "-cpu host -machine gic-version=3"
-# Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0"
 # For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND = "-device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_GRAPHICS = "-device VGA,edid=on"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
 # Virtio Networking support
 QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
 QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
diff --git a/poky/meta/conf/machine/qemuarmv5.conf b/poky/meta/conf/machine/qemuarmv5.conf
index dfe2a89..7050bae 100644
--- a/poky/meta/conf/machine/qemuarmv5.conf
+++ b/poky/meta/conf/machine/qemuarmv5.conf
@@ -12,7 +12,7 @@
 # For runqemu
 QB_SYSTEM_NAME = "qemu-system-arm"
 QB_MACHINE = "-machine versatilepb"
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty vmalloc=256"
+QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
 QB_OPT_APPEND = "-usb -device usb-tablet"
 PREFERRED_VERSION_linux-yocto ??= "5.10%"
 QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
diff --git a/poky/meta/conf/machine/qemuppc64.conf b/poky/meta/conf/machine/qemuppc64.conf
new file mode 100644
index 0000000..0682e75
--- /dev/null
+++ b/poky/meta/conf/machine/qemuppc64.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: QEMU PPC64 machine
+#@DESCRIPTION: Machine configuration for running a PPC system on QEMU
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/tune-power9.inc
+
+KERNEL_IMAGETYPE = "vmlinux"
+
+SERIAL_CONSOLES ?= "115200;hvc0"
+
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-ppc64"
+QB_MACHINE = "-machine pseries"
+QB_CPU = "-cpu POWER9"
+QB_KERNEL_CMDLINE_APPEND = "console=hvc0"
+#QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_OPT_APPEND = "-usb -device usb-tablet"
+
+#prelink broken on ppc64
+#USER_CLASSES_remove = "image-prelink"
+#IMAGE_PREPROCESS_COMMAND_remove = "prelink_image;"
+
+MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
diff --git a/poky/meta/conf/machine/qemuriscv32.conf b/poky/meta/conf/machine/qemuriscv32.conf
new file mode 100644
index 0000000..d3858dc
--- /dev/null
+++ b/poky/meta/conf/machine/qemuriscv32.conf
@@ -0,0 +1,16 @@
+#@TYPE: Machine
+#@NAME: generic riscv32 machine
+#@DESCRIPTION: Machine configuration for running a generic riscv32
+
+require conf/machine/include/riscv/qemuriscv.inc
+
+DEFAULTTUNE = "riscv32"
+
+PREFERRED_VERSION_openocd-native = "riscv"
+PREFERRED_VERSION_openocd = "riscv"
+
+XVISOR_PLAT = "riscv/virt32"
+
+EXTRA_IMAGEDEPENDS += "u-boot"
+UBOOT_MACHINE = "qemu-riscv32_smode_defconfig"
+UBOOT_ELF = "u-boot"
diff --git a/poky/meta/files/ext-sdk-prepare.py b/poky/meta/files/ext-sdk-prepare.py
index 163d5e9..d191e5e 100644
--- a/poky/meta/files/ext-sdk-prepare.py
+++ b/poky/meta/files/ext-sdk-prepare.py
@@ -44,6 +44,23 @@
         sdk_targets = []
     else:
         sdk_targets = ' '.join(sys.argv[2:]).split()
+
+    prserv = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'conf', 'prserv.inc')
+    if os.path.isfile(prserv):
+        with open(logfile, 'a') as logf:
+            logf.write('Importing PR data...\n')
+
+            ret = run_command_interruptible('bitbake-prserv-tool import %s' % prserv)
+
+            lastlog = get_last_consolelog()
+            if lastlog:
+                with open(lastlog, 'r') as f:
+                    for line in f:
+                        logf.write(line)
+            if ret:
+                print('ERROR: PR data import failed: error log written to %s' % logfile)
+                return ret
+
     if not sdk_targets:
         # Just do a parse so the cache is primed
         ret = run_command_interruptible('bitbake -p --quiet')
diff --git a/poky/meta/lib/bblayers/create.py b/poky/meta/lib/bblayers/create.py
index 542f31f..7ddb777 100644
--- a/poky/meta/lib/bblayers/create.py
+++ b/poky/meta/lib/bblayers/create.py
@@ -35,6 +35,7 @@
         bb.utils.mkdirhier(conf)
 
         layername = os.path.basename(os.path.normpath(args.layerdir))
+        layerid = args.layerid if args.layerid is not None else layername
 
         # Create the README from templates/README
         readme_template =  read_template('README').format(layername=layername)
@@ -54,7 +55,7 @@
 
         # Create the layer.conf from templates/layer.conf
         layerconf_template = read_template('layer.conf').format(
-                layername=layername, priority=args.priority, compat=compat)
+                layerid=layerid, priority=args.priority, compat=compat)
         layerconf = os.path.join(conf, 'layer.conf')
         with open(layerconf, 'w') as fd:
             fd.write(layerconf_template)
@@ -71,7 +72,8 @@
     def register_commands(self, sp):
         parser_create_layer = self.add_command(sp, 'create-layer', self.do_create_layer, parserecipes=False)
         parser_create_layer.add_argument('layerdir', help='Layer directory to create')
-        parser_create_layer.add_argument('--priority', '-p', default=6, help='Layer directory to create')
+        parser_create_layer.add_argument('--layerid', '-i', help='Layer id to use if different from layername')
+        parser_create_layer.add_argument('--priority', '-p', default=6, help='Priority of recipes in layer')
         parser_create_layer.add_argument('--example-recipe-name', '-e', dest='examplerecipe', default='example', help='Filename of the example recipe')
         parser_create_layer.add_argument('--example-recipe-version', '-v', dest='version', default='0.1', help='Version number for the example recipe')
 
diff --git a/poky/meta/lib/bblayers/templates/layer.conf b/poky/meta/lib/bblayers/templates/layer.conf
index e2eaff4..dddfbf7 100644
--- a/poky/meta/lib/bblayers/templates/layer.conf
+++ b/poky/meta/lib/bblayers/templates/layer.conf
@@ -5,9 +5,9 @@
 BBFILES += "${{LAYERDIR}}/recipes-*/*/*.bb \
             ${{LAYERDIR}}/recipes-*/*/*.bbappend"
 
-BBFILE_COLLECTIONS += "{layername}"
-BBFILE_PATTERN_{layername} = "^${{LAYERDIR}}/"
-BBFILE_PRIORITY_{layername} = "{priority}"
+BBFILE_COLLECTIONS += "{layerid}"
+BBFILE_PATTERN_{layerid} = "^${{LAYERDIR}}/"
+BBFILE_PRIORITY_{layerid} = "{priority}"
 
-LAYERDEPENDS_{layername} = "core"
-LAYERSERIES_COMPAT_{layername} = "{compat}"
+LAYERDEPENDS_{layerid} = "core"
+LAYERSERIES_COMPAT_{layerid} = "{compat}"
diff --git a/poky/meta/lib/oe/copy_buildsystem.py b/poky/meta/lib/oe/copy_buildsystem.py
index 31a84f5..d97bf9d 100644
--- a/poky/meta/lib/oe/copy_buildsystem.py
+++ b/poky/meta/lib/oe/copy_buildsystem.py
@@ -20,7 +20,7 @@
     mode = os.stat(src).st_mode
     if stat.S_ISDIR(mode):
         bb.utils.mkdirhier(dest)
-        cmd = "tar --exclude='.git' --xattrs --xattrs-include='*' -chf - -C %s -p . \
+        cmd = "tar --exclude='.git' --exclude='__pycache__' --xattrs --xattrs-include='*' -chf - -C %s -p . \
         | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, dest)
         subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
     else:
@@ -259,7 +259,7 @@
     bb.note('Generating sstate-cache...')
 
     nativelsbstring = d.getVar('NATIVELSBSTRING')
-    bb.process.run("gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or ''))
+    bb.process.run("PYTHONDONTWRITEBYTECODE=1 gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or ''))
     if fixedlsbstring and nativelsbstring != fixedlsbstring:
         nativedir = output_sstate_cache + '/' + nativelsbstring
         if os.path.isdir(nativedir):
@@ -286,7 +286,7 @@
         logparam = '-l %s' % logfile
     else:
         logparam = ''
-    cmd = "%sBB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam)
+    cmd = "%sPYTHONDONTWRITEBYTECODE=1 BB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam)
     env = dict(d.getVar('BB_ORIGENV', False))
     env.pop('BUILDDIR', '')
     env.pop('BBPATH', '')
diff --git a/poky/meta/lib/oe/cve_check.py b/poky/meta/lib/oe/cve_check.py
index ce755f9..a1d7c29 100644
--- a/poky/meta/lib/oe/cve_check.py
+++ b/poky/meta/lib/oe/cve_check.py
@@ -11,8 +11,13 @@
 class Version():
 
     def __init__(self, version, suffix=None):
+
+        suffixes = ["alphabetical", "patch"]
+
         if str(suffix) == "alphabetical":
             version_pattern =  r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<patch>[-_\.]?(?P<patch_l>[a-z]))?(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
+        elif str(suffix) == "patch":
+            version_pattern =  r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<patch>[-_\.]?(p|patch)(?P<patch_l>[0-9]+))?(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
         else:
             version_pattern =  r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
         regex = re.compile(r"^\s*" + version_pattern + r"\s*$", re.VERBOSE | re.IGNORECASE)
@@ -23,7 +28,7 @@
 
         self._version = _Version(
             release=tuple(int(i) for i in match.group("release").replace("-",".").split(".")),
-            patch_l=match.group("patch_l") if str(suffix) == "alphabetical" and match.group("patch_l") else "",
+            patch_l=match.group("patch_l") if str(suffix) in suffixes and match.group("patch_l") else "",
             pre_l=match.group("pre_l"),
             pre_v=match.group("pre_v")
         )
diff --git a/poky/meta/lib/oe/rootfs.py b/poky/meta/lib/oe/rootfs.py
index 249c685..5f81023 100644
--- a/poky/meta/lib/oe/rootfs.py
+++ b/poky/meta/lib/oe/rootfs.py
@@ -250,13 +250,11 @@
 
 
     def _uninstall_unneeded(self):
-        # Remove unneeded init script symlinks
+        # Remove the run-postinsts package if no delayed postinsts are found
         delayed_postinsts = self._get_delayed_postinsts()
         if delayed_postinsts is None:
-            if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")):
-                self._exec_shell_cmd(["update-rc.d", "-f", "-r",
-                                      self.d.getVar('IMAGE_ROOTFS'),
-                                      "run-postinsts", "remove"])
+            if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")) or os.path.exists(self.d.expand("${IMAGE_ROOTFS}${systemd_unitdir}/system/run-postinsts.service")):
+                self.pm.remove(["run-postinsts"])
 
         image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
                                         True, False, self.d)
diff --git a/poky/meta/lib/oe/utils.py b/poky/meta/lib/oe/utils.py
index 9a2187e..a84039f 100644
--- a/poky/meta/lib/oe/utils.py
+++ b/poky/meta/lib/oe/utils.py
@@ -536,3 +536,34 @@
 def sh_quote(string):
     import shlex
     return shlex.quote(string)
+
+def directory_size(root, blocksize=4096):
+    """
+    Calculate the size of the directory, taking into account hard links,
+    rounding up every size to multiples of the blocksize.
+    """
+    def roundup(size):
+        """
+        Round the size up to the nearest multiple of the block size.
+        """
+        import math
+        return math.ceil(size / blocksize) * blocksize
+
+    def getsize(filename):
+        """
+        Get the size of the filename, not following symlinks, taking into
+        account hard links.
+        """
+        stat = os.lstat(filename)
+        if stat.st_ino not in inodes:
+            inodes.add(stat.st_ino)
+            return stat.st_size
+        else:
+            return 0
+
+    inodes = set()
+    total = 0
+    for root, dirs, files in os.walk(root):
+        total += sum(roundup(getsize(os.path.join(root, name))) for name in files)
+        total += roundup(getsize(root))
+    return total
diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
index a1791b5..4714741 100644
--- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -114,6 +114,11 @@
         'can\'t handle BAR above 4GB',
         'Cannot reserve Legacy IO',
         ] + common_errors,
+    'qemuppc64' : [
+        'vio vio: uevent: failed to send synthetic uevent',
+        'synth uevent: /devices/vio: failed to send uevent',
+        'PCI 0000:00 Cannot reserve Legacy IO [io  0x10000-0x10fff]',
+        ] + common_errors,
     'qemuarm' : [
         'mmci-pl18x: probe of fpga:05 failed with error -22',
         'mmci-pl18x: probe of fpga:0b failed with error -22',
diff --git a/poky/meta/lib/oeqa/runtime/cases/weston.py b/poky/meta/lib/oeqa/runtime/cases/weston.py
index a1c7183..b3a7c27 100644
--- a/poky/meta/lib/oeqa/runtime/cases/weston.py
+++ b/poky/meta/lib/oeqa/runtime/cases/weston.py
@@ -53,7 +53,11 @@
 
     @OEHasPackage(['wayland-utils'])
     def test_wayland_info(self):
-        status, output = self.target.run(self.get_weston_command('wayland-info'))
+        if 'systemd' in self.tc.td['VIRTUAL-RUNTIME_init_manager']:
+            command = 'XDG_RUNTIME_DIR=/run wayland-info'
+        else:
+            command = self.get_weston_command('wayland-info')
+        status, output = self.target.run(command)
         self.assertEqual(status, 0, msg='wayland-info error: %s' % output)
 
     @OEHasPackage(['weston'])
diff --git a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
index 3495bee..20fe8ed 100644
--- a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
+++ b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
@@ -197,3 +197,9 @@
 
         bitbake("world --runall fetch")
 
+
+class Poisoning(OESelftestTestCase):
+    def test_poisoning(self):
+        res = bitbake("poison", ignore_status=True)
+        self.assertNotEqual(res.status, 0)
+        self.assertTrue("is unsafe for cross-compilation" in res.output)
diff --git a/poky/meta/lib/oeqa/selftest/cases/cve_check.py b/poky/meta/lib/oeqa/selftest/cases/cve_check.py
index 3f343a2..d1947ba 100644
--- a/poky/meta/lib/oeqa/selftest/cases/cve_check.py
+++ b/poky/meta/lib/oeqa/selftest/cases/cve_check.py
@@ -34,3 +34,11 @@
         self.assertTrue( result ,msg="Failed to compare version with suffix '1.0b' < '1.0r'")
         result = Version("1.0b","alphabetical") > Version("1.0","alphabetical")
         self.assertTrue( result ,msg="Failed to compare version with suffix '1.0b' > '1.0'")
+
+        # consider the trailing "p" and "patch" as patched released when comparing
+        result = Version("1.0","patch") < Version("1.0p1","patch")
+        self.assertTrue( result ,msg="Failed to compare version with suffix '1.0' < '1.0p1'")
+        result = Version("1.0p2","patch") > Version("1.0p1","patch")
+        self.assertTrue( result ,msg="Failed to compare version with suffix '1.0p2' > '1.0p1'")
+        result = Version("1.0_patch2","patch") < Version("1.0_patch3","patch")
+        self.assertTrue( result ,msg="Failed to compare version with suffix '1.0_patch2' < '1.0_patch3'")
diff --git a/poky/meta/lib/oeqa/selftest/cases/distrodata.py b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
index e1cfc3b..fbc0c2a 100644
--- a/poky/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -40,6 +40,42 @@
 """ + "\n".join(regressed_successes)
         self.assertTrue(len(regressed_failures) == 0 and len(regressed_successes) == 0, msg)
 
+    def test_missing_homepg(self):
+        """
+        Summary:     Test for oe-core recipes that don't have a HOMEPAGE or DESCRIPTION
+        Expected:    All oe-core recipes should have a DESCRIPTION entry
+        Expected:    All oe-core recipes should have a HOMEPAGE entry except for recipes that are not fetched from external sources.
+        Product:     oe-core
+        """
+        with bb.tinfoil.Tinfoil() as tinfoil:
+            tinfoil.prepare(config_only=False)
+            no_description = []
+            no_homepage = []
+            for fn in tinfoil.all_recipe_files(variants=False):
+                if not '/meta/recipes-' in fn:
+                    # We are only interested in OE-Core
+                    continue
+                rd = tinfoil.parse_recipe_file(fn, appends=False)
+                pn = rd.getVar('BPN')
+                srcfile = rd.getVar('SRC_URI').split()
+                #Since DESCRIPTION defaults to SUMMARY if not set, we are only interested in recipes without DESCRIPTION or SUMMARY
+                if not (rd.getVar('SUMMARY') or rd.getVar('DESCRIPTION')):
+                    no_description.append((pn, fn))
+                if not rd.getVar('HOMEPAGE'):
+                    if srcfile and srcfile[0].startswith('file') or not rd.getVar('SRC_URI'):
+                        # We are only interested in recipes SRC_URI fetched from external sources
+                        continue
+                    no_homepage.append((pn, fn))
+        if no_homepage:
+            self.fail("""
+The following recipes do not have a HOMEPAGE. Please add an entry for HOMEPAGE in the recipe.
+""" + "\n".join(['%s (%s)' % i for i in no_homepage]))
+
+        if no_description:
+            self.fail("""
+The following recipes do not have a DESCRIPTION. Please add an entry for DESCRIPTION in the recipe.
+""" + "\n".join(['%s (%s)' % i for i in no_description]))
+
     def test_maintainers(self):
         """
         Summary:     Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 0d02594..a627573 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -29,14 +29,10 @@
 #https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210215-0_td9la2/packages/diff-html/
 exclude_packages = [
 	'glide',
-	'go-dep',
 	'go-helloworld',
 	'go-runtime',
 	'go_',
 	'go-',
-	'meson',
-	'ovmf-shell-efi',
-	'perf',
 	'ruby-ri-docs'
 	]
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index 2bf5cb9..fa81584 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -979,14 +979,18 @@
     @only_for_arch(['i586', 'i686', 'x86_64'])
     def test_rawcopy_plugin_qemu(self):
         """Test rawcopy plugin in qemu"""
-        # build ext4 and wic images
-        for fstype in ("ext4", "wic"):
-            config = 'IMAGE_FSTYPES = "%s"\nWKS_FILE = "test_rawcopy_plugin.wks.in"\n' % fstype
-            self.append_config(config)
-            self.assertEqual(0, bitbake('core-image-minimal').status)
-            self.remove_config(config)
+        # build ext4 and then use it for a wic image
+        config = 'IMAGE_FSTYPES = "ext4"\n'
+        self.append_config(config)
+        self.assertEqual(0, bitbake('core-image-minimal').status)
+        self.remove_config(config)
 
-        with runqemu('core-image-minimal', ssh=False, image_fstype='wic') as qemu:
+        config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_rawcopy_plugin.wks.in"\n'
+        self.append_config(config)
+        self.assertEqual(0, bitbake('core-image-minimal-mtdutils').status)
+        self.remove_config(config)
+
+        with runqemu('core-image-minimal-mtdutils', ssh=False, image_fstype='wic') as qemu:
             cmd = "grep sda. /proc/partitions  |wc -l"
             status, output = qemu.run_serial(cmd)
             self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 77ec939..eb23dbc 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -176,7 +176,7 @@
             self.logger.error("Failed to create listening socket: %s" % msg[1])
             return False
 
-        bootparams = 'console=tty1 console=ttyS0,115200n8 printk.time=1'
+        bootparams = ' printk.time=1'
         if extra_bootparams:
             bootparams = bootparams + ' ' + extra_bootparams
 
diff --git a/poky/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig b/poky/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig
new file mode 100755
index 0000000..e471773
--- /dev/null
+++ b/poky/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig
@@ -0,0 +1,10 @@
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=0
+ 
+DISPLAY_CAN_ROTATE=0
+DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=640
+#DISPLAY_HEIGHT_PIXELS=480
+#DISPLAY_BPP=16
+DISPLAY_DPI=150
+DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/poky/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch b/poky/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch
new file mode 100644
index 0000000..2f15a91
--- /dev/null
+++ b/poky/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch
@@ -0,0 +1,39 @@
+From e4c41db74b8972285cbdfe614c95c1ffd97d70e1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 26 Mar 2021 11:59:43 -0700
+Subject: [PATCH] RISC-V: Restore the typcast to 64bit type
+
+this makes the type promotions clear and explicit
+It was already typecasted to long but was accidentally dropped in [1]
+which stated to cause failures on riscv32 as reported in [2]
+
+[1] https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2bf40e9e5be9808b17852e688eead87acff14420
+[2] https://savannah.gnu.org/bugs/index.php?60283
+
+Upstream-Status: Submitted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Andreas Schwab <schwab@suse.de>
+Cc: Daniel Kiper <daniel.kiper@oracle.com>
+Cc: Chester Lin <clin@suse.com>
+Cc: Nikita Ermakov <arei@altlinux.org>
+Cc: Alistair Francis <alistair.francis@wdc.com>
+---
+ util/grub-mkimagexx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
+index 00f49ccaa..ac677d03d 100644
+--- a/util/grub-mkimagexx.c
++++ b/util/grub-mkimagexx.c
+@@ -1242,7 +1242,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
+ 		  */
+ 
+ 		 sym_addr += addend;
+-		 off = sym_addr - target_section_addr - offset - image_target->vaddr_offset;
++		 off = (grub_int64_t)sym_addr - target_section_addr - offset - image_target->vaddr_offset;
+ 
+ 		 switch (ELF_R_TYPE (info))
+ 		   {
+-- 
+2.31.1
+
diff --git a/poky/meta/recipes-bsp/grub/files/6643507ce30f775008e093580f0c9499dfb2c485.patch b/poky/meta/recipes-bsp/grub/files/6643507ce30f775008e093580f0c9499dfb2c485.patch
deleted file mode 100644
index 8aa2091..0000000
--- a/poky/meta/recipes-bsp/grub/files/6643507ce30f775008e093580f0c9499dfb2c485.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6643507ce30f775008e093580f0c9499dfb2c485 Mon Sep 17 00:00:00 2001
-From: Simon Hardy <simon.hardy@itdev.co.uk>
-Date: Tue, 24 Mar 2020 13:29:12 +0000
-Subject: build: Fix GRUB i386-pc build with Ubuntu gcc
-
-With recent versions of gcc on Ubuntu a very large lzma_decompress.img file is
-output. (e.g. 134479600 bytes instead of 2864.) This causes grub-mkimage to
-fail with: "error: Decompressor is too big."
-
-This seems to be caused by a section .note.gnu.property that is placed at an
-offset such that objcopy needs to pad the img file with zeros.
-
-This issue is present on:
-Ubuntu 19.10 with gcc (Ubuntu 8.3.0-26ubuntu1~19.10) 8.3.0
-Ubuntu 19.10 with gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008
-
-This issue is not present on:
-Ubuntu 19.10 with gcc (Ubuntu 7.5.0-3ubuntu1~19.10) 7.5.0
-RHEL 8.0 with gcc 8.3.1 20190507 (Red Hat 8.3.1-4)
-
-The issue can be fixed by removing the section using objcopy as shown in
-this patch.
-
-Signed-off-by: Simon Hardy <simon.hardy@itdev.co.uk>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
----
- gentpl.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Upstream-Status: Backport
-
-diff --git a/gentpl.py b/gentpl.py
-index 387588c05..c86550d4f 100644
---- a/gentpl.py
-+++ b/gentpl.py
-@@ -766,7 +766,7 @@ def image(defn, platform):
- if test x$(TARGET_APPLE_LINKER) = x1; then \
-   $(MACHO2IMG) $< $@; \
- else \
--  $(TARGET_OBJCOPY) $(""" + cname(defn) + """_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; \
-+  $(TARGET_OBJCOPY) $(""" + cname(defn) + """_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; \
- fi
- """)
- 
--- 
-cgit v1.2.1
-
diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch
deleted file mode 100644
index c507ed3..0000000
--- a/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Wed, 15 Apr 2020 15:45:02 -0400
-Subject: yylex: Make lexer fatal errors actually be fatal
-
-When presented with a command that can't be tokenized to anything
-smaller than YYLMAX characters, the parser calls YY_FATAL_ERROR(errmsg),
-expecting that will stop further processing, as such:
-
-  #define YY_DO_BEFORE_ACTION \
-        yyg->yytext_ptr = yy_bp; \
-        yyleng = (int) (yy_cp - yy_bp); \
-        yyg->yy_hold_char = *yy_cp; \
-        *yy_cp = '\0'; \
-        if ( yyleng >= YYLMAX ) \
-                YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
-        yy_flex_strncpy( yytext, yyg->yytext_ptr, yyleng + 1 , yyscanner); \
-        yyg->yy_c_buf_p = yy_cp;
-
-The code flex generates expects that YY_FATAL_ERROR() will either return
-for it or do some form of longjmp(), or handle the error in some way at
-least, and so the strncpy() call isn't in an "else" clause, and thus if
-YY_FATAL_ERROR() is *not* actually fatal, it does the call with the
-questionable limit, and predictable results ensue.
-
-Unfortunately, our implementation of YY_FATAL_ERROR() is:
-
-   #define YY_FATAL_ERROR(msg)                     \
-     do {                                          \
-       grub_printf (_("fatal error: %s\n"), _(msg));     \
-     } while (0)
-
-The same pattern exists in yyless(), and similar problems exist in users
-of YY_INPUT(), several places in the main parsing loop,
-yy_get_next_buffer(), yy_load_buffer_state(), yyensure_buffer_stack,
-yy_scan_buffer(), etc.
-
-All of these callers expect YY_FATAL_ERROR() to actually be fatal, and
-the things they do if it returns after calling it are wildly unsafe.
-
-Fixes: CVE-2020-10713
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e]
-CVE: CVE-2020-10713
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
----
- grub-core/script/yylex.l | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l
-index 7b44c37b7..b7203c823 100644
---- a/grub-core/script/yylex.l
-+++ b/grub-core/script/yylex.l
-@@ -37,11 +37,11 @@
- 
- /* 
-  * As we don't have access to yyscanner, we cannot do much except to
-- * print the fatal error.
-+ * print the fatal error and exit.
-  */
- #define YY_FATAL_ERROR(msg)                     \
-   do {                                          \
--    grub_printf (_("fatal error: %s\n"), _(msg));     \
-+    grub_fatal (_("fatal error: %s\n"), _(msg));\
-   } while (0)
- 
- #define COPY(str, hint)                         \
--- 
-cgit v1.2.1
-
diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch
deleted file mode 100644
index 637e368..0000000
--- a/poky/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch
+++ /dev/null
@@ -1,1863 +0,0 @@
-From bcdd6a55952222ec9829a59348240a4f983b0b56 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:26:01 -0400
-Subject: [PATCH 4/9] calloc: Use calloc() at most places
-
-This modifies most of the places we do some form of:
-
-  X = malloc(Y * Z);
-
-to use calloc(Y, Z) instead.
-
-Among other issues, this fixes:
-  - allocation of integer overflow in grub_png_decode_image_header()
-    reported by Chris Coulson,
-  - allocation of integer overflow in luks_recover_key()
-    reported by Chris Coulson,
-  - allocation of integer overflow in grub_lvm_detect()
-    reported by Chris Coulson.
-
-Fixes: CVE-2020-14308
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-14308
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=f725fa7cb2ece547c5af01eeeecfe8d95802ed41
-
-[YL: don't patch on grub-core/lib/json/json.c, which is not existing in grub 2.04]
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/bus/usb/usbhub.c                |  8 ++++----
- grub-core/commands/efi/lsefisystab.c      |  3 ++-
- grub-core/commands/legacycfg.c            |  6 +++---
- grub-core/commands/menuentry.c            |  2 +-
- grub-core/commands/nativedisk.c           |  2 +-
- grub-core/commands/parttool.c             | 12 +++++++++---
- grub-core/commands/regexp.c               |  2 +-
- grub-core/commands/search_wrap.c          |  2 +-
- grub-core/disk/diskfilter.c               |  4 ++--
- grub-core/disk/ieee1275/ofdisk.c          |  2 +-
- grub-core/disk/ldm.c                      | 14 +++++++-------
- grub-core/disk/luks.c                     |  2 +-
- grub-core/disk/lvm.c                      | 12 ++++++------
- grub-core/disk/xen/xendisk.c              |  2 +-
- grub-core/efiemu/loadcore.c               |  2 +-
- grub-core/efiemu/mm.c                     |  6 +++---
- grub-core/font/font.c                     |  3 +--
- grub-core/fs/affs.c                       |  6 +++---
- grub-core/fs/btrfs.c                      |  6 +++---
- grub-core/fs/hfs.c                        |  2 +-
- grub-core/fs/hfsplus.c                    |  6 +++---
- grub-core/fs/iso9660.c                    |  2 +-
- grub-core/fs/ntfs.c                       |  4 ++--
- grub-core/fs/sfs.c                        |  2 +-
- grub-core/fs/tar.c                        |  2 +-
- grub-core/fs/udf.c                        |  4 ++--
- grub-core/fs/zfs/zfs.c                    |  4 ++--
- grub-core/gfxmenu/gui_string_util.c       |  2 +-
- grub-core/gfxmenu/widget-box.c            |  4 ++--
- grub-core/io/gzio.c                       |  2 +-
- grub-core/kern/efi/efi.c                  |  6 +++---
- grub-core/kern/emu/hostdisk.c             |  2 +-
- grub-core/kern/fs.c                       |  2 +-
- grub-core/kern/misc.c                     |  2 +-
- grub-core/kern/parser.c                   |  2 +-
- grub-core/kern/uboot/uboot.c              |  2 +-
- grub-core/lib/libgcrypt/cipher/ac.c       |  8 ++++----
- grub-core/lib/libgcrypt/cipher/primegen.c |  4 ++--
- grub-core/lib/libgcrypt/cipher/pubkey.c   |  4 ++--
- grub-core/lib/priority_queue.c            |  2 +-
- grub-core/lib/reed_solomon.c              |  7 +++----
- grub-core/lib/relocator.c                 | 10 +++++-----
- grub-core/lib/zstd/fse_decompress.c       |  2 +-
- grub-core/loader/arm/linux.c              |  2 +-
- grub-core/loader/efi/chainloader.c        |  2 +-
- grub-core/loader/i386/bsdXX.c             |  2 +-
- grub-core/loader/i386/xnu.c               |  4 ++--
- grub-core/loader/macho.c                  |  2 +-
- grub-core/loader/multiboot_elfxx.c        |  2 +-
- grub-core/loader/xnu.c                    |  2 +-
- grub-core/mmap/mmap.c                     |  4 ++--
- grub-core/net/bootp.c                     |  2 +-
- grub-core/net/dns.c                       | 10 +++++-----
- grub-core/net/net.c                       |  4 ++--
- grub-core/normal/charset.c                | 10 +++++-----
- grub-core/normal/cmdline.c                | 14 +++++++-------
- grub-core/normal/menu_entry.c             | 14 +++++++-------
- grub-core/normal/menu_text.c              |  4 ++--
- grub-core/normal/term.c                   |  4 ++--
- grub-core/osdep/linux/getroot.c           |  6 +++---
- grub-core/osdep/unix/config.c             |  2 +-
- grub-core/osdep/windows/getroot.c         |  2 +-
- grub-core/osdep/windows/hostdisk.c        |  4 ++--
- grub-core/osdep/windows/init.c            |  2 +-
- grub-core/osdep/windows/platform.c        |  4 ++--
- grub-core/osdep/windows/relpath.c         |  2 +-
- grub-core/partmap/gpt.c                   |  2 +-
- grub-core/partmap/msdos.c                 |  2 +-
- grub-core/script/execute.c                |  2 +-
- grub-core/tests/fake_input.c              |  2 +-
- grub-core/tests/video_checksum.c          |  6 +++---
- grub-core/video/capture.c                 |  2 +-
- grub-core/video/emu/sdl.c                 |  2 +-
- grub-core/video/i386/pc/vga.c             |  2 +-
- grub-core/video/readers/png.c             |  2 +-
- include/grub/unicode.h                    |  4 ++--
- util/getroot.c                            |  2 +-
- util/grub-file.c                          |  2 +-
- util/grub-fstest.c                        |  4 ++--
- util/grub-install-common.c                |  2 +-
- util/grub-install.c                       |  4 ++--
- util/grub-mkimagexx.c                     |  6 ++----
- util/grub-mkrescue.c                      |  4 ++--
- util/grub-mkstandalone.c                  |  2 +-
- util/grub-pe2elf.c                        | 12 +++++-------
- util/grub-probe.c                         |  4 ++--
- 86 files changed, 178 insertions(+), 177 deletions(-)
-
-diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
-index 34a7ff1..a06cce3 100644
---- a/grub-core/bus/usb/usbhub.c
-+++ b/grub-core/bus/usb/usbhub.c
-@@ -149,8 +149,8 @@ grub_usb_add_hub (grub_usb_device_t dev)
-   grub_usb_set_configuration (dev, 1);
- 
-   dev->nports = hubdesc.portcnt;
--  dev->children = grub_zalloc (hubdesc.portcnt * sizeof (dev->children[0]));
--  dev->ports = grub_zalloc (dev->nports * sizeof (dev->ports[0]));
-+  dev->children = grub_calloc (hubdesc.portcnt, sizeof (dev->children[0]));
-+  dev->ports = grub_calloc (dev->nports, sizeof (dev->ports[0]));
-   if (!dev->children || !dev->ports)
-     {
-       grub_free (dev->children);
-@@ -268,8 +268,8 @@ grub_usb_controller_dev_register_iter (grub_usb_controller_t controller, void *d
- 
-   /* Query the number of ports the root Hub has.  */
-   hub->nports = controller->dev->hubports (controller);
--  hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);
--  hub->ports = grub_zalloc (sizeof (hub->ports[0]) * hub->nports);
-+  hub->devices = grub_calloc (hub->nports, sizeof (hub->devices[0]));
-+  hub->ports = grub_calloc (hub->nports, sizeof (hub->ports[0]));
-   if (!hub->devices || !hub->ports)
-     {
-       grub_free (hub->devices);
-diff --git a/grub-core/commands/efi/lsefisystab.c b/grub-core/commands/efi/lsefisystab.c
-index df10302..cd81507 100644
---- a/grub-core/commands/efi/lsefisystab.c
-+++ b/grub-core/commands/efi/lsefisystab.c
-@@ -71,7 +71,8 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)),
-     grub_printf ("Vendor: ");
-     
-     for (vendor_utf16 = st->firmware_vendor; *vendor_utf16; vendor_utf16++);
--    vendor = grub_malloc (4 * (vendor_utf16 - st->firmware_vendor) + 1);
-+    /* Allocate extra 3 bytes to simplify math. */
-+    vendor = grub_calloc (4, vendor_utf16 - st->firmware_vendor + 1);
-     if (!vendor)
-       return grub_errno;
-     *grub_utf16_to_utf8 ((grub_uint8_t *) vendor, st->firmware_vendor,
-diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
-index db7a8f0..5e3ec0d 100644
---- a/grub-core/commands/legacycfg.c
-+++ b/grub-core/commands/legacycfg.c
-@@ -314,7 +314,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
-   if (argc < 2)
-     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
- 
--  cutargs = grub_malloc (sizeof (cutargs[0]) * (argc - 1));
-+  cutargs = grub_calloc (argc - 1, sizeof (cutargs[0]));
-   if (!cutargs)
-     return grub_errno;
-   cutargc = argc - 1;
-@@ -436,7 +436,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
- 	    {
- 	      char rbuf[3] = "-r";
- 	      bsdargc = cutargc + 2;
--	      bsdargs = grub_malloc (sizeof (bsdargs[0]) * bsdargc);
-+	      bsdargs = grub_calloc (bsdargc, sizeof (bsdargs[0]));
- 	      if (!bsdargs)
- 		{
- 		  err = grub_errno;
-@@ -559,7 +559,7 @@ grub_cmd_legacy_initrdnounzip (struct grub_command *mycmd __attribute__ ((unused
- 	return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("can't find command `%s'"),
- 			   "module");
- 
--      newargs = grub_malloc ((argc + 1) * sizeof (newargs[0]));
-+      newargs = grub_calloc (argc + 1, sizeof (newargs[0]));
-       if (!newargs)
- 	return grub_errno;
-       grub_memcpy (newargs + 1, args, argc * sizeof (newargs[0]));
-diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
-index 2c5363d..9164df7 100644
---- a/grub-core/commands/menuentry.c
-+++ b/grub-core/commands/menuentry.c
-@@ -154,7 +154,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
-     goto fail;
- 
-   /* Save argc, args to pass as parameters to block arg later. */
--  menu_args = grub_malloc (sizeof (char*) * (argc + 1));
-+  menu_args = grub_calloc (argc + 1, sizeof (char *));
-   if (! menu_args)
-     goto fail;
- 
-diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
-index 699447d..7c8f97f 100644
---- a/grub-core/commands/nativedisk.c
-+++ b/grub-core/commands/nativedisk.c
-@@ -195,7 +195,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
-   else
-     path_prefix = prefix;
- 
--  mods = grub_malloc (argc * sizeof (mods[0]));
-+  mods = grub_calloc (argc, sizeof (mods[0]));
-   if (!mods)
-     return grub_errno;
- 
-diff --git a/grub-core/commands/parttool.c b/grub-core/commands/parttool.c
-index 22b46b1..051e313 100644
---- a/grub-core/commands/parttool.c
-+++ b/grub-core/commands/parttool.c
-@@ -59,7 +59,13 @@ grub_parttool_register(const char *part_name,
-   for (nargs = 0; args[nargs].name != 0; nargs++);
-   cur->nargs = nargs;
-   cur->args = (struct grub_parttool_argdesc *)
--    grub_malloc ((nargs + 1) * sizeof (struct grub_parttool_argdesc));
-+    grub_calloc (nargs + 1, sizeof (struct grub_parttool_argdesc));
-+  if (!cur->args)
-+    {
-+      grub_free (cur);
-+      curhandle--;
-+      return -1;
-+    }
-   grub_memcpy (cur->args, args,
- 	       (nargs + 1) * sizeof (struct grub_parttool_argdesc));
- 
-@@ -257,7 +263,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
- 	return err;
-       }
- 
--  parsed = (int *) grub_zalloc (argc * sizeof (int));
-+  parsed = (int *) grub_calloc (argc, sizeof (int));
- 
-   for (i = 1; i < argc; i++)
-     if (! parsed[i])
-@@ -290,7 +296,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
- 	  }
- 	ptool = cur;
- 	pargs = (struct grub_parttool_args *)
--	  grub_zalloc (ptool->nargs * sizeof (struct grub_parttool_args));
-+	  grub_calloc (ptool->nargs, sizeof (struct grub_parttool_args));
- 	for (j = i; j < argc; j++)
- 	  if (! parsed[j])
- 	    {
-diff --git a/grub-core/commands/regexp.c b/grub-core/commands/regexp.c
-index f00b184..4019164 100644
---- a/grub-core/commands/regexp.c
-+++ b/grub-core/commands/regexp.c
-@@ -116,7 +116,7 @@ grub_cmd_regexp (grub_extcmd_context_t ctxt, int argc, char **args)
-   if (ret)
-     goto fail;
- 
--  matches = grub_zalloc (sizeof (*matches) * (regex.re_nsub + 1));
-+  matches = grub_calloc (regex.re_nsub + 1, sizeof (*matches));
-   if (! matches)
-     goto fail;
- 
-diff --git a/grub-core/commands/search_wrap.c b/grub-core/commands/search_wrap.c
-index d7fd26b..47fc8eb 100644
---- a/grub-core/commands/search_wrap.c
-+++ b/grub-core/commands/search_wrap.c
-@@ -122,7 +122,7 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
-     for (i = 0; state[SEARCH_HINT_BAREMETAL].args[i]; i++)
-       nhints++;
- 
--  hints = grub_malloc (sizeof (hints[0]) * nhints);
-+  hints = grub_calloc (nhints, sizeof (hints[0]));
-   if (!hints)
-     return grub_errno;
-   j = 0;
-diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
-index c3b578a..68ca9e0 100644
---- a/grub-core/disk/diskfilter.c
-+++ b/grub-core/disk/diskfilter.c
-@@ -1134,7 +1134,7 @@ grub_diskfilter_make_raid (grub_size_t uuidlen, char *uuid, int nmemb,
-   array->lvs->segments->node_count = nmemb;
-   array->lvs->segments->raid_member_size = disk_size;
-   array->lvs->segments->nodes
--    = grub_zalloc (nmemb * sizeof (array->lvs->segments->nodes[0]));
-+    = grub_calloc (nmemb, sizeof (array->lvs->segments->nodes[0]));
-   array->lvs->segments->stripe_size = stripe_size;
-   for (i = 0; i < nmemb; i++)
-     {
-@@ -1226,7 +1226,7 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
- 	  grub_partition_t p;
- 	  for (p = disk->partition; p; p = p->parent)
- 	    s++;
--	  pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
-+	  pv->partmaps = xcalloc (s, sizeof (pv->partmaps[0]));
- 	  s = 0;
- 	  for (p = disk->partition; p; p = p->parent)
- 	    pv->partmaps[s++] = xstrdup (p->partmap->name);
-diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
-index f73257e..03674cb 100644
---- a/grub-core/disk/ieee1275/ofdisk.c
-+++ b/grub-core/disk/ieee1275/ofdisk.c
-@@ -297,7 +297,7 @@ dev_iterate (const struct grub_ieee1275_devalias *alias)
-       /* Power machines documentation specify 672 as maximum SAS disks in
-          one system. Using a slightly larger value to be safe. */
-       table_size = 768;
--      table = grub_malloc (table_size * sizeof (grub_uint64_t));
-+      table = grub_calloc (table_size, sizeof (grub_uint64_t));
- 
-       if (!table)
-         {
-diff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
-index 2a22d2d..e632370 100644
---- a/grub-core/disk/ldm.c
-+++ b/grub-core/disk/ldm.c
-@@ -323,8 +323,8 @@ make_vg (grub_disk_t disk,
- 	  lv->segments->type = GRUB_DISKFILTER_MIRROR;
- 	  lv->segments->node_count = 0;
- 	  lv->segments->node_alloc = 8;
--	  lv->segments->nodes = grub_zalloc (sizeof (*lv->segments->nodes)
--					     * lv->segments->node_alloc);
-+	  lv->segments->nodes = grub_calloc (lv->segments->node_alloc,
-+					     sizeof (*lv->segments->nodes));
- 	  if (!lv->segments->nodes)
- 	    goto fail2;
- 	  ptr = vblk[i].dynamic;
-@@ -543,8 +543,8 @@ make_vg (grub_disk_t disk,
- 	    {
- 	      comp->segment_alloc = 8;
- 	      comp->segment_count = 0;
--	      comp->segments = grub_malloc (sizeof (*comp->segments)
--					    * comp->segment_alloc);
-+	      comp->segments = grub_calloc (comp->segment_alloc,
-+					    sizeof (*comp->segments));
- 	      if (!comp->segments)
- 		goto fail2;
- 	    }
-@@ -590,8 +590,8 @@ make_vg (grub_disk_t disk,
- 		}
- 	      comp->segments->node_count = read_int (ptr + 1, *ptr);
- 	      comp->segments->node_alloc = comp->segments->node_count;
--	      comp->segments->nodes = grub_zalloc (sizeof (*comp->segments->nodes)
--						   * comp->segments->node_alloc);
-+	      comp->segments->nodes = grub_calloc (comp->segments->node_alloc,
-+						   sizeof (*comp->segments->nodes));
- 	      if (!lv->segments->nodes)
- 		goto fail2;
- 	    }
-@@ -1017,7 +1017,7 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
-       *nsectors = lv->size;
-       if (*nsectors > max_nsectors)
- 	*nsectors = max_nsectors;
--      *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));
-       if (!*sectors)
- 	return grub_errno;
-       for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c
-index 86c50c6..18b3a8b 100644
---- a/grub-core/disk/luks.c
-+++ b/grub-core/disk/luks.c
-@@ -336,7 +336,7 @@ luks_recover_key (grub_disk_t source,
- 	&& grub_be_to_cpu32 (header.keyblock[i].stripes) > max_stripes)
-       max_stripes = grub_be_to_cpu32 (header.keyblock[i].stripes);
- 
--  split_key = grub_malloc (keysize * max_stripes);
-+  split_key = grub_calloc (keysize, max_stripes);
-   if (!split_key)
-     return grub_errno;
- 
-diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
-index dc6b83b..7b5fbbc 100644
---- a/grub-core/disk/lvm.c
-+++ b/grub-core/disk/lvm.c
-@@ -209,7 +209,7 @@ grub_lvm_detect (grub_disk_t disk,
-      first one.  */
- 
-   /* Allocate buffer space for the circular worst-case scenario. */
--  metadatabuf = grub_malloc (2 * mda_size);
-+  metadatabuf = grub_calloc (2, mda_size);
-   if (! metadatabuf)
-     goto fail;
- 
-@@ -464,7 +464,7 @@ grub_lvm_detect (grub_disk_t disk,
- #endif
- 		  goto lvs_fail;
- 		}
--	      lv->segments = grub_zalloc (sizeof (*seg) * lv->segment_count);
-+	      lv->segments = grub_calloc (lv->segment_count, sizeof (*seg));
- 	      seg = lv->segments;
- 
- 	      for (i = 0; i < lv->segment_count; i++)
-@@ -521,8 +521,8 @@ grub_lvm_detect (grub_disk_t disk,
- 		      if (seg->node_count != 1)
- 			seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
- 
--		      seg->nodes = grub_zalloc (sizeof (*stripe)
--						* seg->node_count);
-+		      seg->nodes = grub_calloc (seg->node_count,
-+						sizeof (*stripe));
- 		      stripe = seg->nodes;
- 
- 		      p = grub_strstr (p, "stripes = [");
-@@ -898,7 +898,7 @@ grub_lvm_detect (grub_disk_t disk,
- 		break;
- 	    if (lv)
- 	      {
--		cache->lv->segments = grub_malloc (lv->segment_count * sizeof (*lv->segments));
-+		cache->lv->segments = grub_calloc (lv->segment_count, sizeof (*lv->segments));
- 		if (!cache->lv->segments)
- 		  {
- 		    grub_lvm_free_cache_lvs (cache_lvs);
-@@ -911,7 +911,7 @@ grub_lvm_detect (grub_disk_t disk,
- 		    struct grub_diskfilter_node *nodes = lv->segments[i].nodes;
- 		    grub_size_t node_count = lv->segments[i].node_count;
- 
--		    cache->lv->segments[i].nodes = grub_malloc (node_count * sizeof (*nodes));
-+		    cache->lv->segments[i].nodes = grub_calloc (node_count, sizeof (*nodes));
- 		    if (!cache->lv->segments[i].nodes)
- 		      {
- 			for (j = 0; j < i; ++j)
-diff --git a/grub-core/disk/xen/xendisk.c b/grub-core/disk/xen/xendisk.c
-index 48476cb..d6612ee 100644
---- a/grub-core/disk/xen/xendisk.c
-+++ b/grub-core/disk/xen/xendisk.c
-@@ -426,7 +426,7 @@ grub_xendisk_init (void)
-   if (!ctr)
-     return;
- 
--  virtdisks = grub_malloc (ctr * sizeof (virtdisks[0]));
-+  virtdisks = grub_calloc (ctr, sizeof (virtdisks[0]));
-   if (!virtdisks)
-     return;
-   if (grub_xenstore_dir ("device/vbd", fill, &ctr))
-diff --git a/grub-core/efiemu/loadcore.c b/grub-core/efiemu/loadcore.c
-index 44085ef..2b92462 100644
---- a/grub-core/efiemu/loadcore.c
-+++ b/grub-core/efiemu/loadcore.c
-@@ -201,7 +201,7 @@ grub_efiemu_count_symbols (const Elf_Ehdr *e)
- 
-   grub_efiemu_nelfsyms = (unsigned) s->sh_size / (unsigned) s->sh_entsize;
-   grub_efiemu_elfsyms = (struct grub_efiemu_elf_sym *)
--    grub_malloc (sizeof (struct grub_efiemu_elf_sym) * grub_efiemu_nelfsyms);
-+    grub_calloc (grub_efiemu_nelfsyms, sizeof (struct grub_efiemu_elf_sym));
- 
-   /* Relocators */
-   for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
-diff --git a/grub-core/efiemu/mm.c b/grub-core/efiemu/mm.c
-index 52a032f..9b8e0d0 100644
---- a/grub-core/efiemu/mm.c
-+++ b/grub-core/efiemu/mm.c
-@@ -554,11 +554,11 @@ grub_efiemu_mmap_sort_and_uniq (void)
-   /* Initialize variables*/
-   grub_memset (present, 0, sizeof (int) * GRUB_EFI_MAX_MEMORY_TYPE);
-   scanline_events = (struct grub_efiemu_mmap_scan *)
--    grub_malloc (sizeof (struct grub_efiemu_mmap_scan) * 2 * mmap_num);
-+    grub_calloc (mmap_num, sizeof (struct grub_efiemu_mmap_scan) * 2);
- 
-   /* Number of chunks can't increase more than by factor of 2 */
-   result = (grub_efi_memory_descriptor_t *)
--    grub_malloc (sizeof (grub_efi_memory_descriptor_t) * 2 * mmap_num);
-+    grub_calloc (mmap_num, sizeof (grub_efi_memory_descriptor_t) * 2);
-   if (!result || !scanline_events)
-     {
-       grub_free (result);
-@@ -660,7 +660,7 @@ grub_efiemu_mm_do_alloc (void)
- 
-   /* Preallocate mmap */
-   efiemu_mmap = (grub_efi_memory_descriptor_t *)
--    grub_malloc (mmap_reserved_size * sizeof (grub_efi_memory_descriptor_t));
-+    grub_calloc (mmap_reserved_size, sizeof (grub_efi_memory_descriptor_t));
-   if (!efiemu_mmap)
-     {
-       grub_efiemu_unload ();
-diff --git a/grub-core/font/font.c b/grub-core/font/font.c
-index 85a2925..8e118b3 100644
---- a/grub-core/font/font.c
-+++ b/grub-core/font/font.c
-@@ -293,8 +293,7 @@ load_font_index (grub_file_t file, grub_uint32_t sect_length, struct
-   font->num_chars = sect_length / FONT_CHAR_INDEX_ENTRY_SIZE;
- 
-   /* Allocate the character index array.  */
--  font->char_index = grub_malloc (font->num_chars
--				  * sizeof (struct char_index_entry));
-+  font->char_index = grub_calloc (font->num_chars, sizeof (struct char_index_entry));
-   if (!font->char_index)
-     return 1;
-   font->bmp_idx = grub_malloc (0x10000 * sizeof (grub_uint16_t));
-diff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
-index 6b6a2bc..220b371 100644
---- a/grub-core/fs/affs.c
-+++ b/grub-core/fs/affs.c
-@@ -301,7 +301,7 @@ grub_affs_read_symlink (grub_fshelp_node_t node)
-       return 0;
-     }
-   latin1[symlink_size] = 0;
--  utf8 = grub_malloc (symlink_size * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+  utf8 = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, symlink_size);
-   if (!utf8)
-     {
-       grub_free (latin1);
-@@ -422,7 +422,7 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,
- 	return 1;
-     }
- 
--  hashtable = grub_zalloc (data->htsize * sizeof (*hashtable));
-+  hashtable = grub_calloc (data->htsize, sizeof (*hashtable));
-   if (!hashtable)
-     return 1;
- 
-@@ -628,7 +628,7 @@ grub_affs_label (grub_device_t device, char **label)
-       len = file.namelen;
-       if (len > sizeof (file.name))
- 	len = sizeof (file.name);
--      *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+      *label = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, len);
-       if (*label)
- 	*grub_latin1_to_utf8 ((grub_uint8_t *) *label, file.name, len) = '\0';
-     }
-diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
-index 48bd3d0..11272ef 100644
---- a/grub-core/fs/btrfs.c
-+++ b/grub-core/fs/btrfs.c
-@@ -413,7 +413,7 @@ lower_bound (struct grub_btrfs_data *data,
-     {
-       desc->allocated = 16;
-       desc->depth = 0;
--      desc->data = grub_malloc (sizeof (desc->data[0]) * desc->allocated);
-+      desc->data = grub_calloc (desc->allocated, sizeof (desc->data[0]));
-       if (!desc->data)
- 	return grub_errno;
-     }
-@@ -752,7 +752,7 @@ raid56_read_retry (struct grub_btrfs_data *data,
-   grub_err_t ret = GRUB_ERR_OUT_OF_MEMORY;
-   grub_uint64_t i, failed_devices;
- 
--  buffers = grub_zalloc (sizeof(*buffers) * nstripes);
-+  buffers = grub_calloc (nstripes, sizeof (*buffers));
-   if (!buffers)
-     goto cleanup;
- 
-@@ -2160,7 +2160,7 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
-   *nsectors = 64 * 2 - 1;
-   if (*nsectors > max_nsectors)
-     *nsectors = max_nsectors;
--  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
-   if (!*sectors)
-     return grub_errno;
-   for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c
-index ac0a409..3fe842b 100644
---- a/grub-core/fs/hfs.c
-+++ b/grub-core/fs/hfs.c
-@@ -1360,7 +1360,7 @@ grub_hfs_label (grub_device_t device, char **label)
-       grub_size_t len = data->sblock.volname[0];
-       if (len > sizeof (data->sblock.volname) - 1)
- 	len = sizeof (data->sblock.volname) - 1;
--      *label = grub_malloc (len * MAX_UTF8_PER_MAC_ROMAN + 1);
-+      *label = grub_calloc (MAX_UTF8_PER_MAC_ROMAN + 1, len);
-       if (*label)
- 	macroman_to_utf8 (*label, data->sblock.volname + 1,
- 			  len + 1, 0);
-diff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c
-index 54786bb..dae43be 100644
---- a/grub-core/fs/hfsplus.c
-+++ b/grub-core/fs/hfsplus.c
-@@ -720,7 +720,7 @@ list_nodes (void *record, void *hook_arg)
-   if (! filename)
-     return 0;
- 
--  keyname = grub_malloc (grub_be_to_cpu16 (catkey->namelen) * sizeof (*keyname));
-+  keyname = grub_calloc (grub_be_to_cpu16 (catkey->namelen), sizeof (*keyname));
-   if (!keyname)
-     {
-       grub_free (filename);
-@@ -1007,7 +1007,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
-     grub_hfsplus_btree_recptr (&data->catalog_tree, node, ptr);
- 
-   label_len = grub_be_to_cpu16 (catkey->namelen);
--  label_name = grub_malloc (label_len * sizeof (*label_name));
-+  label_name = grub_calloc (label_len, sizeof (*label_name));
-   if (!label_name)
-     {
-       grub_free (node);
-@@ -1029,7 +1029,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
- 	}
-     }
- 
--  *label = grub_malloc (label_len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+  *label = grub_calloc (label_len, GRUB_MAX_UTF8_PER_UTF16 + 1);
-   if (! *label)
-     {
-       grub_free (label_name);
-diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
-index 49c0c63..4f1b52a 100644
---- a/grub-core/fs/iso9660.c
-+++ b/grub-core/fs/iso9660.c
-@@ -331,7 +331,7 @@ grub_iso9660_convert_string (grub_uint8_t *us, int len)
-   int i;
-   grub_uint16_t t[MAX_NAMELEN / 2 + 1];
- 
--  p = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+  p = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
-   if (! p)
-     return NULL;
- 
-diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
-index fc4e1f6..2f34f76 100644
---- a/grub-core/fs/ntfs.c
-+++ b/grub-core/fs/ntfs.c
-@@ -556,8 +556,8 @@ get_utf8 (grub_uint8_t *in, grub_size_t len)
-   grub_uint16_t *tmp;
-   grub_size_t i;
- 
--  buf = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
--  tmp = grub_malloc (len * sizeof (tmp[0]));
-+  buf = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
-+  tmp = grub_calloc (len, sizeof (tmp[0]));
-   if (!buf || !tmp)
-     {
-       grub_free (buf);
-diff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
-index 50c1fe7..90f7fb3 100644
---- a/grub-core/fs/sfs.c
-+++ b/grub-core/fs/sfs.c
-@@ -266,7 +266,7 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
-       node->next_extent = node->block;
-       node->cache_size = 0;
- 
--      node->cache = grub_malloc (sizeof (node->cache[0]) * cache_size);
-+      node->cache = grub_calloc (cache_size, sizeof (node->cache[0]));
-       if (!node->cache)
- 	{
- 	  grub_errno = 0;
-diff --git a/grub-core/fs/tar.c b/grub-core/fs/tar.c
-index 7d63e0c..c551ed6 100644
---- a/grub-core/fs/tar.c
-+++ b/grub-core/fs/tar.c
-@@ -120,7 +120,7 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
- 	  if (data->linkname_alloc < linksize + 1)
- 	    {
- 	      char *n;
--	      n = grub_malloc (2 * (linksize + 1));
-+	      n = grub_calloc (2, linksize + 1);
- 	      if (!n)
- 		return grub_errno;
- 	      grub_free (data->linkname);
-diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
-index dc8b6e2..a837616 100644
---- a/grub-core/fs/udf.c
-+++ b/grub-core/fs/udf.c
-@@ -873,7 +873,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
-     {
-       unsigned i;
-       utf16len = sz - 1;
--      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
-+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
-       if (!utf16)
- 	return NULL;
-       for (i = 0; i < utf16len; i++)
-@@ -883,7 +883,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
-     {
-       unsigned i;
-       utf16len = (sz - 1) / 2;
--      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
-+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
-       if (!utf16)
- 	return NULL;
-       for (i = 0; i < utf16len; i++)
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index 2f72e42..381dde5 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -3325,7 +3325,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
- 	}
-       subvol->nkeys = 0;
-       zap_iterate (&keychain_dn, 8, count_zap_keys, &ctx, data);
--      subvol->keyring = grub_zalloc (subvol->nkeys * sizeof (subvol->keyring[0]));
-+      subvol->keyring = grub_calloc (subvol->nkeys, sizeof (subvol->keyring[0]));
-       if (!subvol->keyring)
- 	{
- 	  grub_free (fsname);
-@@ -4336,7 +4336,7 @@ grub_zfs_embed (grub_device_t device __attribute__ ((unused)),
-   *nsectors = (VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS);
-   if (*nsectors > max_nsectors)
-     *nsectors = max_nsectors;
--  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
-   if (!*sectors)
-     return grub_errno;
-   for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/gfxmenu/gui_string_util.c b/grub-core/gfxmenu/gui_string_util.c
-index a9a415e..ba1e1ea 100644
---- a/grub-core/gfxmenu/gui_string_util.c
-+++ b/grub-core/gfxmenu/gui_string_util.c
-@@ -55,7 +55,7 @@ canonicalize_path (const char *path)
-     if (*p == '/')
-       components++;
- 
--  char **path_array = grub_malloc (components * sizeof (*path_array));
-+  char **path_array = grub_calloc (components, sizeof (*path_array));
-   if (! path_array)
-     return 0;
- 
-diff --git a/grub-core/gfxmenu/widget-box.c b/grub-core/gfxmenu/widget-box.c
-index b606028..470597d 100644
---- a/grub-core/gfxmenu/widget-box.c
-+++ b/grub-core/gfxmenu/widget-box.c
-@@ -303,10 +303,10 @@ grub_gfxmenu_create_box (const char *pixmaps_prefix,
-   box->content_height = 0;
-   box->raw_pixmaps =
-     (struct grub_video_bitmap **)
--    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
-+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
-   box->scaled_pixmaps =
-     (struct grub_video_bitmap **)
--    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
-+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
- 
-   /* Initialize all pixmap pointers to NULL so that proper destruction can
-      be performed if an error is encountered partway through construction.  */
-diff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
-index 6208a97..43d98a7 100644
---- a/grub-core/io/gzio.c
-+++ b/grub-core/io/gzio.c
-@@ -554,7 +554,7 @@ huft_build (unsigned *b,	/* code lengths in bits (all assumed <= BMAX) */
- 	      z = 1 << j;	/* table entries for j-bit table */
- 
- 	      /* allocate and link in new table */
--	      q = (struct huft *) grub_zalloc ((z + 1) * sizeof (struct huft));
-+	      q = (struct huft *) grub_calloc (z + 1, sizeof (struct huft));
- 	      if (! q)
- 		{
- 		  if (h)
-diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
-index 6e1ceb9..dc31caa 100644
---- a/grub-core/kern/efi/efi.c
-+++ b/grub-core/kern/efi/efi.c
-@@ -202,7 +202,7 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,
- 
-   len = grub_strlen (var);
-   len16 = len * GRUB_MAX_UTF16_PER_UTF8;
--  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
-+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
-   if (!var16)
-     return grub_errno;
-   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
-@@ -237,7 +237,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
- 
-   len = grub_strlen (var);
-   len16 = len * GRUB_MAX_UTF16_PER_UTF8;
--  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
-+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
-   if (!var16)
-     return NULL;
-   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
-@@ -383,7 +383,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
- 	  while (len > 0 && fp->path_name[len - 1] == 0)
- 	    len--;
- 
--	  dup_name = grub_malloc (len * sizeof (*dup_name));
-+	  dup_name = grub_calloc (len, sizeof (*dup_name));
- 	  if (!dup_name)
- 	    {
- 	      grub_free (name);
-diff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c
-index e9ec680..d975265 100644
---- a/grub-core/kern/emu/hostdisk.c
-+++ b/grub-core/kern/emu/hostdisk.c
-@@ -615,7 +615,7 @@ static char *
- grub_util_path_concat_real (size_t n, int ext, va_list ap)
- {
-   size_t totlen = 0;
--  char **l = xmalloc ((n + ext) * sizeof (l[0]));
-+  char **l = xcalloc (n + ext, sizeof (l[0]));
-   char *r, *p, *pi;
-   size_t i;
-   int first = 1;
-diff --git a/grub-core/kern/fs.c b/grub-core/kern/fs.c
-index 2b85f49..f90be65 100644
---- a/grub-core/kern/fs.c
-+++ b/grub-core/kern/fs.c
-@@ -151,7 +151,7 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
-   while (p);
- 
-   /* Allocate a block list.  */
--  blocks = grub_zalloc (sizeof (struct grub_fs_block) * (num + 1));
-+  blocks = grub_calloc (num + 1, sizeof (struct grub_fs_block));
-   if (! blocks)
-     return 0;
- 
-diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
-index 3b633d5..a7abd36 100644
---- a/grub-core/kern/misc.c
-+++ b/grub-core/kern/misc.c
-@@ -690,7 +690,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,
-     args->ptr = args->prealloc;
-   else
-     {
--      args->ptr = grub_malloc (args->count * sizeof (args->ptr[0]));
-+      args->ptr = grub_calloc (args->count, sizeof (args->ptr[0]));
-       if (!args->ptr)
- 	{
- 	  grub_errno = GRUB_ERR_NONE;
-diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c
-index 78175aa..619db31 100644
---- a/grub-core/kern/parser.c
-+++ b/grub-core/kern/parser.c
-@@ -213,7 +213,7 @@ grub_parser_split_cmdline (const char *cmdline,
-     return grub_errno;
-   grub_memcpy (args, buffer, bp - buffer);
- 
--  *argv = grub_malloc (sizeof (char *) * (*argc + 1));
-+  *argv = grub_calloc (*argc + 1, sizeof (char *));
-   if (!*argv)
-     {
-       grub_free (args);
-diff --git a/grub-core/kern/uboot/uboot.c b/grub-core/kern/uboot/uboot.c
-index be4816f..aac8f9a 100644
---- a/grub-core/kern/uboot/uboot.c
-+++ b/grub-core/kern/uboot/uboot.c
-@@ -133,7 +133,7 @@ grub_uboot_dev_enum (void)
-     return num_devices;
- 
-   max_devices = 2;
--  enum_devices = grub_malloc (sizeof(struct device_info) * max_devices);
-+  enum_devices = grub_calloc (max_devices, sizeof(struct device_info));
-   if (!enum_devices)
-     return 0;
- 
-diff --git a/grub-core/lib/libgcrypt/cipher/ac.c b/grub-core/lib/libgcrypt/cipher/ac.c
-index f5e946a..63f6fcd 100644
---- a/grub-core/lib/libgcrypt/cipher/ac.c
-+++ b/grub-core/lib/libgcrypt/cipher/ac.c
-@@ -185,7 +185,7 @@ ac_data_mpi_copy (gcry_ac_mpi_t *data_mpis, unsigned int data_mpis_n,
-   gcry_mpi_t mpi;
-   char *label;
- 
--  data_mpis_new = gcry_malloc (sizeof (*data_mpis_new) * data_mpis_n);
-+  data_mpis_new = gcry_calloc (data_mpis_n, sizeof (*data_mpis_new));
-   if (! data_mpis_new)
-     {
-       err = gcry_error_from_errno (errno);
-@@ -572,7 +572,7 @@ _gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp,
-     }
- 
-   /* Add MPI list.  */
--  arg_list = gcry_malloc (sizeof (*arg_list) * (data_n + 1));
-+  arg_list = gcry_calloc (data_n + 1, sizeof (*arg_list));
-   if (! arg_list)
-     {
-       err = gcry_error_from_errno (errno);
-@@ -1283,7 +1283,7 @@ ac_data_construct (const char *identifier, int include_flags,
-   /* We build a list of arguments to pass to
-      gcry_sexp_build_array().  */
-   data_length = _gcry_ac_data_length (data);
--  arg_list = gcry_malloc (sizeof (*arg_list) * (data_length * 2));
-+  arg_list = gcry_calloc (data_length, sizeof (*arg_list) * 2);
-   if (! arg_list)
-     {
-       err = gcry_error_from_errno (errno);
-@@ -1593,7 +1593,7 @@ _gcry_ac_key_pair_generate (gcry_ac_handle_t handle, unsigned int nbits,
- 	arg_list_n += 2;
- 
-   /* Allocate list.  */
--  arg_list = gcry_malloc (sizeof (*arg_list) * arg_list_n);
-+  arg_list = gcry_calloc (arg_list_n, sizeof (*arg_list));
-   if (! arg_list)
-     {
-       err = gcry_error_from_errno (errno);
-diff --git a/grub-core/lib/libgcrypt/cipher/primegen.c b/grub-core/lib/libgcrypt/cipher/primegen.c
-index 2788e34..b12e79b 100644
---- a/grub-core/lib/libgcrypt/cipher/primegen.c
-+++ b/grub-core/lib/libgcrypt/cipher/primegen.c
-@@ -383,7 +383,7 @@ prime_generate_internal (int need_q_factor,
-     }
- 
-   /* Allocate an array to track pool usage. */
--  pool_in_use = gcry_malloc (n * sizeof *pool_in_use);
-+  pool_in_use = gcry_calloc (n, sizeof *pool_in_use);
-   if (!pool_in_use)
-     {
-       err = gpg_err_code_from_errno (errno);
-@@ -765,7 +765,7 @@ gen_prime (unsigned int nbits, int secret, int randomlevel,
-   if (nbits < 16)
-     log_fatal ("can't generate a prime with less than %d bits\n", 16);
- 
--  mods = gcry_xmalloc( no_of_small_prime_numbers * sizeof *mods );
-+  mods = gcry_xcalloc( no_of_small_prime_numbers, sizeof *mods);
-   /* Make nbits fit into gcry_mpi_t implementation. */
-   val_2  = mpi_alloc_set_ui( 2 );
-   val_3 = mpi_alloc_set_ui( 3);
-diff --git a/grub-core/lib/libgcrypt/cipher/pubkey.c b/grub-core/lib/libgcrypt/cipher/pubkey.c
-index 9109821..ca087ad 100644
---- a/grub-core/lib/libgcrypt/cipher/pubkey.c
-+++ b/grub-core/lib/libgcrypt/cipher/pubkey.c
-@@ -2941,7 +2941,7 @@ gcry_pk_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t s_pkey)
-        * array to a format string, so we have to do it this way :-(.  */
-       /* FIXME: There is now such a format specifier, so we can
-          change the code to be more clear. */
--      arg_list = malloc (nelem * sizeof *arg_list);
-+      arg_list = calloc (nelem, sizeof *arg_list);
-       if (!arg_list)
-         {
-           rc = gpg_err_code_from_syserror ();
-@@ -3233,7 +3233,7 @@ gcry_pk_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_hash, gcry_sexp_t s_skey)
-         }
-       strcpy (p, "))");
- 
--      arg_list = malloc (nelem * sizeof *arg_list);
-+      arg_list = calloc (nelem, sizeof *arg_list);
-       if (!arg_list)
-         {
-           rc = gpg_err_code_from_syserror ();
-diff --git a/grub-core/lib/priority_queue.c b/grub-core/lib/priority_queue.c
-index 659be0b..7d5e7c0 100644
---- a/grub-core/lib/priority_queue.c
-+++ b/grub-core/lib/priority_queue.c
-@@ -92,7 +92,7 @@ grub_priority_queue_new (grub_size_t elsize,
- {
-   struct grub_priority_queue *ret;
-   void *els;
--  els = grub_malloc (elsize * 8);
-+  els = grub_calloc (8, elsize);
-   if (!els)
-     return 0;
-   ret = (struct grub_priority_queue *) grub_malloc (sizeof (*ret));
-diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
-index ee9fa7b..467305b 100644
---- a/grub-core/lib/reed_solomon.c
-+++ b/grub-core/lib/reed_solomon.c
-@@ -20,6 +20,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-+#define xcalloc calloc
- #define xmalloc malloc
- #define grub_memset memset
- #define grub_memcpy memcpy
-@@ -158,11 +159,9 @@ rs_encode (gf_single_t *data, grub_size_t s, grub_size_t rs)
-   gf_single_t *rs_polynomial;
-   int i, j;
-   gf_single_t *m;
--  m = xmalloc ((s + rs) * sizeof (gf_single_t));
-+  m = xcalloc (s + rs, sizeof (gf_single_t));
-   grub_memcpy (m, data, s * sizeof (gf_single_t));
--  grub_memset (m + s, 0, rs * sizeof (gf_single_t));
--  rs_polynomial = xmalloc ((rs + 1) * sizeof (gf_single_t));
--  grub_memset (rs_polynomial, 0, (rs + 1) * sizeof (gf_single_t));
-+  rs_polynomial = xcalloc (rs + 1, sizeof (gf_single_t));
-   rs_polynomial[rs] = 1;
-   /* Multiply with X - a^r */
-   for (j = 0; j < rs; j++)
-diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c
-index ea3ebc7..5847aac 100644
---- a/grub-core/lib/relocator.c
-+++ b/grub-core/lib/relocator.c
-@@ -495,9 +495,9 @@ malloc_in_range (struct grub_relocator *rel,
-   }
- #endif
- 
--  eventt = grub_malloc (maxevents * sizeof (events[0]));
-+  eventt = grub_calloc (maxevents, sizeof (events[0]));
-   counter = grub_malloc ((DIGITSORT_MASK + 2) * sizeof (counter[0]));
--  events = grub_malloc (maxevents * sizeof (events[0]));
-+  events = grub_calloc (maxevents, sizeof (events[0]));
-   if (!events || !eventt || !counter)
-     {
-       grub_dprintf ("relocator", "events or counter allocation failed %d\n",
-@@ -963,7 +963,7 @@ malloc_in_range (struct grub_relocator *rel,
- #endif
-     unsigned cural = 0;
-     int oom = 0;
--    res->subchunks = grub_malloc (sizeof (res->subchunks[0]) * nallocs);
-+    res->subchunks = grub_calloc (nallocs, sizeof (res->subchunks[0]));
-     if (!res->subchunks)
-       oom = 1;
-     res->nsubchunks = nallocs;
-@@ -1562,8 +1562,8 @@ grub_relocator_prepare_relocs (struct grub_relocator *rel, grub_addr_t addr,
- 	    count[(chunk->src & 0xff) + 1]++;
- 	  }
-     }
--    from = grub_malloc (nchunks * sizeof (sorted[0]));
--    to = grub_malloc (nchunks * sizeof (sorted[0]));
-+    from = grub_calloc (nchunks, sizeof (sorted[0]));
-+    to = grub_calloc (nchunks, sizeof (sorted[0]));
-     if (!from || !to)
-       {
- 	grub_free (from);
-diff --git a/grub-core/lib/zstd/fse_decompress.c b/grub-core/lib/zstd/fse_decompress.c
-index 72bbead..2227b84 100644
---- a/grub-core/lib/zstd/fse_decompress.c
-+++ b/grub-core/lib/zstd/fse_decompress.c
-@@ -82,7 +82,7 @@
- FSE_DTable* FSE_createDTable (unsigned tableLog)
- {
-     if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX;
--    return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32) );
-+    return (FSE_DTable*)calloc( FSE_DTABLE_SIZE_U32(tableLog), sizeof (U32) );
- }
- 
- void FSE_freeDTable (FSE_DTable* dt)
-diff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
-index 5168491..d70c174 100644
---- a/grub-core/loader/arm/linux.c
-+++ b/grub-core/loader/arm/linux.c
-@@ -78,7 +78,7 @@ linux_prepare_atag (void *target_atag)
- 
-   /* some place for cmdline, initrd and terminator.  */
-   tmp_size = get_atag_size (atag_orig) + 20 + (arg_size) / 4;
--  tmp_atag = grub_malloc (tmp_size * sizeof (grub_uint32_t));
-+  tmp_atag = grub_calloc (tmp_size, sizeof (grub_uint32_t));
-   if (!tmp_atag)
-     return grub_errno;
- 
-diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
-index cd92ea3..daf8c6b 100644
---- a/grub-core/loader/efi/chainloader.c
-+++ b/grub-core/loader/efi/chainloader.c
-@@ -116,7 +116,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,
-   fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;
-   fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE;
- 
--  path_name = grub_malloc (len * GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
-+  path_name = grub_calloc (len, GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
-   if (!path_name)
-     return;
- 
-diff --git a/grub-core/loader/i386/bsdXX.c b/grub-core/loader/i386/bsdXX.c
-index af6741d..a8d8bf7 100644
---- a/grub-core/loader/i386/bsdXX.c
-+++ b/grub-core/loader/i386/bsdXX.c
-@@ -48,7 +48,7 @@ read_headers (grub_file_t file, const char *filename, Elf_Ehdr *e, char **shdr)
-   if (e->e_ident[EI_CLASS] != SUFFIX (ELFCLASS))
-     return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-dependent ELF magic"));
- 
--  *shdr = grub_malloc ((grub_uint32_t) e->e_shnum * e->e_shentsize);
-+  *shdr = grub_calloc (e->e_shnum, e->e_shentsize);
-   if (! *shdr)
-     return grub_errno;
- 
-diff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c
-index e64ed08..b7d176b 100644
---- a/grub-core/loader/i386/xnu.c
-+++ b/grub-core/loader/i386/xnu.c
-@@ -295,7 +295,7 @@ grub_xnu_devprop_add_property_utf8 (struct grub_xnu_devprop_device_descriptor *d
-     return grub_errno;
- 
-   len = grub_strlen (name);
--  utf16 = grub_malloc (sizeof (grub_uint16_t) * len);
-+  utf16 = grub_calloc (len, sizeof (grub_uint16_t));
-   if (!utf16)
-     {
-       grub_free (utf8);
-@@ -331,7 +331,7 @@ grub_xnu_devprop_add_property_utf16 (struct grub_xnu_devprop_device_descriptor *
-   grub_uint16_t *utf16;
-   grub_err_t err;
- 
--  utf16 = grub_malloc (sizeof (grub_uint16_t) * namelen);
-+  utf16 = grub_calloc (namelen, sizeof (grub_uint16_t));
-   if (!utf16)
-     return grub_errno;
-   grub_memcpy (utf16, name, sizeof (grub_uint16_t) * namelen);
-diff --git a/grub-core/loader/macho.c b/grub-core/loader/macho.c
-index 085f9c6..05710c4 100644
---- a/grub-core/loader/macho.c
-+++ b/grub-core/loader/macho.c
-@@ -97,7 +97,7 @@ grub_macho_file (grub_file_t file, const char *filename, int is_64bit)
-       if (grub_file_seek (macho->file, sizeof (struct grub_macho_fat_header))
- 	  == (grub_off_t) -1)
- 	goto fail;
--      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
-+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
-       if (!archs)
- 	goto fail;
-       if (grub_file_read (macho->file, archs,
-diff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
-index 70cd1db..cc68536 100644
---- a/grub-core/loader/multiboot_elfxx.c
-+++ b/grub-core/loader/multiboot_elfxx.c
-@@ -217,7 +217,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
-     {
-       grub_uint8_t *shdr, *shdrptr;
- 
--      shdr = grub_malloc ((grub_uint32_t) ehdr->e_shnum * ehdr->e_shentsize);
-+      shdr = grub_calloc (ehdr->e_shnum, ehdr->e_shentsize);
-       if (!shdr)
- 	return grub_errno;
-       
-diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
-index 7f74d1d..77d7060 100644
---- a/grub-core/loader/xnu.c
-+++ b/grub-core/loader/xnu.c
-@@ -800,7 +800,7 @@ grub_cmd_xnu_mkext (grub_command_t cmd __attribute__ ((unused)),
-   if (grub_be_to_cpu32 (head.magic) == GRUB_MACHO_FAT_MAGIC)
-     {
-       narchs = grub_be_to_cpu32 (head.nfat_arch);
--      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
-+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
-       if (! archs)
- 	{
- 	  grub_file_close (file);
-diff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c
-index 6a31cba..57b4e9a 100644
---- a/grub-core/mmap/mmap.c
-+++ b/grub-core/mmap/mmap.c
-@@ -143,9 +143,9 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
- 
-   /* Initialize variables. */
-   ctx.scanline_events = (struct grub_mmap_scan *)
--    grub_malloc (sizeof (struct grub_mmap_scan) * 2 * mmap_num);
-+    grub_calloc (mmap_num, sizeof (struct grub_mmap_scan) * 2);
- 
--  present = grub_zalloc (sizeof (present[0]) * current_priority);
-+  present = grub_calloc (current_priority, sizeof (present[0]));
- 
-   if (! ctx.scanline_events || !present)
-     {
-diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
-index 04cfbb0..6539572 100644
---- a/grub-core/net/bootp.c
-+++ b/grub-core/net/bootp.c
-@@ -766,7 +766,7 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),
-   if (ncards == 0)
-     return grub_error (GRUB_ERR_NET_NO_CARD, N_("no network card found"));
- 
--  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
-+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
-   if (!ifaces)
-     return grub_errno;
- 
-diff --git a/grub-core/net/dns.c b/grub-core/net/dns.c
-index 5d9afe0..e332d5e 100644
---- a/grub-core/net/dns.c
-+++ b/grub-core/net/dns.c
-@@ -285,8 +285,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
-       ptr++;
-       ptr += 4;
-     }
--  *data->addresses = grub_malloc (sizeof ((*data->addresses)[0])
--				 * grub_be_to_cpu16 (head->ancount));
-+  *data->addresses = grub_calloc (grub_be_to_cpu16 (head->ancount),
-+				  sizeof ((*data->addresses)[0]));
-   if (!*data->addresses)
-     {
-       grub_errno = GRUB_ERR_NONE;
-@@ -406,8 +406,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
-       dns_cache[h].addresses = 0;
-       dns_cache[h].name = grub_strdup (data->oname);
-       dns_cache[h].naddresses = *data->naddresses;
--      dns_cache[h].addresses = grub_malloc (*data->naddresses
--					    * sizeof (dns_cache[h].addresses[0]));
-+      dns_cache[h].addresses = grub_calloc (*data->naddresses,
-+					    sizeof (dns_cache[h].addresses[0]));
-       dns_cache[h].limit_time = grub_get_time_ms () + 1000 * ttl_all;
-       if (!dns_cache[h].addresses || !dns_cache[h].name)
- 	{
-@@ -479,7 +479,7 @@ grub_net_dns_lookup (const char *name,
- 	}
-     }
- 
--  sockets = grub_malloc (sizeof (sockets[0]) * n_servers);
-+  sockets = grub_calloc (n_servers, sizeof (sockets[0]));
-   if (!sockets)
-     return grub_errno;
- 
-diff --git a/grub-core/net/net.c b/grub-core/net/net.c
-index d5d726a..38f19df 100644
---- a/grub-core/net/net.c
-+++ b/grub-core/net/net.c
-@@ -333,8 +333,8 @@ grub_cmd_ipv6_autoconf (struct grub_command *cmd __attribute__ ((unused)),
-     ncards++;
-   }
- 
--  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
--  slaacs = grub_zalloc (ncards * sizeof (slaacs[0]));
-+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
-+  slaacs = grub_calloc (ncards, sizeof (slaacs[0]));
-   if (!ifaces || !slaacs)
-     {
-       grub_free (ifaces);
-diff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
-index b0ab47d..d57fb72 100644
---- a/grub-core/normal/charset.c
-+++ b/grub-core/normal/charset.c
-@@ -203,7 +203,7 @@ grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,
- {
-   grub_size_t msg_len = grub_strlen (msg);
- 
--  *unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+  *unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
-  
-   if (!*unicode_msg)
-     return -1;
-@@ -488,7 +488,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- 	    }
- 	  else
- 	    {
--	      n = grub_malloc (sizeof (n[0]) * (out->ncomb + 1));
-+	      n = grub_calloc (out->ncomb + 1, sizeof (n[0]));
- 	      if (!n)
- 		{
- 		  grub_errno = GRUB_ERR_NONE;
-@@ -842,7 +842,7 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t *logical,
-       }							\
-   }
- 
--  visual = grub_malloc (sizeof (visual[0]) * logical_len);
-+  visual = grub_calloc (logical_len, sizeof (visual[0]));
-   if (!visual)
-     return -1;
- 
-@@ -1165,8 +1165,8 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,
- {
-   const grub_uint32_t *line_start = logical, *ptr;
-   struct grub_unicode_glyph *visual_ptr;
--  *visual_out = visual_ptr = grub_malloc (3 * sizeof (visual_ptr[0])
--					  * (logical_len + 2));
-+  *visual_out = visual_ptr = grub_calloc (logical_len + 2,
-+					  3 * sizeof (visual_ptr[0]));
-   if (!visual_ptr)
-     return -1;
-   for (ptr = logical; ptr <= logical + logical_len; ptr++)
-diff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c
-index c037d50..c57242e 100644
---- a/grub-core/normal/cmdline.c
-+++ b/grub-core/normal/cmdline.c
-@@ -41,7 +41,7 @@ grub_err_t
- grub_set_history (int newsize)
- {
-   grub_uint32_t **old_hist_lines = hist_lines;
--  hist_lines = grub_malloc (sizeof (grub_uint32_t *) * newsize);
-+  hist_lines = grub_calloc (newsize, sizeof (grub_uint32_t *));
- 
-   /* Copy the old lines into the new buffer.  */
-   if (old_hist_lines)
-@@ -114,7 +114,7 @@ static void
- grub_history_set (int pos, grub_uint32_t *s, grub_size_t len)
- {
-   grub_free (hist_lines[pos]);
--  hist_lines[pos] = grub_malloc ((len + 1) * sizeof (grub_uint32_t));
-+  hist_lines[pos] = grub_calloc (len + 1, sizeof (grub_uint32_t));
-   if (!hist_lines[pos])
-     {
-       grub_print_error ();
-@@ -349,7 +349,7 @@ grub_cmdline_get (const char *prompt_translated)
-   char *ret;
-   unsigned nterms;
- 
--  buf = grub_malloc (max_len * sizeof (grub_uint32_t));
-+  buf = grub_calloc (max_len, sizeof (grub_uint32_t));
-   if (!buf)
-     return 0;
- 
-@@ -377,7 +377,7 @@ grub_cmdline_get (const char *prompt_translated)
-     FOR_ACTIVE_TERM_OUTPUTS(cur)
-       nterms++;
- 
--    cl_terms = grub_malloc (sizeof (cl_terms[0]) * nterms);
-+    cl_terms = grub_calloc (nterms, sizeof (cl_terms[0]));
-     if (!cl_terms)
-       {
- 	grub_free (buf);
-@@ -385,7 +385,7 @@ grub_cmdline_get (const char *prompt_translated)
-       }
-     cl_term_cur = cl_terms;
- 
--    unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+    unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
-     if (!unicode_msg)
-       {
- 	grub_free (buf);
-@@ -495,7 +495,7 @@ grub_cmdline_get (const char *prompt_translated)
- 		grub_uint32_t *insert;
- 
- 		insertlen = grub_strlen (insertu8);
--		insert = grub_malloc ((insertlen + 1) * sizeof (grub_uint32_t));
-+		insert = grub_calloc (insertlen + 1, sizeof (grub_uint32_t));
- 		if (!insert)
- 		  {
- 		    grub_free (insertu8);
-@@ -602,7 +602,7 @@ grub_cmdline_get (const char *prompt_translated)
- 
- 	      grub_free (kill_buf);
- 
--	      kill_buf = grub_malloc ((n + 1) * sizeof(grub_uint32_t));
-+	      kill_buf = grub_calloc (n + 1, sizeof (grub_uint32_t));
- 	      if (grub_errno)
- 		{
- 		  grub_print_error ();
-diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
-index cdf3590..1993995 100644
---- a/grub-core/normal/menu_entry.c
-+++ b/grub-core/normal/menu_entry.c
-@@ -95,8 +95,8 @@ init_line (struct screen *screen, struct line *linep)
- {
-   linep->len = 0;
-   linep->max_len = 80;
--  linep->buf = grub_malloc ((linep->max_len + 1) * sizeof (linep->buf[0]));
--  linep->pos = grub_zalloc (screen->nterms * sizeof (linep->pos[0]));
-+  linep->buf = grub_calloc (linep->max_len + 1, sizeof (linep->buf[0]));
-+  linep->pos = grub_calloc (screen->nterms, sizeof (linep->pos[0]));
-   if (! linep->buf || !linep->pos)
-     {
-       grub_free (linep->buf);
-@@ -287,7 +287,7 @@ update_screen (struct screen *screen, struct per_term_screen *term_screen,
- 	  pos = linep->pos + (term_screen - screen->terms);
- 
- 	  if (!*pos)
--	    *pos = grub_zalloc ((linep->len + 1) * sizeof (**pos));
-+	    *pos = grub_calloc (linep->len + 1, sizeof (**pos));
- 
- 	  if (i == region_start || linep == screen->lines + screen->line
- 	      || (i > region_start && mode == ALL_LINES))
-@@ -471,7 +471,7 @@ insert_string (struct screen *screen, const char *s, int update)
- 
- 	  /* Insert the string.  */
- 	  current_linep = screen->lines + screen->line;
--	  unicode_msg = grub_malloc ((p - s) * sizeof (grub_uint32_t));
-+	  unicode_msg = grub_calloc (p - s, sizeof (grub_uint32_t));
- 
- 	  if (!unicode_msg)
- 	    return 0;
-@@ -1023,7 +1023,7 @@ complete (struct screen *screen, int continuous, int update)
-   if (completion_buffer.buf)
-     {
-       buflen = grub_strlen (completion_buffer.buf);
--      ucs4 = grub_malloc (sizeof (grub_uint32_t) * (buflen + 1));
-+      ucs4 = grub_calloc (buflen + 1, sizeof (grub_uint32_t));
-       
-       if (!ucs4)
- 	{
-@@ -1268,7 +1268,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
-   for (i = 0; i < (unsigned) screen->num_lines; i++)
-     {
-       grub_free (screen->lines[i].pos);
--      screen->lines[i].pos = grub_zalloc (screen->nterms * sizeof (screen->lines[i].pos[0]));
-+      screen->lines[i].pos = grub_calloc (screen->nterms, sizeof (screen->lines[i].pos[0]));
-       if (! screen->lines[i].pos)
- 	{
- 	  grub_print_error ();
-@@ -1278,7 +1278,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
- 	}
-     }
- 
--  screen->terms = grub_zalloc (screen->nterms * sizeof (screen->terms[0]));
-+  screen->terms = grub_calloc (screen->nterms, sizeof (screen->terms[0]));
-   if (!screen->terms)
-     {
-       grub_print_error ();
-diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
-index e22bb91..18240e7 100644
---- a/grub-core/normal/menu_text.c
-+++ b/grub-core/normal/menu_text.c
-@@ -78,7 +78,7 @@ grub_print_message_indented_real (const char *msg, int margin_left,
-   grub_size_t msg_len = grub_strlen (msg) + 2;
-   int ret = 0;
- 
--  unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+  unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
-  
-   if (!unicode_msg)
-     return 0;
-@@ -211,7 +211,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,
- 
-   title = entry ? entry->title : "";
-   title_len = grub_strlen (title);
--  unicode_title = grub_malloc (title_len * sizeof (*unicode_title));
-+  unicode_title = grub_calloc (title_len, sizeof (*unicode_title));
-   if (! unicode_title)
-     /* XXX How to show this error?  */
-     return;
-diff --git a/grub-core/normal/term.c b/grub-core/normal/term.c
-index a1e5c5a..cc8c173 100644
---- a/grub-core/normal/term.c
-+++ b/grub-core/normal/term.c
-@@ -264,7 +264,7 @@ grub_term_save_pos (void)
-   FOR_ACTIVE_TERM_OUTPUTS(cur)
-     cnt++;
- 
--  ret = grub_malloc (cnt * sizeof (ret[0]));
-+  ret = grub_calloc (cnt, sizeof (ret[0]));
-   if (!ret)
-     return NULL;
- 
-@@ -1013,7 +1013,7 @@ grub_xnputs (const char *str, grub_size_t msg_len)
- 
-   grub_error_push ();
- 
--  unicode_str = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+  unicode_str = grub_calloc (msg_len, sizeof (grub_uint32_t));
-  
-   grub_error_pop ();
- 
-diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
-index 90d92d3..5b41ad0 100644
---- a/grub-core/osdep/linux/getroot.c
-+++ b/grub-core/osdep/linux/getroot.c
-@@ -168,7 +168,7 @@ grub_util_raid_getmembers (const char *name, int bootable)
-   if (ret != 0)
-     grub_util_error (_("ioctl GET_ARRAY_INFO error: %s"), strerror (errno));
- 
--  devicelist = xmalloc ((info.nr_disks + 1) * sizeof (char *));
-+  devicelist = xcalloc (info.nr_disks + 1, sizeof (char *));
- 
-   for (i = 0, j = 0; j < info.nr_disks; i++)
-     {
-@@ -241,7 +241,7 @@ grub_find_root_devices_from_btrfs (const char *dir)
-       return NULL;
-     }
- 
--  ret = xmalloc ((fsi.num_devices + 1) * sizeof (ret[0]));
-+  ret = xcalloc (fsi.num_devices + 1, sizeof (ret[0]));
- 
-   for (i = 1; i <= fsi.max_id && j < fsi.num_devices; i++)
-     {
-@@ -396,7 +396,7 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
-   if (relroot)
-     *relroot = NULL;
- 
--  entries = xmalloc (entry_max * sizeof (*entries));
-+  entries = xcalloc (entry_max, sizeof (*entries));
- 
- again:
-   fp = grub_util_fopen ("/proc/self/mountinfo", "r");
-diff --git a/grub-core/osdep/unix/config.c b/grub-core/osdep/unix/config.c
-index 65effa9..7d63251 100644
---- a/grub-core/osdep/unix/config.c
-+++ b/grub-core/osdep/unix/config.c
-@@ -89,7 +89,7 @@ grub_util_load_config (struct grub_util_config *cfg)
-   argv[0] = "sh";
-   argv[1] = "-c";
- 
--  script = xmalloc (4 * strlen (cfgfile) + 300);
-+  script = xcalloc (4, strlen (cfgfile) + 300);
- 
-   ptr = script;
-   memcpy (ptr, ". '", 3);
-diff --git a/grub-core/osdep/windows/getroot.c b/grub-core/osdep/windows/getroot.c
-index 661d954..eada663 100644
---- a/grub-core/osdep/windows/getroot.c
-+++ b/grub-core/osdep/windows/getroot.c
-@@ -59,7 +59,7 @@ grub_get_mount_point (const TCHAR *path)
- 
-   for (ptr = path; *ptr; ptr++);
-   allocsize = (ptr - path + 10) * 2;
--  out = xmalloc (allocsize * sizeof (out[0]));
-+  out = xcalloc (allocsize, sizeof (out[0]));
- 
-   /* When pointing to EFI system partition GetVolumePathName fails
-      for ESP root and returns abberant information for everything
-diff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c
-index 3551007..0be3273 100644
---- a/grub-core/osdep/windows/hostdisk.c
-+++ b/grub-core/osdep/windows/hostdisk.c
-@@ -111,7 +111,7 @@ grub_util_get_windows_path_real (const char *path)
- 
-   while (1)
-     {
--      fpa = xmalloc (alloc * sizeof (fpa[0]));
-+      fpa = xcalloc (alloc, sizeof (fpa[0]));
- 
-       len = GetFullPathName (tpath, alloc, fpa, NULL);
-       if (len >= alloc)
-@@ -399,7 +399,7 @@ grub_util_fd_opendir (const char *name)
-   for (l = 0; name_windows[l]; l++);
-   for (l--; l >= 0 && (name_windows[l] == '\\' || name_windows[l] == '/'); l--);
-   l++;
--  pattern = xmalloc ((l + 3) * sizeof (pattern[0]));
-+  pattern = xcalloc (l + 3, sizeof (pattern[0]));
-   memcpy (pattern, name_windows, l * sizeof (pattern[0]));
-   pattern[l] = '\\';
-   pattern[l + 1] = '*';
-diff --git a/grub-core/osdep/windows/init.c b/grub-core/osdep/windows/init.c
-index e8ffd62..6297de6 100644
---- a/grub-core/osdep/windows/init.c
-+++ b/grub-core/osdep/windows/init.c
-@@ -161,7 +161,7 @@ grub_util_host_init (int *argc __attribute__ ((unused)),
-   LPWSTR *targv;
- 
-   targv = CommandLineToArgvW (tcmdline, argc);
--  *argv = xmalloc ((*argc + 1) * sizeof (argv[0]));
-+  *argv = xcalloc (*argc + 1, sizeof (argv[0]));
- 
-   for (i = 0; i < *argc; i++)
-     (*argv)[i] = grub_util_tchar_to_utf8 (targv[i]); 
-diff --git a/grub-core/osdep/windows/platform.c b/grub-core/osdep/windows/platform.c
-index 7eb53fe..1ef86bf 100644
---- a/grub-core/osdep/windows/platform.c
-+++ b/grub-core/osdep/windows/platform.c
-@@ -225,8 +225,8 @@ grub_install_register_efi (grub_device_t efidir_grub_dev,
-     grub_util_error ("%s", _("no EFI routines are available when running in BIOS mode"));
- 
-   distrib8_len = grub_strlen (efi_distributor);
--  distributor16 = xmalloc ((distrib8_len + 1) * GRUB_MAX_UTF16_PER_UTF8
--			   * sizeof (grub_uint16_t));
-+  distributor16 = xcalloc (distrib8_len + 1,
-+			   GRUB_MAX_UTF16_PER_UTF8 * sizeof (grub_uint16_t));
-   distrib16_len = grub_utf8_to_utf16 (distributor16, distrib8_len * GRUB_MAX_UTF16_PER_UTF8,
- 				      (const grub_uint8_t *) efi_distributor,
- 				      distrib8_len, 0);
-diff --git a/grub-core/osdep/windows/relpath.c b/grub-core/osdep/windows/relpath.c
-index cb08617..478e8ef 100644
---- a/grub-core/osdep/windows/relpath.c
-+++ b/grub-core/osdep/windows/relpath.c
-@@ -72,7 +72,7 @@ grub_make_system_path_relative_to_its_root (const char *path)
-       if (dirwindows[0] && dirwindows[1] == ':')
- 	offset = 2;
-     }
--  ret = xmalloc (sizeof (ret[0]) * (flen - offset + 2));
-+  ret = xcalloc (flen - offset + 2, sizeof (ret[0]));
-   if (dirwindows[offset] != '\\'
-       && dirwindows[offset] != '/'
-       && dirwindows[offset])
-diff --git a/grub-core/partmap/gpt.c b/grub-core/partmap/gpt.c
-index 103f679..72a2e37 100644
---- a/grub-core/partmap/gpt.c
-+++ b/grub-core/partmap/gpt.c
-@@ -199,7 +199,7 @@ gpt_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
-   *nsectors = ctx.len;
-   if (*nsectors > max_nsectors)
-     *nsectors = max_nsectors;
--  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));
-   if (!*sectors)
-     return grub_errno;
-   for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/partmap/msdos.c b/grub-core/partmap/msdos.c
-index 7b8e450..ee3f249 100644
---- a/grub-core/partmap/msdos.c
-+++ b/grub-core/partmap/msdos.c
-@@ -337,7 +337,7 @@ pc_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
-       avail_nsectors = *nsectors;
-       if (*nsectors > max_nsectors)
- 	*nsectors = max_nsectors;
--      *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));
-       if (!*sectors)
- 	return grub_errno;
-       for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
-index ee299fd..c8d6806 100644
---- a/grub-core/script/execute.c
-+++ b/grub-core/script/execute.c
-@@ -553,7 +553,7 @@ gettext_append (struct grub_script_argv *result, const char *orig_str)
-   for (iptr = orig_str; *iptr; iptr++)
-     if (*iptr == '$')
-       dollar_cnt++;
--  ctx.allowed_strings = grub_malloc (sizeof (ctx.allowed_strings[0]) * dollar_cnt);
-+  ctx.allowed_strings = grub_calloc (dollar_cnt, sizeof (ctx.allowed_strings[0]));
- 
-   if (parse_string (orig_str, gettext_save_allow, &ctx, 0))
-     goto fail;
-diff --git a/grub-core/tests/fake_input.c b/grub-core/tests/fake_input.c
-index 2d60852..b5eb516 100644
---- a/grub-core/tests/fake_input.c
-+++ b/grub-core/tests/fake_input.c
-@@ -49,7 +49,7 @@ grub_terminal_input_fake_sequence (int *seq_in, int nseq_in)
-     saved = grub_term_inputs;
-   if (seq)
-     grub_free (seq);
--  seq = grub_malloc (nseq_in * sizeof (seq[0]));
-+  seq = grub_calloc (nseq_in, sizeof (seq[0]));
-   if (!seq)
-     return;
- 
-diff --git a/grub-core/tests/video_checksum.c b/grub-core/tests/video_checksum.c
-index 74d5b65..44d0810 100644
---- a/grub-core/tests/video_checksum.c
-+++ b/grub-core/tests/video_checksum.c
-@@ -336,7 +336,7 @@ grub_video_capture_write_bmp (const char *fname,
-     {
-     case 4:
-       {
--	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- 	grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
- 	grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
- 	grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-@@ -367,7 +367,7 @@ grub_video_capture_write_bmp (const char *fname,
-       }
-     case 3:
-       {
--	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- 	grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
- 	grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
- 	grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-@@ -407,7 +407,7 @@ grub_video_capture_write_bmp (const char *fname,
-       }
-     case 2:
-       {
--	grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+	grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- 	grub_uint16_t rmask = ((1 << mode_info->red_mask_size) - 1);
- 	grub_uint16_t gmask = ((1 << mode_info->green_mask_size) - 1);
- 	grub_uint16_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
-index 4f83c74..4d3195e 100644
---- a/grub-core/video/capture.c
-+++ b/grub-core/video/capture.c
-@@ -89,7 +89,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info,
-   framebuffer.mode_info = *mode_info;
-   framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info);
- 
--  framebuffer.ptr = grub_malloc (framebuffer.mode_info.height * framebuffer.mode_info.pitch);
-+  framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch);
-   if (!framebuffer.ptr)
-     return grub_errno;
-   
-diff --git a/grub-core/video/emu/sdl.c b/grub-core/video/emu/sdl.c
-index a2f639f..0ebab6f 100644
---- a/grub-core/video/emu/sdl.c
-+++ b/grub-core/video/emu/sdl.c
-@@ -172,7 +172,7 @@ grub_video_sdl_set_palette (unsigned int start, unsigned int count,
-       if (start + count > mode_info.number_of_colors)
- 	count = mode_info.number_of_colors - start;
- 
--      tmp = grub_malloc (count * sizeof (tmp[0]));
-+      tmp = grub_calloc (count, sizeof (tmp[0]));
-       for (i = 0; i < count; i++)
- 	{
- 	  tmp[i].r = palette_data[i].r;
-diff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c
-index 01f4711..b2f776c 100644
---- a/grub-core/video/i386/pc/vga.c
-+++ b/grub-core/video/i386/pc/vga.c
-@@ -127,7 +127,7 @@ grub_video_vga_setup (unsigned int width, unsigned int height,
- 
-   vga_height = height ? : 480;
- 
--  framebuffer.temporary_buffer = grub_malloc (vga_height * VGA_WIDTH);
-+  framebuffer.temporary_buffer = grub_calloc (vga_height, VGA_WIDTH);
-   framebuffer.front_page = 0;
-   framebuffer.back_page = 0;
-   if (!framebuffer.temporary_buffer)
-diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
-index 777e713..61bd645 100644
---- a/grub-core/video/readers/png.c
-+++ b/grub-core/video/readers/png.c
-@@ -309,7 +309,7 @@ grub_png_decode_image_header (struct grub_png_data *data)
-   if (data->is_16bit || data->is_gray || data->is_palette)
- #endif
-     {
--      data->image_data = grub_malloc (data->image_height * data->row_bytes);
-+      data->image_data = grub_calloc (data->image_height, data->row_bytes);
-       if (grub_errno)
-         return grub_errno;
- 
-diff --git a/include/grub/unicode.h b/include/grub/unicode.h
-index a0403e9..4de986a 100644
---- a/include/grub/unicode.h
-+++ b/include/grub/unicode.h
-@@ -293,7 +293,7 @@ grub_unicode_glyph_dup (const struct grub_unicode_glyph *in)
-   grub_memcpy (out, in, sizeof (*in));
-   if (in->ncomb > ARRAY_SIZE (out->combining_inline))
-     {
--      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
-+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
-       if (!out->combining_ptr)
- 	{
- 	  grub_free (out);
-@@ -315,7 +315,7 @@ grub_unicode_set_glyph (struct grub_unicode_glyph *out,
-   grub_memcpy (out, in, sizeof (*in));
-   if (in->ncomb > ARRAY_SIZE (out->combining_inline))
-     {
--      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
-+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
-       if (!out->combining_ptr)
- 	return;
-       grub_memcpy (out->combining_ptr, in->combining_ptr,
-diff --git a/util/getroot.c b/util/getroot.c
-index 847406f..a5eaa64 100644
---- a/util/getroot.c
-+++ b/util/getroot.c
-@@ -200,7 +200,7 @@ make_device_name (const char *drive)
-   char *ret, *ptr;
-   const char *iptr;
- 
--  ret = xmalloc (strlen (drive) * 2);
-+  ret = xcalloc (2, strlen (drive));
-   ptr = ret;
-   for (iptr = drive; *iptr; iptr++)
-     {
-diff --git a/util/grub-file.c b/util/grub-file.c
-index 50c18b6..b2e7dd6 100644
---- a/util/grub-file.c
-+++ b/util/grub-file.c
-@@ -54,7 +54,7 @@ main (int argc, char *argv[])
- 
-   grub_util_host_init (&argc, &argv);
- 
--  argv2 = xmalloc (argc * sizeof (argv2[0]));
-+  argv2 = xcalloc (argc, sizeof (argv2[0]));
- 
-   if (argc == 2 && strcmp (argv[1], "--version") == 0)
-     {
-diff --git a/util/grub-fstest.c b/util/grub-fstest.c
-index f14e02d..57246af 100644
---- a/util/grub-fstest.c
-+++ b/util/grub-fstest.c
-@@ -650,7 +650,7 @@ argp_parser (int key, char *arg, struct argp_state *state)
-   if (args_count < num_disks)
-     {
-       if (args_count == 0)
--	images = xmalloc (num_disks * sizeof (images[0]));
-+	images = xcalloc (num_disks, sizeof (images[0]));
-       images[args_count] = grub_canonicalize_file_name (arg);
-       args_count++;
-       return 0;
-@@ -734,7 +734,7 @@ main (int argc, char *argv[])
- 
-   grub_util_host_init (&argc, &argv);
- 
--  args = xmalloc (argc * sizeof (args[0]));
-+  args = xcalloc (argc, sizeof (args[0]));
- 
-   argp_parse (&argp, argc, argv, 0, 0, 0);
- 
-diff --git a/util/grub-install-common.c b/util/grub-install-common.c
-index ca0ac61..0295d40 100644
---- a/util/grub-install-common.c
-+++ b/util/grub-install-common.c
-@@ -286,7 +286,7 @@ handle_install_list (struct install_list *il, const char *val,
-       il->n_entries++;
-     }
-   il->n_alloc = il->n_entries + 1;
--  il->entries = xmalloc (il->n_alloc * sizeof (il->entries[0]));
-+  il->entries = xcalloc (il->n_alloc, sizeof (il->entries[0]));
-   ptr = val;
-   for (ce = il->entries; ; ce++)
-     {
-diff --git a/util/grub-install.c b/util/grub-install.c
-index 8a55ad4..a82725f 100644
---- a/util/grub-install.c
-+++ b/util/grub-install.c
-@@ -626,7 +626,7 @@ device_map_check_duplicates (const char *dev_map)
-   if (! fp)
-     return;
- 
--  d = xmalloc (alloced * sizeof (d[0]));
-+  d = xcalloc (alloced, sizeof (d[0]));
- 
-   while (fgets (buf, sizeof (buf), fp))
-     {
-@@ -1260,7 +1260,7 @@ main (int argc, char *argv[])
-       ndev++;
-     }
- 
--  grub_drives = xmalloc (sizeof (grub_drives[0]) * (ndev + 1)); 
-+  grub_drives = xcalloc (ndev + 1, sizeof (grub_drives[0]));
- 
-   for (curdev = grub_devices, curdrive = grub_drives; *curdev; curdev++,
-        curdrive++)
-diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
-index bc087c2..d97d0e7 100644
---- a/util/grub-mkimagexx.c
-+++ b/util/grub-mkimagexx.c
-@@ -2294,10 +2294,8 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
- 		      + grub_host_to_target16 (e->e_shstrndx) * smd.section_entsize);
-   smd.strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
- 
--  smd.addrs = xmalloc (sizeof (*smd.addrs) * smd.num_sections);
--  memset (smd.addrs, 0, sizeof (*smd.addrs) * smd.num_sections);
--  smd.vaddrs = xmalloc (sizeof (*smd.vaddrs) * smd.num_sections);
--  memset (smd.vaddrs, 0, sizeof (*smd.vaddrs) * smd.num_sections);
-+  smd.addrs = xcalloc (smd.num_sections, sizeof (*smd.addrs));
-+  smd.vaddrs = xcalloc (smd.num_sections, sizeof (*smd.vaddrs));
- 
-   SUFFIX (locate_sections) (e, kernel_path, &smd, layout, image_target);
- 
-diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
-index ce2cbc4..5183102 100644
---- a/util/grub-mkrescue.c
-+++ b/util/grub-mkrescue.c
-@@ -441,8 +441,8 @@ main (int argc, char *argv[])
-   xorriso = xstrdup ("xorriso");
-   label_font = grub_util_path_concat (2, pkgdatadir, "unicode.pf2");
- 
--  argp_argv = xmalloc (sizeof (argp_argv[0]) * argc);
--  xorriso_tail_argv = xmalloc (sizeof (argp_argv[0]) * argc);
-+  argp_argv = xcalloc (argc, sizeof (argp_argv[0]));
-+  xorriso_tail_argv = xcalloc (argc, sizeof (argp_argv[0]));
- 
-   xorriso_tail_argc = 0;
-   /* Program name */
-diff --git a/util/grub-mkstandalone.c b/util/grub-mkstandalone.c
-index 4907d44..edf3097 100644
---- a/util/grub-mkstandalone.c
-+++ b/util/grub-mkstandalone.c
-@@ -296,7 +296,7 @@ main (int argc, char *argv[])
-   grub_util_host_init (&argc, &argv);
-   grub_util_disable_fd_syncs ();
- 
--  files = xmalloc ((argc + 1) * sizeof (files[0]));
-+  files = xcalloc (argc + 1, sizeof (files[0]));
- 
-   argp_parse (&argp, argc, argv, 0, 0, 0);
- 
-diff --git a/util/grub-pe2elf.c b/util/grub-pe2elf.c
-index 0d4084a..1133129 100644
---- a/util/grub-pe2elf.c
-+++ b/util/grub-pe2elf.c
-@@ -100,9 +100,9 @@ write_section_data (FILE* fp, const char *name, char *image,
-   char *pe_strtab = (image + pe_chdr->symtab_offset
- 		     + pe_chdr->num_symbols * sizeof (struct grub_pe32_symbol));
- 
--  section_map = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (int));
-+  section_map = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (int));
-   section_map[0] = 0;
--  shdr = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (shdr[0]));
-+  shdr = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (shdr[0]));
-   idx = 1;
-   idx_reloc = pe_chdr->num_sections + 1;
- 
-@@ -233,7 +233,7 @@ write_reloc_section (FILE* fp, const char *name, char *image,
- 
-       pe_sec = pe_shdr + shdr[i].sh_link;
-       pe_rel = (struct grub_pe32_reloc *) (image + pe_sec->relocations_offset);
--      rel = (elf_reloc_t *) xmalloc (pe_sec->num_relocations * sizeof (elf_reloc_t));
-+      rel = (elf_reloc_t *) xcalloc (pe_sec->num_relocations, sizeof (elf_reloc_t));
-       num_rels = 0;
-       modified = 0;
- 
-@@ -365,12 +365,10 @@ write_symbol_table (FILE* fp, const char *name, char *image,
-   pe_symtab = (struct grub_pe32_symbol *) (image + pe_chdr->symtab_offset);
-   pe_strtab = (char *) (pe_symtab + pe_chdr->num_symbols);
- 
--  symtab = (Elf_Sym *) xmalloc ((pe_chdr->num_symbols + 1) *
--				sizeof (Elf_Sym));
--  memset (symtab, 0, (pe_chdr->num_symbols + 1) * sizeof (Elf_Sym));
-+  symtab = (Elf_Sym *) xcalloc (pe_chdr->num_symbols + 1, sizeof (Elf_Sym));
-   num_syms = 1;
- 
--  symtab_map = (int *) xmalloc (pe_chdr->num_symbols * sizeof (int));
-+  symtab_map = (int *) xcalloc (pe_chdr->num_symbols, sizeof (int));
- 
-   for (i = 0; i < (int) pe_chdr->num_symbols;
-        i += pe_symtab->num_aux + 1, pe_symtab += pe_symtab->num_aux + 1)
-diff --git a/util/grub-probe.c b/util/grub-probe.c
-index 81d27ee..cbe6ed9 100644
---- a/util/grub-probe.c
-+++ b/util/grub-probe.c
-@@ -361,8 +361,8 @@ probe (const char *path, char **device_names, char delim)
-       grub_util_pull_device (*curdev);
-       ndev++;
-     }
--  
--  drives_names = xmalloc (sizeof (drives_names[0]) * (ndev + 1)); 
-+
-+  drives_names = xcalloc (ndev + 1, sizeof (drives_names[0]));
- 
-   for (curdev = device_names, curdrive = drives_names; *curdev; curdev++,
-        curdrive++)
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch
deleted file mode 100644
index 7214ead..0000000
--- a/poky/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch
+++ /dev/null
@@ -1,1330 +0,0 @@
-From eb77d1ef65e25746acff43545f62a71360b15eec Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:28:27 -0400
-Subject: [PATCH 6/9] malloc: Use overflow checking primitives where we do
- complex allocations
-
-This attempts to fix the places where we do the following where
-arithmetic_expr may include unvalidated data:
-
-  X = grub_malloc(arithmetic_expr);
-
-It accomplishes this by doing the arithmetic ahead of time using grub_add(),
-grub_sub(), grub_mul() and testing for overflow before proceeding.
-
-Among other issues, this fixes:
-  - allocation of integer overflow in grub_video_bitmap_create()
-    reported by Chris Coulson,
-  - allocation of integer overflow in grub_png_decode_image_header()
-    reported by Chris Coulson,
-  - allocation of integer overflow in grub_squash_read_symlink()
-    reported by Chris Coulson,
-  - allocation of integer overflow in grub_ext2_read_symlink()
-    reported by Chris Coulson,
-  - allocation of integer overflow in read_section_as_string()
-    reported by Chris Coulson.
-
-Fixes: CVE-2020-14309, CVE-2020-14310, CVE-2020-14311
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-14309 CVE-2020-14310 CVE-2020-14311
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=3f05d693d1274965ffbe4ba99080dc2c570944c6
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/commands/legacycfg.c | 29 +++++++++++++++++++-----
- grub-core/commands/wildcard.c  | 36 ++++++++++++++++++++++++-----
- grub-core/disk/ldm.c           | 32 ++++++++++++++++++--------
- grub-core/font/font.c          |  7 +++++-
- grub-core/fs/btrfs.c           | 28 +++++++++++++++--------
- grub-core/fs/ext2.c            | 10 ++++++++-
- grub-core/fs/iso9660.c         | 51 +++++++++++++++++++++++++++++-------------
- grub-core/fs/sfs.c             | 27 +++++++++++++++++-----
- grub-core/fs/squash4.c         | 45 ++++++++++++++++++++++++++++---------
- grub-core/fs/udf.c             | 41 +++++++++++++++++++++------------
- grub-core/fs/xfs.c             | 11 +++++----
- grub-core/fs/zfs/zfs.c         | 22 ++++++++++++------
- grub-core/fs/zfs/zfscrypt.c    |  7 +++++-
- grub-core/lib/arg.c            | 20 +++++++++++++++--
- grub-core/loader/i386/bsd.c    |  8 ++++++-
- grub-core/net/dns.c            |  9 +++++++-
- grub-core/normal/charset.c     | 10 +++++++--
- grub-core/normal/cmdline.c     | 14 ++++++++++--
- grub-core/normal/menu_entry.c  | 13 +++++++++--
- grub-core/script/argv.c        | 16 +++++++++++--
- grub-core/script/lexer.c       | 21 ++++++++++++++---
- grub-core/video/bitmap.c       | 25 +++++++++++++--------
- grub-core/video/readers/png.c  | 13 +++++++++--
- 23 files changed, 382 insertions(+), 113 deletions(-)
-
-diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
-index 5e3ec0d..cc5971f 100644
---- a/grub-core/commands/legacycfg.c
-+++ b/grub-core/commands/legacycfg.c
-@@ -32,6 +32,7 @@
- #include <grub/auth.h>
- #include <grub/disk.h>
- #include <grub/partition.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -104,13 +105,22 @@ legacy_file (const char *filename)
- 	if (newsuffix)
- 	  {
- 	    char *t;
--	    
-+	    grub_size_t sz;
-+
-+	    if (grub_add (grub_strlen (suffix), grub_strlen (newsuffix), &sz) ||
-+		grub_add (sz, 1, &sz))
-+	      {
-+		grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+		goto fail_0;
-+	      }
-+
- 	    t = suffix;
--	    suffix = grub_realloc (suffix, grub_strlen (suffix)
--				   + grub_strlen (newsuffix) + 1);
-+	    suffix = grub_realloc (suffix, sz);
- 	    if (!suffix)
- 	      {
- 		grub_free (t);
-+
-+ fail_0:
- 		grub_free (entrysrc);
- 		grub_free (parsed);
- 		grub_free (newsuffix);
-@@ -154,13 +164,22 @@ legacy_file (const char *filename)
- 	  else
- 	    {
- 	      char *t;
-+	      grub_size_t sz;
-+
-+	      if (grub_add (grub_strlen (entrysrc), grub_strlen (parsed), &sz) ||
-+		  grub_add (sz, 1, &sz))
-+		{
-+		  grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+		  goto fail_1;
-+		}
- 
- 	      t = entrysrc;
--	      entrysrc = grub_realloc (entrysrc, grub_strlen (entrysrc)
--				       + grub_strlen (parsed) + 1);
-+	      entrysrc = grub_realloc (entrysrc, sz);
- 	      if (!entrysrc)
- 		{
- 		  grub_free (t);
-+
-+ fail_1:
- 		  grub_free (parsed);
- 		  grub_free (suffix);
- 		  return grub_errno;
-diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c
-index 4a106ca..cc32903 100644
---- a/grub-core/commands/wildcard.c
-+++ b/grub-core/commands/wildcard.c
-@@ -23,6 +23,7 @@
- #include <grub/file.h>
- #include <grub/device.h>
- #include <grub/script_sh.h>
-+#include <grub/safemath.h>
- 
- #include <regex.h>
- 
-@@ -48,6 +49,7 @@ merge (char **dest, char **ps)
-   int i;
-   int j;
-   char **p;
-+  grub_size_t sz;
- 
-   if (! dest)
-     return ps;
-@@ -60,7 +62,12 @@ merge (char **dest, char **ps)
-   for (j = 0; ps[j]; j++)
-     ;
- 
--  p = grub_realloc (dest, sizeof (char*) * (i + j + 1));
-+  if (grub_add (i, j, &sz) ||
-+      grub_add (sz, 1, &sz) ||
-+      grub_mul (sz, sizeof (char *), &sz))
-+    return dest;
-+
-+  p = grub_realloc (dest, sz);
-   if (! p)
-     {
-       grub_free (dest);
-@@ -115,8 +122,15 @@ make_regex (const char *start, const char *end, regex_t *regexp)
-   char ch;
-   int i = 0;
-   unsigned len = end - start;
--  char *buffer = grub_malloc (len * 2 + 2 + 1); /* worst case size. */
-+  char *buffer;
-+  grub_size_t sz;
- 
-+  /* Worst case size is (len * 2 + 2 + 1). */
-+  if (grub_mul (len, 2, &sz) ||
-+      grub_add (sz, 3, &sz))
-+    return 1;
-+
-+  buffer = grub_malloc (sz);
-   if (! buffer)
-     return 1;
- 
-@@ -226,6 +240,7 @@ match_devices_iter (const char *name, void *data)
-   struct match_devices_ctx *ctx = data;
-   char **t;
-   char *buffer;
-+  grub_size_t sz;
- 
-   /* skip partitions if asked to. */
-   if (ctx->noparts && grub_strchr (name, ','))
-@@ -239,11 +254,16 @@ match_devices_iter (const char *name, void *data)
-   if (regexec (ctx->regexp, buffer, 0, 0, 0))
-     {
-       grub_dprintf ("expand", "not matched\n");
-+ fail:
-       grub_free (buffer);
-       return 0;
-     }
- 
--  t = grub_realloc (ctx->devs, sizeof (char*) * (ctx->ndev + 2));
-+  if (grub_add (ctx->ndev, 2, &sz) ||
-+      grub_mul (sz, sizeof (char *), &sz))
-+    goto fail;
-+
-+  t = grub_realloc (ctx->devs, sz);
-   if (! t)
-     {
-       grub_free (buffer);
-@@ -300,6 +320,7 @@ match_files_iter (const char *name,
-   struct match_files_ctx *ctx = data;
-   char **t;
-   char *buffer;
-+  grub_size_t sz;
- 
-   /* skip . and .. names */
-   if (grub_strcmp(".", name) == 0 || grub_strcmp("..", name) == 0)
-@@ -315,9 +336,14 @@ match_files_iter (const char *name,
-   if (! buffer)
-     return 1;
- 
--  t = grub_realloc (ctx->files, sizeof (char*) * (ctx->nfile + 2));
--  if (! t)
-+  if (grub_add (ctx->nfile, 2, &sz) ||
-+      grub_mul (sz, sizeof (char *), &sz))
-+    goto fail;
-+
-+  t = grub_realloc (ctx->files, sz);
-+  if (!t)
-     {
-+ fail:
-       grub_free (buffer);
-       return 1;
-     }
-diff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
-index e632370..58f8a53 100644
---- a/grub-core/disk/ldm.c
-+++ b/grub-core/disk/ldm.c
-@@ -25,6 +25,7 @@
- #include <grub/msdos_partition.h>
- #include <grub/gpt_partition.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
- 
- #ifdef GRUB_UTIL
- #include <grub/emu/misc.h>
-@@ -289,6 +290,7 @@ make_vg (grub_disk_t disk,
-       struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
- 				/ sizeof (struct grub_ldm_vblk)];
-       unsigned i;
-+      grub_size_t sz;
-       err = grub_disk_read (disk, cursec, 0,
- 			    sizeof(vblk), &vblk);
-       if (err)
-@@ -350,7 +352,13 @@ make_vg (grub_disk_t disk,
- 	      grub_free (lv);
- 	      goto fail2;
- 	    }
--	  lv->name = grub_malloc (*ptr + 1);
-+	  if (grub_add (*ptr, 1, &sz))
-+	    {
-+	      grub_free (lv->internal_id);
-+	      grub_free (lv);
-+	      goto fail2;
-+	    }
-+	  lv->name = grub_malloc (sz);
- 	  if (!lv->name)
- 	    {
- 	      grub_free (lv->internal_id);
-@@ -599,10 +607,13 @@ make_vg (grub_disk_t disk,
- 	  if (lv->segments->node_alloc == lv->segments->node_count)
- 	    {
- 	      void *t;
--	      lv->segments->node_alloc *= 2; 
--	      t = grub_realloc (lv->segments->nodes,
--				sizeof (*lv->segments->nodes)
--				* lv->segments->node_alloc);
-+	      grub_size_t sz;
-+
-+	      if (grub_mul (lv->segments->node_alloc, 2, &lv->segments->node_alloc) ||
-+		  grub_mul (lv->segments->node_alloc, sizeof (*lv->segments->nodes), &sz))
-+		goto fail2;
-+
-+	      t = grub_realloc (lv->segments->nodes, sz);
- 	      if (!t)
- 		goto fail2;
- 	      lv->segments->nodes = t;
-@@ -723,10 +734,13 @@ make_vg (grub_disk_t disk,
- 	      if (comp->segment_alloc == comp->segment_count)
- 		{
- 		  void *t;
--		  comp->segment_alloc *= 2;
--		  t = grub_realloc (comp->segments,
--				    comp->segment_alloc
--				    * sizeof (*comp->segments));
-+		  grub_size_t sz;
-+
-+		  if (grub_mul (comp->segment_alloc, 2, &comp->segment_alloc) ||
-+		      grub_mul (comp->segment_alloc, sizeof (*comp->segments), &sz))
-+		    goto fail2;
-+
-+		  t = grub_realloc (comp->segments, sz);
- 		  if (!t)
- 		    goto fail2;
- 		  comp->segments = t;
-diff --git a/grub-core/font/font.c b/grub-core/font/font.c
-index 8e118b3..5edb477 100644
---- a/grub-core/font/font.c
-+++ b/grub-core/font/font.c
-@@ -30,6 +30,7 @@
- #include <grub/unicode.h>
- #include <grub/fontformat.h>
- #include <grub/env.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -360,9 +361,13 @@ static char *
- read_section_as_string (struct font_file_section *section)
- {
-   char *str;
-+  grub_size_t sz;
-   grub_ssize_t ret;
- 
--  str = grub_malloc (section->length + 1);
-+  if (grub_add (section->length, 1, &sz))
-+    return NULL;
-+
-+  str = grub_malloc (sz);
-   if (!str)
-     return 0;
- 
-diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
-index 11272ef..2b65bd5 100644
---- a/grub-core/fs/btrfs.c
-+++ b/grub-core/fs/btrfs.c
-@@ -40,6 +40,7 @@
- #include <grub/btrfs.h>
- #include <grub/crypto.h>
- #include <grub/diskfilter.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -329,9 +330,13 @@ save_ref (struct grub_btrfs_leaf_descriptor *desc,
-   if (desc->allocated < desc->depth)
-     {
-       void *newdata;
--      desc->allocated *= 2;
--      newdata = grub_realloc (desc->data, sizeof (desc->data[0])
--			      * desc->allocated);
-+      grub_size_t sz;
-+
-+      if (grub_mul (desc->allocated, 2, &desc->allocated) ||
-+	  grub_mul (desc->allocated, sizeof (desc->data[0]), &sz))
-+	return GRUB_ERR_OUT_OF_RANGE;
-+
-+      newdata = grub_realloc (desc->data, sz);
-       if (!newdata)
- 	return grub_errno;
-       desc->data = newdata;
-@@ -622,16 +627,21 @@ find_device (struct grub_btrfs_data *data, grub_uint64_t id)
-   if (data->n_devices_attached > data->n_devices_allocated)
-     {
-       void *tmp;
--      data->n_devices_allocated = 2 * data->n_devices_attached + 1;
--      data->devices_attached
--	= grub_realloc (tmp = data->devices_attached,
--			data->n_devices_allocated
--			* sizeof (data->devices_attached[0]));
-+      grub_size_t sz;
-+
-+      if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||
-+	  grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||
-+	  grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))
-+	goto fail;
-+
-+      data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);
-       if (!data->devices_attached)
- 	{
-+	  data->devices_attached = tmp;
-+
-+ fail:
- 	  if (ctx.dev_found)
- 	    grub_device_close (ctx.dev_found);
--	  data->devices_attached = tmp;
- 	  return NULL;
- 	}
-     }
-diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
-index 9b38980..ac33bcd 100644
---- a/grub-core/fs/ext2.c
-+++ b/grub-core/fs/ext2.c
-@@ -46,6 +46,7 @@
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/fshelp.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -703,6 +704,7 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
- {
-   char *symlink;
-   struct grub_fshelp_node *diro = node;
-+  grub_size_t sz;
- 
-   if (! diro->inode_read)
-     {
-@@ -717,7 +719,13 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
-        }
-     }
- 
--  symlink = grub_malloc (grub_le_to_cpu32 (diro->inode.size) + 1);
-+  if (grub_add (grub_le_to_cpu32 (diro->inode.size), 1, &sz))
-+    {
-+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+      return NULL;
-+    }
-+
-+  symlink = grub_malloc (sz);
-   if (! symlink)
-     return 0;
- 
-diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
-index 4f1b52a..7ba5b30 100644
---- a/grub-core/fs/iso9660.c
-+++ b/grub-core/fs/iso9660.c
-@@ -28,6 +28,7 @@
- #include <grub/fshelp.h>
- #include <grub/charset.h>
- #include <grub/datetime.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -531,8 +532,13 @@ add_part (struct iterate_dir_ctx *ctx,
- 	  int len2)
- {
-   int size = ctx->symlink ? grub_strlen (ctx->symlink) : 0;
-+  grub_size_t sz;
- 
--  ctx->symlink = grub_realloc (ctx->symlink, size + len2 + 1);
-+  if (grub_add (size, len2, &sz) ||
-+      grub_add (sz, 1, &sz))
-+    return;
-+
-+  ctx->symlink = grub_realloc (ctx->symlink, sz);
-   if (! ctx->symlink)
-     return;
- 
-@@ -560,17 +566,24 @@ susp_iterate_dir (struct grub_iso9660_susp_entry *entry,
- 	{
- 	  grub_size_t off = 0, csize = 1;
- 	  char *old;
-+	  grub_size_t sz;
-+
- 	  csize = entry->len - 5;
- 	  old = ctx->filename;
- 	  if (ctx->filename_alloc)
- 	    {
- 	      off = grub_strlen (ctx->filename);
--	      ctx->filename = grub_realloc (ctx->filename, csize + off + 1);
-+	      if (grub_add (csize, off, &sz) ||
-+		  grub_add (sz, 1, &sz))
-+		return GRUB_ERR_OUT_OF_RANGE;
-+	      ctx->filename = grub_realloc (ctx->filename, sz);
- 	    }
- 	  else
- 	    {
- 	      off = 0;
--	      ctx->filename = grub_zalloc (csize + 1);
-+	      if (grub_add (csize, 1, &sz))
-+		return GRUB_ERR_OUT_OF_RANGE;
-+	      ctx->filename = grub_zalloc (sz);
- 	    }
- 	  if (!ctx->filename)
- 	    {
-@@ -776,14 +789,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
- 	    if (node->have_dirents >= node->alloc_dirents)
- 	      {
- 		struct grub_fshelp_node *new_node;
--		node->alloc_dirents *= 2;
--		new_node = grub_realloc (node, 
--					 sizeof (struct grub_fshelp_node)
--					 + ((node->alloc_dirents
--					     - ARRAY_SIZE (node->dirents))
--					    * sizeof (node->dirents[0])));
-+		grub_size_t sz;
-+
-+		if (grub_mul (node->alloc_dirents, 2, &node->alloc_dirents) ||
-+		    grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||
-+		    grub_mul (sz, sizeof (node->dirents[0]), &sz) ||
-+		    grub_add (sz, sizeof (struct grub_fshelp_node), &sz))
-+		  goto fail_0;
-+
-+		new_node = grub_realloc (node, sz);
- 		if (!new_node)
- 		  {
-+ fail_0:
- 		    if (ctx.filename_alloc)
- 		      grub_free (ctx.filename);
- 		    grub_free (node);
-@@ -799,14 +816,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
- 		* sizeof (node->dirents[0]) < grub_strlen (ctx.symlink) + 1)
- 	      {
- 		struct grub_fshelp_node *new_node;
--		new_node = grub_realloc (node,
--					 sizeof (struct grub_fshelp_node)
--					 + ((node->alloc_dirents
--					     - ARRAY_SIZE (node->dirents))
--					    * sizeof (node->dirents[0]))
--					 + grub_strlen (ctx.symlink) + 1);
-+		grub_size_t sz;
-+
-+		if (grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||
-+		    grub_mul (sz, sizeof (node->dirents[0]), &sz) ||
-+		    grub_add (sz, sizeof (struct grub_fshelp_node) + 1, &sz) ||
-+		    grub_add (sz, grub_strlen (ctx.symlink), &sz))
-+		  goto fail_1;
-+
-+		new_node = grub_realloc (node, sz);
- 		if (!new_node)
- 		  {
-+ fail_1:
- 		    if (ctx.filename_alloc)
- 		      grub_free (ctx.filename);
- 		    grub_free (node);
-diff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
-index 90f7fb3..de2b107 100644
---- a/grub-core/fs/sfs.c
-+++ b/grub-core/fs/sfs.c
-@@ -26,6 +26,7 @@
- #include <grub/types.h>
- #include <grub/fshelp.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -307,10 +308,15 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
-       if (node->cache && node->cache_size >= node->cache_allocated)
- 	{
- 	  struct cache_entry *e = node->cache;
--	  e = grub_realloc (node->cache,node->cache_allocated * 2
--			    * sizeof (e[0]));
-+	  grub_size_t sz;
-+
-+	  if (grub_mul (node->cache_allocated, 2 * sizeof (e[0]), &sz))
-+	    goto fail;
-+
-+	  e = grub_realloc (node->cache, sz);
- 	  if (!e)
- 	    {
-+ fail:
- 	      grub_errno = 0;
- 	      grub_free (node->cache);
- 	      node->cache = 0;
-@@ -477,10 +483,16 @@ grub_sfs_create_node (struct grub_fshelp_node **node,
-   grub_size_t len = grub_strlen (name);
-   grub_uint8_t *name_u8;
-   int ret;
-+  grub_size_t sz;
-+
-+  if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||
-+      grub_add (sz, 1, &sz))
-+    return 1;
-+
-   *node = grub_malloc (sizeof (**node));
-   if (!*node)
-     return 1;
--  name_u8 = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+  name_u8 = grub_malloc (sz);
-   if (!name_u8)
-     {
-       grub_free (*node);
-@@ -724,8 +736,13 @@ grub_sfs_label (grub_device_t device, char **label)
-   data = grub_sfs_mount (disk);
-   if (data)
-     {
--      grub_size_t len = grub_strlen (data->label);
--      *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+      grub_size_t sz, len = grub_strlen (data->label);
-+
-+      if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||
-+	  grub_add (sz, 1, &sz))
-+	return GRUB_ERR_OUT_OF_RANGE;
-+
-+      *label = grub_malloc (sz);
-       if (*label)
- 	*grub_latin1_to_utf8 ((grub_uint8_t *) *label,
- 			      (const grub_uint8_t *) data->label,
-diff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c
-index 95d5c1e..7851238 100644
---- a/grub-core/fs/squash4.c
-+++ b/grub-core/fs/squash4.c
-@@ -26,6 +26,7 @@
- #include <grub/types.h>
- #include <grub/fshelp.h>
- #include <grub/deflate.h>
-+#include <grub/safemath.h>
- #include <minilzo.h>
- 
- #include "xz.h"
-@@ -459,7 +460,17 @@ grub_squash_read_symlink (grub_fshelp_node_t node)
- {
-   char *ret;
-   grub_err_t err;
--  ret = grub_malloc (grub_le_to_cpu32 (node->ino.symlink.namelen) + 1);
-+  grub_size_t sz;
-+
-+  if (grub_add (grub_le_to_cpu32 (node->ino.symlink.namelen), 1, &sz))
-+    {
-+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+      return NULL;
-+    }
-+
-+  ret = grub_malloc (sz);
-+  if (!ret)
-+    return NULL;
- 
-   err = read_chunk (node->data, ret,
- 		    grub_le_to_cpu32 (node->ino.symlink.namelen),
-@@ -506,11 +517,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- 
-   {
-     grub_fshelp_node_t node;
--    node = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+    grub_size_t sz;
-+
-+    if (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||
-+	grub_add (sz, sizeof (*node), &sz))
-+      return 0;
-+
-+    node = grub_malloc (sz);
-     if (!node)
-       return 0;
--    grub_memcpy (node, dir,
--		 sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+    grub_memcpy (node, dir, sz);
-     if (hook (".", GRUB_FSHELP_DIR, node, hook_data))
-       return 1;
- 
-@@ -518,12 +534,15 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
-       {
- 	grub_err_t err;
- 
--	node = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+	if (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||
-+	    grub_add (sz, sizeof (*node), &sz))
-+	  return 0;
-+
-+	node = grub_malloc (sz);
- 	if (!node)
- 	  return 0;
- 
--	grub_memcpy (node, dir,
--		     sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+	grub_memcpy (node, dir, sz);
- 
- 	node->stsize--;
- 	err = read_chunk (dir->data, &node->ino, sizeof (node->ino),
-@@ -557,6 +576,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- 	  enum grub_fshelp_filetype filetype = GRUB_FSHELP_REG;
- 	  struct grub_squash_dirent di;
- 	  struct grub_squash_inode ino;
-+	  grub_size_t sz;
- 
- 	  err = read_chunk (dir->data, &di, sizeof (di),
- 			    grub_le_to_cpu64 (dir->data->sb.diroffset)
-@@ -589,13 +609,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- 	  if (grub_le_to_cpu16 (di.type) == SQUASH_TYPE_SYMLINK)
- 	    filetype = GRUB_FSHELP_SYMLINK;
- 
--	  node = grub_malloc (sizeof (*node)
--			      + (dir->stsize + 1) * sizeof (dir->stack[0]));
-+	  if (grub_add (dir->stsize, 1, &sz) ||
-+	      grub_mul (sz, sizeof (dir->stack[0]), &sz) ||
-+	      grub_add (sz, sizeof (*node), &sz))
-+	    return 0;
-+
-+	  node = grub_malloc (sz);
- 	  if (! node)
- 	    return 0;
- 
--	  grub_memcpy (node, dir,
--		       sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+	  grub_memcpy (node, dir, sz - sizeof(dir->stack[0]));
- 
- 	  node->ino = ino;
- 	  node->stack[node->stsize].ino_chunk = grub_le_to_cpu32 (dh.ino_chunk);
-diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
-index a837616..21ac7f4 100644
---- a/grub-core/fs/udf.c
-+++ b/grub-core/fs/udf.c
-@@ -28,6 +28,7 @@
- #include <grub/charset.h>
- #include <grub/datetime.h>
- #include <grub/udf.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -890,9 +891,19 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
- 	utf16[i] = (raw[2 * i + 1] << 8) | raw[2*i + 2];
-     }
-   if (!outbuf)
--    outbuf = grub_malloc (utf16len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+    {
-+      grub_size_t size;
-+
-+      if (grub_mul (utf16len, GRUB_MAX_UTF8_PER_UTF16, &size) ||
-+	  grub_add (size, 1, &size))
-+	goto fail;
-+
-+      outbuf = grub_malloc (size);
-+    }
-   if (outbuf)
-     *grub_utf16_to_utf8 ((grub_uint8_t *) outbuf, utf16, utf16len) = '\0';
-+
-+ fail:
-   grub_free (utf16);
-   return outbuf;
- }
-@@ -1005,7 +1016,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
-   grub_size_t sz = U64 (node->block.fe.file_size);
-   grub_uint8_t *raw;
-   const grub_uint8_t *ptr;
--  char *out, *optr;
-+  char *out = NULL, *optr;
- 
-   if (sz < 4)
-     return NULL;
-@@ -1013,14 +1024,16 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
-   if (!raw)
-     return NULL;
-   if (grub_udf_read_file (node, NULL, NULL, 0, sz, (char *) raw) < 0)
--    {
--      grub_free (raw);
--      return NULL;
--    }
-+    goto fail_1;
- 
--  out = grub_malloc (sz * 2 + 1);
-+  if (grub_mul (sz, 2, &sz) ||
-+      grub_add (sz, 1, &sz))
-+    goto fail_0;
-+
-+  out = grub_malloc (sz);
-   if (!out)
-     {
-+ fail_0:
-       grub_free (raw);
-       return NULL;
-     }
-@@ -1031,17 +1044,17 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
-     {
-       grub_size_t s;
-       if ((grub_size_t) (ptr - raw + 4) > sz)
--	goto fail;
-+	goto fail_1;
-       if (!(ptr[2] == 0 && ptr[3] == 0))
--	goto fail;
-+	goto fail_1;
-       s = 4 + ptr[1];
-       if ((grub_size_t) (ptr - raw + s) > sz)
--	goto fail;
-+	goto fail_1;
-       switch (*ptr)
- 	{
- 	case 1:
- 	  if (ptr[1])
--	    goto fail;
-+	    goto fail_1;
- 	  /* Fallthrough.  */
- 	case 2:
- 	  /* in 4 bytes. out: 1 byte.  */
-@@ -1066,11 +1079,11 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- 	  if (optr != out)
- 	    *optr++ = '/';
- 	  if (!read_string (ptr + 4, s - 4, optr))
--	    goto fail;
-+	    goto fail_1;
- 	  optr += grub_strlen (optr);
- 	  break;
- 	default:
--	  goto fail;
-+	  goto fail_1;
- 	}
-       ptr += s;
-     }
-@@ -1078,7 +1091,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
-   grub_free (raw);
-   return out;
- 
-- fail:
-+ fail_1:
-   grub_free (raw);
-   grub_free (out);
-   grub_error (GRUB_ERR_BAD_FS, "invalid symlink");
-diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
-index 96ffecb..ea65902 100644
---- a/grub-core/fs/xfs.c
-+++ b/grub-core/fs/xfs.c
-@@ -25,6 +25,7 @@
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/fshelp.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -899,6 +900,7 @@ static struct grub_xfs_data *
- grub_xfs_mount (grub_disk_t disk)
- {
-   struct grub_xfs_data *data = 0;
-+  grub_size_t sz;
- 
-   data = grub_zalloc (sizeof (struct grub_xfs_data));
-   if (!data)
-@@ -913,10 +915,11 @@ grub_xfs_mount (grub_disk_t disk)
-   if (!grub_xfs_sb_valid(data))
-     goto fail;
- 
--  data = grub_realloc (data,
--		       sizeof (struct grub_xfs_data)
--		       - sizeof (struct grub_xfs_inode)
--		       + grub_xfs_inode_size(data) + 1);
-+  if (grub_add (grub_xfs_inode_size (data),
-+      sizeof (struct grub_xfs_data) - sizeof (struct grub_xfs_inode) + 1, &sz))
-+    goto fail;
-+
-+  data = grub_realloc (data, sz);
- 
-   if (! data)
-     goto fail;
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index 381dde5..36d0373 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -55,6 +55,7 @@
- #include <grub/deflate.h>
- #include <grub/crypto.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -773,11 +774,14 @@ fill_vdev_info (struct grub_zfs_data *data,
-   if (data->n_devices_attached > data->n_devices_allocated)
-     {
-       void *tmp;
--      data->n_devices_allocated = 2 * data->n_devices_attached + 1;
--      data->devices_attached
--	= grub_realloc (tmp = data->devices_attached,
--			data->n_devices_allocated
--			* sizeof (data->devices_attached[0]));
-+      grub_size_t sz;
-+
-+      if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||
-+	  grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||
-+	  grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))
-+	return GRUB_ERR_OUT_OF_RANGE;
-+
-+      data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);
-       if (!data->devices_attached)
- 	{
- 	  data->devices_attached = tmp;
-@@ -3468,14 +3472,18 @@ grub_zfs_nvlist_lookup_nvlist (const char *nvlist, const char *name)
- {
-   char *nvpair;
-   char *ret;
--  grub_size_t size;
-+  grub_size_t size, sz;
-   int found;
- 
-   found = nvlist_find_value (nvlist, name, DATA_TYPE_NVLIST, &nvpair,
- 			     &size, 0);
-   if (!found)
-     return 0;
--  ret = grub_zalloc (size + 3 * sizeof (grub_uint32_t));
-+
-+  if (grub_add (size, 3 * sizeof (grub_uint32_t), &sz))
-+      return 0;
-+
-+  ret = grub_zalloc (sz);
-   if (!ret)
-     return 0;
-   grub_memcpy (ret, nvlist, sizeof (grub_uint32_t));
-diff --git a/grub-core/fs/zfs/zfscrypt.c b/grub-core/fs/zfs/zfscrypt.c
-index 1402e0b..de3b015 100644
---- a/grub-core/fs/zfs/zfscrypt.c
-+++ b/grub-core/fs/zfs/zfscrypt.c
-@@ -22,6 +22,7 @@
- #include <grub/misc.h>
- #include <grub/disk.h>
- #include <grub/partition.h>
-+#include <grub/safemath.h>
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/zfs/zfs.h>
-@@ -82,9 +83,13 @@ grub_zfs_add_key (grub_uint8_t *key_in,
- 		  int passphrase)
- {
-   struct grub_zfs_wrap_key *key;
-+  grub_size_t sz;
-+
-   if (!passphrase && keylen > 32)
-     keylen = 32;
--  key = grub_malloc (sizeof (*key) + keylen);
-+  if (grub_add (sizeof (*key), keylen, &sz))
-+    return GRUB_ERR_OUT_OF_RANGE;
-+  key = grub_malloc (sz);
-   if (!key)
-     return grub_errno;
-   key->is_passphrase = passphrase;
-diff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c
-index fd7744a..3288609 100644
---- a/grub-core/lib/arg.c
-+++ b/grub-core/lib/arg.c
-@@ -23,6 +23,7 @@
- #include <grub/term.h>
- #include <grub/extcmd.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
- 
- /* Built-in parser for default options.  */
- static const struct grub_arg_option help_options[] =
-@@ -216,7 +217,13 @@ static inline grub_err_t
- add_arg (char ***argl, int *num, char *s)
- {
-   char **p = *argl;
--  *argl = grub_realloc (*argl, (++(*num) + 1) * sizeof (char *));
-+  grub_size_t sz;
-+
-+  if (grub_add (++(*num), 1, &sz) ||
-+      grub_mul (sz, sizeof (char *), &sz))
-+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
-+  *argl = grub_realloc (*argl, sz);
-   if (! *argl)
-     {
-       grub_free (p);
-@@ -431,6 +438,7 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,
-   grub_size_t argcnt;
-   struct grub_arg_list *list;
-   const struct grub_arg_option *options;
-+  grub_size_t sz0, sz1;
- 
-   options = extcmd->options;
-   if (! options)
-@@ -443,7 +451,15 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,
- 	argcnt += ((grub_size_t) argc + 1) / 2 + 1; /* max possible for any option */
-     }
- 
--  list = grub_zalloc (sizeof (*list) * i + sizeof (char*) * argcnt);
-+  if (grub_mul (sizeof (*list), i, &sz0) ||
-+      grub_mul (sizeof (char *), argcnt, &sz1) ||
-+      grub_add (sz0, sz1, &sz0))
-+    {
-+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+      return 0;
-+    }
-+
-+  list = grub_zalloc (sz0);
-   if (! list)
-     return 0;
- 
-diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
-index 3730ed3..b92cbe9 100644
---- a/grub-core/loader/i386/bsd.c
-+++ b/grub-core/loader/i386/bsd.c
-@@ -35,6 +35,7 @@
- #include <grub/ns8250.h>
- #include <grub/bsdlabel.h>
- #include <grub/crypto.h>
-+#include <grub/safemath.h>
- #include <grub/verify.h>
- #ifdef GRUB_MACHINE_PCBIOS
- #include <grub/machine/int.h>
-@@ -1012,11 +1013,16 @@ grub_netbsd_add_modules (void)
-   struct grub_netbsd_btinfo_modules *mods;
-   unsigned i;
-   grub_err_t err;
-+  grub_size_t sz;
- 
-   for (mod = netbsd_mods; mod; mod = mod->next)
-     modcnt++;
- 
--  mods = grub_malloc (sizeof (*mods) + sizeof (mods->mods[0]) * modcnt);
-+  if (grub_mul (modcnt, sizeof (mods->mods[0]), &sz) ||
-+      grub_add (sz, sizeof (*mods), &sz))
-+    return GRUB_ERR_OUT_OF_RANGE;
-+
-+  mods = grub_malloc (sz);
-   if (!mods)
-     return grub_errno;
- 
-diff --git a/grub-core/net/dns.c b/grub-core/net/dns.c
-index e332d5e..906ec7d 100644
---- a/grub-core/net/dns.c
-+++ b/grub-core/net/dns.c
-@@ -22,6 +22,7 @@
- #include <grub/i18n.h>
- #include <grub/err.h>
- #include <grub/time.h>
-+#include <grub/safemath.h>
- 
- struct dns_cache_element
- {
-@@ -51,9 +52,15 @@ grub_net_add_dns_server (const struct grub_net_network_level_address *s)
-     {
-       int na = dns_servers_alloc * 2;
-       struct grub_net_network_level_address *ns;
-+      grub_size_t sz;
-+
-       if (na < 8)
- 	na = 8;
--      ns = grub_realloc (dns_servers, na * sizeof (ns[0]));
-+
-+      if (grub_mul (na, sizeof (ns[0]), &sz))
-+	return GRUB_ERR_OUT_OF_RANGE;
-+
-+      ns = grub_realloc (dns_servers, sz);
-       if (!ns)
- 	return grub_errno;
-       dns_servers_alloc = na;
-diff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
-index d57fb72..4dfcc31 100644
---- a/grub-core/normal/charset.c
-+++ b/grub-core/normal/charset.c
-@@ -48,6 +48,7 @@
- #include <grub/unicode.h>
- #include <grub/term.h>
- #include <grub/normal.h>
-+#include <grub/safemath.h>
- 
- #if HAVE_FONT_SOURCE
- #include "widthspec.h"
-@@ -464,6 +465,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- 	{
- 	  struct grub_unicode_combining *n;
- 	  unsigned j;
-+	  grub_size_t sz;
- 
- 	  if (!haveout)
- 	    continue;
-@@ -477,10 +479,14 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- 	    n = out->combining_inline;
- 	  else if (out->ncomb > (int) ARRAY_SIZE (out->combining_inline))
- 	    {
--	      n = grub_realloc (out->combining_ptr,
--				sizeof (n[0]) * (out->ncomb + 1));
-+	      if (grub_add (out->ncomb, 1, &sz) ||
-+		  grub_mul (sz, sizeof (n[0]), &sz))
-+		goto fail;
-+
-+	      n = grub_realloc (out->combining_ptr, sz);
- 	      if (!n)
- 		{
-+ fail:
- 		  grub_errno = GRUB_ERR_NONE;
- 		  continue;
- 		}
-diff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c
-index c57242e..de03fe6 100644
---- a/grub-core/normal/cmdline.c
-+++ b/grub-core/normal/cmdline.c
-@@ -28,6 +28,7 @@
- #include <grub/env.h>
- #include <grub/i18n.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
- 
- static grub_uint32_t *kill_buf;
- 
-@@ -307,12 +308,21 @@ cl_insert (struct cmdline_term *cl_terms, unsigned nterms,
-   if (len + (*llen) >= (*max_len))
-     {
-       grub_uint32_t *nbuf;
--      (*max_len) *= 2;
--      nbuf = grub_realloc ((*buf), sizeof (grub_uint32_t) * (*max_len));
-+      grub_size_t sz;
-+
-+      if (grub_mul (*max_len, 2, max_len) ||
-+	  grub_mul (*max_len, sizeof (grub_uint32_t), &sz))
-+	{
-+	  grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+	  goto fail;
-+	}
-+
-+      nbuf = grub_realloc ((*buf), sz);
-       if (nbuf)
- 	(*buf) = nbuf;
-       else
- 	{
-+ fail:
- 	  grub_print_error ();
- 	  grub_errno = GRUB_ERR_NONE;
- 	  (*max_len) /= 2;
-diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
-index 1993995..50eef91 100644
---- a/grub-core/normal/menu_entry.c
-+++ b/grub-core/normal/menu_entry.c
-@@ -27,6 +27,7 @@
- #include <grub/auth.h>
- #include <grub/i18n.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
- 
- enum update_mode
-   {
-@@ -113,10 +114,18 @@ ensure_space (struct line *linep, int extra)
- {
-   if (linep->max_len < linep->len + extra)
-     {
--      linep->max_len = 2 * (linep->len + extra);
--      linep->buf = grub_realloc (linep->buf, (linep->max_len + 1) * sizeof (linep->buf[0]));
-+      grub_size_t sz0, sz1;
-+
-+      if (grub_add (linep->len, extra, &sz0) ||
-+	  grub_mul (sz0, 2, &sz0) ||
-+	  grub_add (sz0, 1, &sz1) ||
-+	  grub_mul (sz1, sizeof (linep->buf[0]), &sz1))
-+	return 0;
-+
-+      linep->buf = grub_realloc (linep->buf, sz1);
-       if (! linep->buf)
- 	return 0;
-+      linep->max_len = sz0;
-     }
- 
-   return 1;
-diff --git a/grub-core/script/argv.c b/grub-core/script/argv.c
-index 217ec5d..5751fdd 100644
---- a/grub-core/script/argv.c
-+++ b/grub-core/script/argv.c
-@@ -20,6 +20,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/script_sh.h>
-+#include <grub/safemath.h>
- 
- /* Return nearest power of two that is >= v.  */
- static unsigned
-@@ -81,11 +82,16 @@ int
- grub_script_argv_next (struct grub_script_argv *argv)
- {
-   char **p = argv->args;
-+  grub_size_t sz;
- 
-   if (argv->args && argv->argc && argv->args[argv->argc - 1] == 0)
-     return 0;
- 
--  p = grub_realloc (p, round_up_exp ((argv->argc + 2) * sizeof (char *)));
-+  if (grub_add (argv->argc, 2, &sz) ||
-+      grub_mul (sz, sizeof (char *), &sz))
-+    return 1;
-+
-+  p = grub_realloc (p, round_up_exp (sz));
-   if (! p)
-     return 1;
- 
-@@ -105,13 +111,19 @@ grub_script_argv_append (struct grub_script_argv *argv, const char *s,
- {
-   grub_size_t a;
-   char *p = argv->args[argv->argc - 1];
-+  grub_size_t sz;
- 
-   if (! s)
-     return 0;
- 
-   a = p ? grub_strlen (p) : 0;
- 
--  p = grub_realloc (p, round_up_exp ((a + slen + 1) * sizeof (char)));
-+  if (grub_add (a, slen, &sz) ||
-+      grub_add (sz, 1, &sz) ||
-+      grub_mul (sz, sizeof (char), &sz))
-+    return 1;
-+
-+  p = grub_realloc (p, round_up_exp (sz));
-   if (! p)
-     return 1;
- 
-diff --git a/grub-core/script/lexer.c b/grub-core/script/lexer.c
-index c6bd317..5fb0cbd 100644
---- a/grub-core/script/lexer.c
-+++ b/grub-core/script/lexer.c
-@@ -24,6 +24,7 @@
- #include <grub/mm.h>
- #include <grub/script_sh.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
- 
- #define yytext_ptr char *
- #include "grub_script.tab.h"
-@@ -110,10 +111,14 @@ grub_script_lexer_record (struct grub_parser_param *parser, char *str)
-       old = lexer->recording;
-       if (lexer->recordlen < len)
- 	lexer->recordlen = len;
--      lexer->recordlen *= 2;
-+
-+      if (grub_mul (lexer->recordlen, 2, &lexer->recordlen))
-+	goto fail;
-+
-       lexer->recording = grub_realloc (lexer->recording, lexer->recordlen);
-       if (!lexer->recording)
- 	{
-+ fail:
- 	  grub_free (old);
- 	  lexer->recordpos = 0;
- 	  lexer->recordlen = 0;
-@@ -130,7 +135,7 @@ int
- grub_script_lexer_yywrap (struct grub_parser_param *parserstate,
- 			  const char *input)
- {
--  grub_size_t len = 0;
-+  grub_size_t len = 0, sz;
-   char *p = 0;
-   char *line = 0;
-   YY_BUFFER_STATE buffer;
-@@ -168,12 +173,22 @@ grub_script_lexer_yywrap (struct grub_parser_param *parserstate,
-     }
-   else if (len && line[len - 1] != '\n')
-     {
--      p = grub_realloc (line, len + 2);
-+      if (grub_add (len, 2, &sz))
-+	{
-+	  grub_free (line);
-+	  grub_script_yyerror (parserstate, N_("overflow is detected"));
-+	  return 1;
-+	}
-+
-+      p = grub_realloc (line, sz);
-       if (p)
- 	{
- 	  p[len++] = '\n';
- 	  p[len] = '\0';
- 	}
-+      else
-+	grub_free (line);
-+
-       line = p;
-     }
- 
-diff --git a/grub-core/video/bitmap.c b/grub-core/video/bitmap.c
-index b2e0315..6256e20 100644
---- a/grub-core/video/bitmap.c
-+++ b/grub-core/video/bitmap.c
-@@ -23,6 +23,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -58,7 +59,7 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
-                           enum grub_video_blit_format blit_format)
- {
-   struct grub_video_mode_info *mode_info;
--  unsigned int size;
-+  grub_size_t size;
- 
-   if (!bitmap)
-     return grub_error (GRUB_ERR_BUG, "invalid argument");
-@@ -137,19 +138,25 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
- 
-   mode_info->pitch = width * mode_info->bytes_per_pixel;
- 
--  /* Calculate size needed for the data.  */
--  size = (width * mode_info->bytes_per_pixel) * height;
-+  /* Calculate size needed for the data. */
-+  if (grub_mul (width, mode_info->bytes_per_pixel, &size) ||
-+      grub_mul (size, height, &size))
-+    {
-+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+      goto fail;
-+    }
- 
-   (*bitmap)->data = grub_zalloc (size);
-   if (! (*bitmap)->data)
--    {
--      grub_free (*bitmap);
--      *bitmap = 0;
--
--      return grub_errno;
--    }
-+    goto fail;
- 
-   return GRUB_ERR_NONE;
-+
-+ fail:
-+  grub_free (*bitmap);
-+  *bitmap = NULL;
-+
-+  return grub_errno;
- }
- 
- /* Frees all resources allocated by bitmap.  */
-diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
-index 61bd645..0157ff7 100644
---- a/grub-core/video/readers/png.c
-+++ b/grub-core/video/readers/png.c
-@@ -23,6 +23,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/bufio.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -301,9 +302,17 @@ grub_png_decode_image_header (struct grub_png_data *data)
-       data->bpp <<= 1;
- 
-   data->color_bits = color_bits;
--  data->row_bytes = data->image_width * data->bpp;
-+
-+  if (grub_mul (data->image_width, data->bpp, &data->row_bytes))
-+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
-   if (data->color_bits <= 4)
--    data->row_bytes = (data->image_width * data->color_bits + 7) / 8;
-+    {
-+      if (grub_mul (data->image_width, data->color_bits + 7, &data->row_bytes))
-+	return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
-+      data->row_bytes >>= 3;
-+    }
- 
- #ifndef GRUB_CPU_WORDS_BIGENDIAN
-   if (data->is_16bit || data->is_gray || data->is_palette)
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch
deleted file mode 100644
index 329e554..0000000
--- a/poky/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From c65fc7e75b7b7e880d90766057040011701e97f4 Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chris.coulson@canonical.com>
-Date: Fri, 10 Jul 2020 14:41:45 +0100
-Subject: [PATCH 8/9] script: Avoid a use-after-free when redefining a function
- during execution
-
-Defining a new function with the same name as a previously defined
-function causes the grub_script and associated resources for the
-previous function to be freed. If the previous function is currently
-executing when a function with the same name is defined, this results
-in use-after-frees when processing subsequent commands in the original
-function.
-
-Instead, reject a new function definition if it has the same name as
-a previously defined function, and that function is currently being
-executed. Although a behavioural change, this should be backwards
-compatible with existing configurations because they can't be
-dependent on the current behaviour without being broken.
-
-Fixes: CVE-2020-15706
-
-Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-15706
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=426f57383d647406ae9c628c472059c27cd6e040
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/script/execute.c  |  2 ++
- grub-core/script/function.c | 16 +++++++++++++---
- grub-core/script/parser.y   |  3 ++-
- include/grub/script_sh.h    |  2 ++
- 4 files changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
-index c8d6806..7e028e1 100644
---- a/grub-core/script/execute.c
-+++ b/grub-core/script/execute.c
-@@ -838,7 +838,9 @@ grub_script_function_call (grub_script_function_t func, int argc, char **args)
-   old_scope = scope;
-   scope = &new_scope;
- 
-+  func->executing++;
-   ret = grub_script_execute (func->func);
-+  func->executing--;
- 
-   function_return = 0;
-   active_loops = loops;
-diff --git a/grub-core/script/function.c b/grub-core/script/function.c
-index d36655e..3aad04b 100644
---- a/grub-core/script/function.c
-+++ b/grub-core/script/function.c
-@@ -34,6 +34,7 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,
-   func = (grub_script_function_t) grub_malloc (sizeof (*func));
-   if (! func)
-     return 0;
-+  func->executing = 0;
- 
-   func->name = grub_strdup (functionname_arg->str);
-   if (! func->name)
-@@ -60,10 +61,19 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,
-       grub_script_function_t q;
- 
-       q = *p;
--      grub_script_free (q->func);
--      q->func = cmd;
-       grub_free (func);
--      func = q;
-+      if (q->executing > 0)
-+        {
-+          grub_error (GRUB_ERR_BAD_ARGUMENT,
-+		      N_("attempt to redefine a function being executed"));
-+          func = NULL;
-+        }
-+      else
-+        {
-+          grub_script_free (q->func);
-+          q->func = cmd;
-+          func = q;
-+        }
-     }
-   else
-     {
-diff --git a/grub-core/script/parser.y b/grub-core/script/parser.y
-index 4f0ab83..f80b86b 100644
---- a/grub-core/script/parser.y
-+++ b/grub-core/script/parser.y
-@@ -289,7 +289,8 @@ function: "function" "name"
- 	      grub_script_mem_free (state->func_mem);
- 	    else {
- 	      script->children = state->scripts;
--	      grub_script_function_create ($2, script);
-+	      if (!grub_script_function_create ($2, script))
-+		grub_script_free (script);
- 	    }
- 
- 	    state->scripts = $<scripts>3;
-diff --git a/include/grub/script_sh.h b/include/grub/script_sh.h
-index b382bcf..6c48e07 100644
---- a/include/grub/script_sh.h
-+++ b/include/grub/script_sh.h
-@@ -361,6 +361,8 @@ struct grub_script_function
- 
-   /* The next element.  */
-   struct grub_script_function *next;
-+
-+  unsigned executing;
- };
- typedef struct grub_script_function *grub_script_function_t;
- 
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch
deleted file mode 100644
index d4f9300..0000000
--- a/poky/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From 68a09a74f6d726d79709847f3671c0a08e4fb5a0 Mon Sep 17 00:00:00 2001
-From: Colin Watson <cjwatson@debian.org>
-Date: Sat, 25 Jul 2020 12:15:37 +0100
-Subject: [PATCH 9/9] linux: Fix integer overflows in initrd size handling
-
-These could be triggered by a crafted filesystem with very large files.
-
-Fixes: CVE-2020-15707
-
-Signed-off-by: Colin Watson <cjwatson@debian.org>
-Reviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-15707
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=e7b8856f8be3292afdb38d2e8c70ad8d62a61e10
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/loader/linux.c | 74 +++++++++++++++++++++++++++++++++++-------------
- 1 file changed, 54 insertions(+), 20 deletions(-)
-
-diff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c
-index 471b214..8c8565a 100644
---- a/grub-core/loader/linux.c
-+++ b/grub-core/loader/linux.c
-@@ -4,6 +4,7 @@
- #include <grub/misc.h>
- #include <grub/file.h>
- #include <grub/mm.h>
-+#include <grub/safemath.h>
- 
- struct newc_head
- {
-@@ -98,13 +99,13 @@ free_dir (struct dir *root)
-   grub_free (root);
- }
- 
--static grub_size_t
-+static grub_err_t
- insert_dir (const char *name, struct dir **root,
--	    grub_uint8_t *ptr)
-+	    grub_uint8_t *ptr, grub_size_t *size)
- {
-   struct dir *cur, **head = root;
-   const char *cb, *ce = name;
--  grub_size_t size = 0;
-+  *size = 0;
-   while (1)
-     {
-       for (cb = ce; *cb == '/'; cb++);
-@@ -130,14 +131,22 @@ insert_dir (const char *name, struct dir **root,
- 	      ptr = make_header (ptr, name, ce - name,
- 				 040777, 0);
- 	    }
--	  size += ALIGN_UP ((ce - (char *) name)
--			    + sizeof (struct newc_head), 4);
-+	  if (grub_add (*size,
-+		        ALIGN_UP ((ce - (char *) name)
-+				  + sizeof (struct newc_head), 4),
-+			size))
-+	    {
-+	      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+	      grub_free (n->name);
-+	      grub_free (n);
-+	      return grub_errno;
-+	    }
- 	  *head = n;
- 	  cur = n;
- 	}
-       root = &cur->next;
-     }
--  return size;
-+  return GRUB_ERR_NONE;
- }
- 
- grub_err_t
-@@ -173,26 +182,33 @@ grub_initrd_init (int argc, char *argv[],
- 	  eptr = grub_strchr (ptr, ':');
- 	  if (eptr)
- 	    {
-+	      grub_size_t dir_size, name_len;
-+
- 	      initrd_ctx->components[i].newc_name = grub_strndup (ptr, eptr - ptr);
--	      if (!initrd_ctx->components[i].newc_name)
-+	      if (!initrd_ctx->components[i].newc_name ||
-+		  insert_dir (initrd_ctx->components[i].newc_name, &root, 0,
-+			      &dir_size))
- 		{
- 		  grub_initrd_close (initrd_ctx);
- 		  return grub_errno;
- 		}
--	      initrd_ctx->size
--		+= ALIGN_UP (sizeof (struct newc_head)
--			    + grub_strlen (initrd_ctx->components[i].newc_name),
--			     4);
--	      initrd_ctx->size += insert_dir (initrd_ctx->components[i].newc_name,
--					      &root, 0);
-+	      name_len = grub_strlen (initrd_ctx->components[i].newc_name);
-+	      if (grub_add (initrd_ctx->size,
-+			    ALIGN_UP (sizeof (struct newc_head) + name_len, 4),
-+			    &initrd_ctx->size) ||
-+		  grub_add (initrd_ctx->size, dir_size, &initrd_ctx->size))
-+		goto overflow;
- 	      newc = 1;
- 	      fname = eptr + 1;
- 	    }
- 	}
-       else if (newc)
- 	{
--	  initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
--					+ sizeof ("TRAILER!!!") - 1, 4);
-+	  if (grub_add (initrd_ctx->size,
-+			ALIGN_UP (sizeof (struct newc_head)
-+				  + sizeof ("TRAILER!!!") - 1, 4),
-+			&initrd_ctx->size))
-+	    goto overflow;
- 	  free_dir (root);
- 	  root = 0;
- 	  newc = 0;
-@@ -208,19 +224,29 @@ grub_initrd_init (int argc, char *argv[],
-       initrd_ctx->nfiles++;
-       initrd_ctx->components[i].size
- 	= grub_file_size (initrd_ctx->components[i].file);
--      initrd_ctx->size += initrd_ctx->components[i].size;
-+      if (grub_add (initrd_ctx->size, initrd_ctx->components[i].size,
-+		    &initrd_ctx->size))
-+	goto overflow;
-     }
- 
-   if (newc)
-     {
-       initrd_ctx->size = ALIGN_UP (initrd_ctx->size, 4);
--      initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
--				    + sizeof ("TRAILER!!!") - 1, 4);
-+      if (grub_add (initrd_ctx->size,
-+		    ALIGN_UP (sizeof (struct newc_head)
-+			      + sizeof ("TRAILER!!!") - 1, 4),
-+		    &initrd_ctx->size))
-+	goto overflow;
-       free_dir (root);
-       root = 0;
-     }
-   
-   return GRUB_ERR_NONE;
-+
-+ overflow:
-+  free_dir (root);
-+  grub_initrd_close (initrd_ctx);
-+  return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
- }
- 
- grub_size_t
-@@ -261,8 +287,16 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
- 
-       if (initrd_ctx->components[i].newc_name)
- 	{
--	  ptr += insert_dir (initrd_ctx->components[i].newc_name,
--			     &root, ptr);
-+	  grub_size_t dir_size;
-+
-+	  if (insert_dir (initrd_ctx->components[i].newc_name, &root, ptr,
-+			  &dir_size))
-+	    {
-+	      free_dir (root);
-+	      grub_initrd_close (initrd_ctx);
-+	      return grub_errno;
-+	    }
-+	  ptr += dir_size;
- 	  ptr = make_header (ptr, initrd_ctx->components[i].newc_name,
- 			     grub_strlen (initrd_ctx->components[i].newc_name),
- 			     0100777,
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch b/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
index faa7fde..1323a54 100644
--- a/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
+++ b/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
@@ -1,6 +1,6 @@
-From 72c30928d3d461e0e2d20c5ff33bd96b6991d585 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Sat, 25 Jan 2014 23:49:44 -0500
+From 8790aa8bea736f52341a0430ff3e317d3be0f99b Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Mon, 15 Mar 2021 14:44:15 +0800
 Subject: [PATCH] autogen.sh: exclude .pc from po/POTFILES.in
 
 Exclude the .pc from po/POTFILES.in since quilt uses "patch --backup",
@@ -13,23 +13,24 @@
 
 Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
 Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
 ---
  autogen.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/autogen.sh b/autogen.sh
-index ef43270..a7067a7 100755
+index 31b0ced7e..c63ae766c 100755
 --- a/autogen.sh
 +++ b/autogen.sh
 @@ -13,7 +13,7 @@ fi
  export LC_COLLATE=C
  unset LC_ALL
  
--find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c'  ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -iname './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
-+find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c'  ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -iname './grub-core/lib/gnulib/*' ! -path './.pc/*' |sort > po/POTFILES.in
+-find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c'  ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
++find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c'  ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' ! -path './.pc/*' |sort > po/POTFILES.in
  find util -iname '*.in' ! -name Makefile.in  |sort > po/POTFILES-shell.in
  
  echo "Importing unicode..."
 -- 
-2.7.4
+2.17.1
 
diff --git a/poky/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch b/poky/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch
deleted file mode 100644
index c9536e6..0000000
--- a/poky/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From c005f62f5c4b26a77b916c8f76a852324439ecb3 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:15:29 -0400
-Subject: [PATCH 2/9] calloc: Make sure we always have an overflow-checking
- calloc() available
-
-This tries to make sure that everywhere in this source tree, we always have
-an appropriate version of calloc() (i.e. grub_calloc(), xcalloc(), etc.)
-available, and that they all safely check for overflow and return NULL when
-it would occur.
-
-Upstream-Status: Backport [commit 64e26162ebfe68317c143ca5ec996c892019f8f8
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/kern/emu/misc.c          | 12 ++++++++++++
- grub-core/kern/emu/mm.c            | 10 ++++++++++
- grub-core/kern/mm.c                | 40 ++++++++++++++++++++++++++++++++++++++
- grub-core/lib/libgcrypt_wrap/mem.c | 11 +++++++++--
- grub-core/lib/posix_wrap/stdlib.h  |  8 +++++++-
- include/grub/emu/misc.h            |  1 +
- include/grub/mm.h                  |  6 ++++++
- 7 files changed, 85 insertions(+), 3 deletions(-)
-
-diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
-index 65db79b..dfd8a8e 100644
---- a/grub-core/kern/emu/misc.c
-+++ b/grub-core/kern/emu/misc.c
-@@ -85,6 +85,18 @@ grub_util_error (const char *fmt, ...)
-   exit (1);
- }
- 
-+void *
-+xcalloc (grub_size_t nmemb, grub_size_t size)
-+{
-+  void *p;
-+
-+  p = calloc (nmemb, size);
-+  if (!p)
-+    grub_util_error ("%s", _("out of memory"));
-+
-+  return p;
-+}
-+
- void *
- xmalloc (grub_size_t size)
- {
-diff --git a/grub-core/kern/emu/mm.c b/grub-core/kern/emu/mm.c
-index f262e95..145b01d 100644
---- a/grub-core/kern/emu/mm.c
-+++ b/grub-core/kern/emu/mm.c
-@@ -25,6 +25,16 @@
- #include <string.h>
- #include <grub/i18n.h>
- 
-+void *
-+grub_calloc (grub_size_t nmemb, grub_size_t size)
-+{
-+  void *ret;
-+  ret = calloc (nmemb, size);
-+  if (!ret)
-+    grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
-+  return ret;
-+}
-+
- void *
- grub_malloc (grub_size_t size)
- {
-diff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c
-index ee88ff6..f2822a8 100644
---- a/grub-core/kern/mm.c
-+++ b/grub-core/kern/mm.c
-@@ -67,8 +67,10 @@
- #include <grub/dl.h>
- #include <grub/i18n.h>
- #include <grub/mm_private.h>
-+#include <grub/safemath.h>
- 
- #ifdef MM_DEBUG
-+# undef grub_calloc
- # undef grub_malloc
- # undef grub_zalloc
- # undef grub_realloc
-@@ -375,6 +377,30 @@ grub_memalign (grub_size_t align, grub_size_t size)
-   return 0;
- }
- 
-+/*
-+ * Allocate NMEMB instances of SIZE bytes and return the pointer, or error on
-+ * integer overflow.
-+ */
-+void *
-+grub_calloc (grub_size_t nmemb, grub_size_t size)
-+{
-+  void *ret;
-+  grub_size_t sz = 0;
-+
-+  if (grub_mul (nmemb, size, &sz))
-+    {
-+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+      return NULL;
-+    }
-+
-+  ret = grub_memalign (0, sz);
-+  if (!ret)
-+    return NULL;
-+
-+  grub_memset (ret, 0, sz);
-+  return ret;
-+}
-+
- /* Allocate SIZE bytes and return the pointer.  */
- void *
- grub_malloc (grub_size_t size)
-@@ -561,6 +587,20 @@ grub_mm_dump (unsigned lineno)
-   grub_printf ("\n");
- }
- 
-+void *
-+grub_debug_calloc (const char *file, int line, grub_size_t nmemb, grub_size_t size)
-+{
-+  void *ptr;
-+
-+  if (grub_mm_debug)
-+    grub_printf ("%s:%d: calloc (0x%" PRIxGRUB_SIZE ", 0x%" PRIxGRUB_SIZE ") = ",
-+		 file, line, size);
-+  ptr = grub_calloc (nmemb, size);
-+  if (grub_mm_debug)
-+    grub_printf ("%p\n", ptr);
-+  return ptr;
-+}
-+
- void *
- grub_debug_malloc (const char *file, int line, grub_size_t size)
- {
-diff --git a/grub-core/lib/libgcrypt_wrap/mem.c b/grub-core/lib/libgcrypt_wrap/mem.c
-index beeb661..74c6eaf 100644
---- a/grub-core/lib/libgcrypt_wrap/mem.c
-+++ b/grub-core/lib/libgcrypt_wrap/mem.c
-@@ -4,6 +4,7 @@
- #include <grub/crypto.h>
- #include <grub/dl.h>
- #include <grub/env.h>
-+#include <grub/safemath.h>
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-@@ -36,7 +37,10 @@ void *
- gcry_xcalloc (size_t n, size_t m)
- {
-   void *ret;
--  ret = grub_zalloc (n * m);
-+  size_t sz;
-+  if (grub_mul (n, m, &sz))
-+    grub_fatal ("gcry_xcalloc would overflow");
-+  ret = grub_zalloc (sz);
-   if (!ret)
-     grub_fatal ("gcry_xcalloc failed");
-   return ret;
-@@ -56,7 +60,10 @@ void *
- gcry_xcalloc_secure (size_t n, size_t m)
- {
-   void *ret;
--  ret = grub_zalloc (n * m);
-+  size_t sz;
-+  if (grub_mul (n, m, &sz))
-+    grub_fatal ("gcry_xcalloc would overflow");
-+  ret = grub_zalloc (sz);
-   if (!ret)
-     grub_fatal ("gcry_xcalloc failed");
-   return ret;
-diff --git a/grub-core/lib/posix_wrap/stdlib.h b/grub-core/lib/posix_wrap/stdlib.h
-index 3b46f47..7a8d385 100644
---- a/grub-core/lib/posix_wrap/stdlib.h
-+++ b/grub-core/lib/posix_wrap/stdlib.h
-@@ -21,6 +21,7 @@
- 
- #include <grub/mm.h>
- #include <grub/misc.h>
-+#include <grub/safemath.h>
- 
- static inline void 
- free (void *ptr)
-@@ -37,7 +38,12 @@ malloc (grub_size_t size)
- static inline void *
- calloc (grub_size_t size, grub_size_t nelem)
- {
--  return grub_zalloc (size * nelem);
-+  grub_size_t sz;
-+
-+  if (grub_mul (size, nelem, &sz))
-+    return NULL;
-+
-+  return grub_zalloc (sz);
- }
- 
- static inline void *
-diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h
-index ce464cf..ff9c48a 100644
---- a/include/grub/emu/misc.h
-+++ b/include/grub/emu/misc.h
-@@ -47,6 +47,7 @@ grub_util_device_is_mapped (const char *dev);
- #define GRUB_HOST_PRIuLONG_LONG "llu"
- #define GRUB_HOST_PRIxLONG_LONG "llx"
- 
-+void * EXPORT_FUNC(xcalloc) (grub_size_t nmemb, grub_size_t size) WARN_UNUSED_RESULT;
- void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT;
- void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT;
- char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT;
-diff --git a/include/grub/mm.h b/include/grub/mm.h
-index 28e2e53..9c38dd3 100644
---- a/include/grub/mm.h
-+++ b/include/grub/mm.h
-@@ -29,6 +29,7 @@
- #endif
- 
- void grub_mm_init_region (void *addr, grub_size_t size);
-+void *EXPORT_FUNC(grub_calloc) (grub_size_t nmemb, grub_size_t size);
- void *EXPORT_FUNC(grub_malloc) (grub_size_t size);
- void *EXPORT_FUNC(grub_zalloc) (grub_size_t size);
- void EXPORT_FUNC(grub_free) (void *ptr);
-@@ -48,6 +49,9 @@ extern int EXPORT_VAR(grub_mm_debug);
- void grub_mm_dump_free (void);
- void grub_mm_dump (unsigned lineno);
- 
-+#define grub_calloc(nmemb, size)	\
-+  grub_debug_calloc (GRUB_FILE, __LINE__, nmemb, size)
-+
- #define grub_malloc(size)	\
-   grub_debug_malloc (GRUB_FILE, __LINE__, size)
- 
-@@ -63,6 +67,8 @@ void grub_mm_dump (unsigned lineno);
- #define grub_free(ptr)	\
-   grub_debug_free (GRUB_FILE, __LINE__, ptr)
- 
-+void *EXPORT_FUNC(grub_debug_calloc) (const char *file, int line,
-+				      grub_size_t nmemb, grub_size_t size);
- void *EXPORT_FUNC(grub_debug_malloc) (const char *file, int line,
- 				      grub_size_t size);
- void *EXPORT_FUNC(grub_debug_zalloc) (const char *file, int line,
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/determinism.patch b/poky/meta/recipes-bsp/grub/files/determinism.patch
index 3c1f562..2828e80 100644
--- a/poky/meta/recipes-bsp/grub/files/determinism.patch
+++ b/poky/meta/recipes-bsp/grub/files/determinism.patch
@@ -1,6 +1,9 @@
-The output in moddep.lst generated from syminfo.lst using genmoddep.awk is
-not deterministic since the order of the dependencies on each line can vary
-depending on how awk sorts the values in the array.
+From b6f9b3f6fa782807c4a7ec16ee8ef868cdfbf468 Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Mon, 15 Mar 2021 14:56:18 +0800
+Subject: [PATCH] The output in moddep.lst generated from syminfo.lst using
+ genmoddep.awk is not deterministic since the order of the dependencies on
+ each line can vary depending on how awk sorts the values in the array.
 
 Be deterministic in the output by sorting the dependencies on each line.
 
@@ -13,11 +16,29 @@
 
 Upstream-Status: Pending
 Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ gentpl.py               | 1 +
+ grub-core/genmoddep.awk | 4 +++-
+ util/import_unicode.py  | 2 +-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
 
-Index: grub-2.04/grub-core/genmoddep.awk
-===================================================================
---- grub-2.04.orig/grub-core/genmoddep.awk
-+++ grub-2.04/grub-core/genmoddep.awk
+diff --git a/gentpl.py b/gentpl.py
+index c86550d4f..589285192 100644
+--- a/gentpl.py
++++ b/gentpl.py
+@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platform, suffix, closure):
+     for group in RMAP[platform]:
+         for value in defn.find_all(group + suffix):
+             r.append(closure(value))
++    r.sort()
+     return ''.join(r)
+ 
+ def platform_conditional(platform, closure):
+diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
+index 04c2863e5..247436392 100644
+--- a/grub-core/genmoddep.awk
++++ b/grub-core/genmoddep.awk
 @@ -59,7 +59,9 @@ END {
      }
      modlist = ""
@@ -29,22 +50,10 @@
        modlist = modlist " " depmod;
        inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
        depcount[mod]++
-Index: grub-2.04/gentpl.py
-===================================================================
---- grub-2.04.orig/gentpl.py
-+++ grub-2.04/gentpl.py
-@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platfor
-     for group in RMAP[platform]:
-         for value in defn.find_all(group + suffix):
-             r.append(closure(value))
-+    r.sort()
-     return ''.join(r)
- 
- def platform_conditional(platform, closure):
-Index: grub-2.04/util/import_unicode.py
-===================================================================
---- grub-2.04.orig/util/import_unicode.py
-+++ grub-2.04/util/import_unicode.py
+diff --git a/util/import_unicode.py b/util/import_unicode.py
+index 08f80591e..1f434a069 100644
+--- a/util/import_unicode.py
++++ b/util/import_unicode.py
 @@ -174,7 +174,7 @@ infile.close ()
  
  outfile.write ("struct grub_unicode_arabic_shape grub_unicode_arabic_shapes[] = {\n ")
@@ -54,3 +63,6 @@
      try:
          if arabicsubst[x]['join'] == "DUAL":
              outfile.write ("{0x%x, 0x%x, 0x%x, 0x%x, 0x%x},\n " % (arabicsubst[x][0], arabicsubst[x][1], arabicsubst[x][2], arabicsubst[x][3], arabicsubst[x][4]))
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch b/poky/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch
deleted file mode 100644
index 2b8157f..0000000
--- a/poky/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-From 8eb02bcb5897b238b29ff762402bb0c3028f0eab Mon Sep 17 00:00:00 2001
-From: Michael Chang <mchang@suse.com>
-Date: Thu, 19 Mar 2020 13:56:13 +0800
-Subject: [PATCH 3/9] lvm: Add LVM cache logical volume handling
-
-The LVM cache logical volume is the logical volume consisting of the original
-and the cache pool logical volume. The original is usually on a larger and
-slower storage device while the cache pool is on a smaller and faster one. The
-performance of the original volume can be improved by storing the frequently
-used data on the cache pool to utilize the greater performance of faster
-device.
-
-The default cache mode "writethrough" ensures that any data written will be
-stored both in the cache and on the origin LV, therefore grub can be straight
-to read the original lv as no data loss is guarenteed.
-
-The second cache mode is "writeback", which delays writing from the cache pool
-back to the origin LV to have increased performance. The drawback is potential
-data loss if losing the associated cache device.
-
-During the boot time grub reads the LVM offline i.e. LVM volumes are not
-activated and mounted, hence it should be fine to read directly from original
-lv since all cached data should have been flushed back in the process of taking
-it offline.
-
-It is also not much helpful to the situation by adding fsync calls to the
-install code. The fsync did not force to write back dirty cache to the original
-device and rather it would update associated cache metadata to complete the
-write transaction with the cache device. IOW the writes to cached blocks still
-go only to the cache device.
-
-To write back dirty cache, as LVM cache did not support dirty cache flush per
-block range, there'no way to do it for file. On the other hand the "cleaner"
-policy is implemented and can be used to write back "all" dirty blocks in a
-cache, which effectively drain all dirty cache gradually to attain and last in
-the "clean" state, which can be useful for shrinking or decommissioning a
-cache. The result and effect is not what we are looking for here.
-
-In conclusion, as it seems no way to enforce file writes to the original
-device, grub may suffer from power failure as it cannot assemble the cache
-device and read the dirty data from it. However since the case is only
-applicable to writeback mode which is sensitive to data lost in nature, I'd
-still like to propose my (relatively simple) patch and treat reading dirty
-cache as improvement.
-
-Upstream-Status: Backport [commit 0454b0445393aafc5600e92ef0c39494e333b135
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Michael Chang <mchang@suse.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/disk/lvm.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 190 insertions(+)
-
-diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
-index 7b265c7..dc6b83b 100644
---- a/grub-core/disk/lvm.c
-+++ b/grub-core/disk/lvm.c
-@@ -33,6 +33,14 @@
- 
- GRUB_MOD_LICENSE ("GPLv3+");
- 
-+struct cache_lv
-+{
-+  struct grub_diskfilter_lv *lv;
-+  char *cache_pool;
-+  char *origin;
-+  struct cache_lv *next;
-+};
-+
- 
- /* Go the string STR and return the number after STR.  *P will point
-    at the number.  In case STR is not found, *P will be NULL and the
-@@ -95,6 +103,34 @@ grub_lvm_check_flag (char *p, const char *str, const char *flag)
-     }
- }
- 
-+static void
-+grub_lvm_free_cache_lvs (struct cache_lv *cache_lvs)
-+{
-+  struct cache_lv *cache;
-+
-+  while ((cache = cache_lvs))
-+    {
-+      cache_lvs = cache_lvs->next;
-+
-+      if (cache->lv)
-+	{
-+	  unsigned int i;
-+
-+	  for (i = 0; i < cache->lv->segment_count; ++i)
-+	    if (cache->lv->segments)
-+	      grub_free (cache->lv->segments[i].nodes);
-+	  grub_free (cache->lv->segments);
-+	  grub_free (cache->lv->fullname);
-+	  grub_free (cache->lv->idname);
-+	  grub_free (cache->lv->name);
-+	}
-+      grub_free (cache->lv);
-+      grub_free (cache->origin);
-+      grub_free (cache->cache_pool);
-+      grub_free (cache);
-+    }
-+}
-+
- static struct grub_diskfilter_vg * 
- grub_lvm_detect (grub_disk_t disk,
- 		 struct grub_diskfilter_pv_id *id,
-@@ -242,6 +278,8 @@ grub_lvm_detect (grub_disk_t disk,
- 
-   if (! vg)
-     {
-+      struct cache_lv *cache_lvs = NULL;
-+
-       /* First time we see this volume group. We've to create the
- 	 whole volume group structure. */
-       vg = grub_malloc (sizeof (*vg));
-@@ -671,6 +709,106 @@ grub_lvm_detect (grub_disk_t disk,
- 			  seg->nodes[seg->node_count - 1].name = tmp;
- 			}
- 		    }
-+		  else if (grub_memcmp (p, "cache\"",
-+				   sizeof ("cache\"") - 1) == 0)
-+		    {
-+		      struct cache_lv *cache = NULL;
-+
-+		      char *p2, *p3;
-+		      grub_size_t sz;
-+
-+		      cache = grub_zalloc (sizeof (*cache));
-+		      if (!cache)
-+			goto cache_lv_fail;
-+		      cache->lv = grub_zalloc (sizeof (*cache->lv));
-+		      if (!cache->lv)
-+			goto cache_lv_fail;
-+		      grub_memcpy (cache->lv, lv, sizeof (*cache->lv));
-+
-+		      if (lv->fullname)
-+			{
-+			  cache->lv->fullname = grub_strdup (lv->fullname);
-+			  if (!cache->lv->fullname)
-+			    goto cache_lv_fail;
-+			}
-+		      if (lv->idname)
-+			{
-+			  cache->lv->idname = grub_strdup (lv->idname);
-+			  if (!cache->lv->idname)
-+			    goto cache_lv_fail;
-+			}
-+		      if (lv->name)
-+			{
-+			  cache->lv->name = grub_strdup (lv->name);
-+			  if (!cache->lv->name)
-+			    goto cache_lv_fail;
-+			}
-+
-+		      skip_lv = 1;
-+
-+		      p2 = grub_strstr (p, "cache_pool = \"");
-+		      if (!p2)
-+			goto cache_lv_fail;
-+
-+		      p2 = grub_strchr (p2, '"');
-+		      if (!p2)
-+			goto cache_lv_fail;
-+
-+		      p3 = ++p2;
-+		      p3 = grub_strchr (p3, '"');
-+		      if (!p3)
-+			goto cache_lv_fail;
-+
-+		      sz = p3 - p2;
-+
-+		      cache->cache_pool = grub_malloc (sz + 1);
-+		      if (!cache->cache_pool)
-+			goto cache_lv_fail;
-+		      grub_memcpy (cache->cache_pool, p2, sz);
-+		      cache->cache_pool[sz] = '\0';
-+
-+		      p2 = grub_strstr (p, "origin = \"");
-+		      if (!p2)
-+			goto cache_lv_fail;
-+
-+		      p2 = grub_strchr (p2, '"');
-+		      if (!p2)
-+			goto cache_lv_fail;
-+
-+		      p3 = ++p2;
-+		      p3 = grub_strchr (p3, '"');
-+		      if (!p3)
-+			goto cache_lv_fail;
-+
-+		      sz = p3 - p2;
-+
-+		      cache->origin = grub_malloc (sz + 1);
-+		      if (!cache->origin)
-+			goto cache_lv_fail;
-+		      grub_memcpy (cache->origin, p2, sz);
-+		      cache->origin[sz] = '\0';
-+
-+		      cache->next = cache_lvs;
-+		      cache_lvs = cache;
-+		      break;
-+
-+		    cache_lv_fail:
-+		      if (cache)
-+			{
-+			  grub_free (cache->origin);
-+			  grub_free (cache->cache_pool);
-+			  if (cache->lv)
-+			    {
-+			      grub_free (cache->lv->fullname);
-+			      grub_free (cache->lv->idname);
-+			      grub_free (cache->lv->name);
-+			    }
-+			  grub_free (cache->lv);
-+			  grub_free (cache);
-+			}
-+		      grub_lvm_free_cache_lvs (cache_lvs);
-+		      goto fail4;
-+		    }
- 		  else
- 		    {
- #ifdef GRUB_UTIL
-@@ -747,6 +885,58 @@ grub_lvm_detect (grub_disk_t disk,
- 	      }
- 	
-       }
-+
-+      {
-+	struct cache_lv *cache;
-+
-+	for (cache = cache_lvs; cache; cache = cache->next)
-+	  {
-+	    struct grub_diskfilter_lv *lv;
-+
-+	    for (lv = vg->lvs; lv; lv = lv->next)
-+	      if (grub_strcmp (lv->name, cache->origin) == 0)
-+		break;
-+	    if (lv)
-+	      {
-+		cache->lv->segments = grub_malloc (lv->segment_count * sizeof (*lv->segments));
-+		if (!cache->lv->segments)
-+		  {
-+		    grub_lvm_free_cache_lvs (cache_lvs);
-+		    goto fail4;
-+		  }
-+		grub_memcpy (cache->lv->segments, lv->segments, lv->segment_count * sizeof (*lv->segments));
-+
-+		for (i = 0; i < lv->segment_count; ++i)
-+		  {
-+		    struct grub_diskfilter_node *nodes = lv->segments[i].nodes;
-+		    grub_size_t node_count = lv->segments[i].node_count;
-+
-+		    cache->lv->segments[i].nodes = grub_malloc (node_count * sizeof (*nodes));
-+		    if (!cache->lv->segments[i].nodes)
-+		      {
-+			for (j = 0; j < i; ++j)
-+			  grub_free (cache->lv->segments[j].nodes);
-+			grub_free (cache->lv->segments);
-+			cache->lv->segments = NULL;
-+			grub_lvm_free_cache_lvs (cache_lvs);
-+			goto fail4;
-+		      }
-+		    grub_memcpy (cache->lv->segments[i].nodes, nodes, node_count * sizeof (*nodes));
-+		  }
-+
-+		if (cache->lv->segments)
-+		  {
-+		    cache->lv->segment_count = lv->segment_count;
-+		    cache->lv->vg = vg;
-+		    cache->lv->next = vg->lvs;
-+		    vg->lvs = cache->lv;
-+		    cache->lv = NULL;
-+		  }
-+	      }
-+	  }
-+      }
-+
-+      grub_lvm_free_cache_lvs (cache_lvs);
-       if (grub_diskfilter_vg_register (vg))
- 	goto fail4;
-     }
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch b/poky/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch
deleted file mode 100644
index 29021e8..0000000
--- a/poky/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 06c361a71c4998635493610e5d76d0d223925251 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 10:58:42 -0400
-Subject: [PATCH 5/9] safemath: Add some arithmetic primitives that check for
- overflow
-
-This adds a new header, include/grub/safemath.h, that includes easy to
-use wrappers for __builtin_{add,sub,mul}_overflow() declared like:
-
-  bool OP(a, b, res)
-
-where OP is grub_add, grub_sub or grub_mul. OP() returns true in the
-case where the operation would overflow and res is not modified.
-Otherwise, false is returned and the operation is executed.
-
-These arithmetic primitives require newer compiler versions. So, bump
-these requirements in the INSTALL file too.
-
-Upstream-Status: Backport [commit 68708c4503018d61dbcce7ac11cbb511d6425f4d
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-[YL: omit the change to INSTALL from original patch]
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- include/grub/compiler.h |  8 ++++++++
- include/grub/safemath.h | 37 +++++++++++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+)
- create mode 100644 include/grub/safemath.h
-
-diff --git a/include/grub/compiler.h b/include/grub/compiler.h
-index c9e1d7a..8f3be3a 100644
---- a/include/grub/compiler.h
-+++ b/include/grub/compiler.h
-@@ -48,4 +48,12 @@
- #  define WARN_UNUSED_RESULT
- #endif
- 
-+#if defined(__clang__) && defined(__clang_major__) && defined(__clang_minor__)
-+#  define CLANG_PREREQ(maj,min) \
-+          ((__clang_major__ > (maj)) || \
-+	   (__clang_major__ == (maj) && __clang_minor__ >= (min)))
-+#else
-+#  define CLANG_PREREQ(maj,min) 0
-+#endif
-+
- #endif /* ! GRUB_COMPILER_HEADER */
-diff --git a/include/grub/safemath.h b/include/grub/safemath.h
-new file mode 100644
-index 0000000..c17b89b
---- /dev/null
-+++ b/include/grub/safemath.h
-@@ -0,0 +1,37 @@
-+/*
-+ *  GRUB  --  GRand Unified Bootloader
-+ *  Copyright (C) 2020  Free Software Foundation, Inc.
-+ *
-+ *  GRUB is free software: you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License as published by
-+ *  the Free Software Foundation, either version 3 of the License, or
-+ *  (at your option) any later version.
-+ *
-+ *  GRUB is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License
-+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
-+ *
-+ *  Arithmetic operations that protect against overflow.
-+ */
-+
-+#ifndef GRUB_SAFEMATH_H
-+#define GRUB_SAFEMATH_H 1
-+
-+#include <grub/compiler.h>
-+
-+/* These appear in gcc 5.1 and clang 3.8. */
-+#if GNUC_PREREQ(5, 1) || CLANG_PREREQ(3, 8)
-+
-+#define grub_add(a, b, res)	__builtin_add_overflow(a, b, res)
-+#define grub_sub(a, b, res)	__builtin_sub_overflow(a, b, res)
-+#define grub_mul(a, b, res)	__builtin_mul_overflow(a, b, res)
-+
-+#else
-+#error gcc 5.1 or newer or clang 3.8 or newer is required
-+#endif
-+
-+#endif /* GRUB_SAFEMATH_H */
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch b/poky/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch
deleted file mode 100644
index 84a80d5..0000000
--- a/poky/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e219bad8cee67b2bb21712df8f055706f8da25d2 Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chris.coulson@canonical.com>
-Date: Fri, 10 Jul 2020 11:21:14 +0100
-Subject: [PATCH 7/9] script: Remove unused fields from grub_script_function
- struct
-
-Upstream-Status: Backport [commit 1a8d9c9b4ab6df7669b5aa36a56477f297825b96
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- include/grub/script_sh.h | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/include/grub/script_sh.h b/include/grub/script_sh.h
-index 360c2be..b382bcf 100644
---- a/include/grub/script_sh.h
-+++ b/include/grub/script_sh.h
-@@ -359,13 +359,8 @@ struct grub_script_function
-   /* The script function.  */
-   struct grub_script *func;
- 
--  /* The flags.  */
--  unsigned flags;
--
-   /* The next element.  */
-   struct grub_script_function *next;
--
--  int references;
- };
- typedef struct grub_script_function *grub_script_function_t;
- 
--- 
-2.14.4
-
diff --git a/poky/meta/recipes-bsp/grub/grub-efi_2.04.bb b/poky/meta/recipes-bsp/grub/grub-efi_git.bb
similarity index 98%
rename from poky/meta/recipes-bsp/grub/grub-efi_2.04.bb
rename to poky/meta/recipes-bsp/grub/grub-efi_git.bb
index 287845c..240fde7 100644
--- a/poky/meta/recipes-bsp/grub/grub-efi_2.04.bb
+++ b/poky/meta/recipes-bsp/grub/grub-efi_git.bb
@@ -11,8 +11,6 @@
            file://cfg \
           "
 
-S = "${WORKDIR}/grub-${PV}"
-
 # Determine the target arch for the grub modules
 python __anonymous () {
     import re
diff --git a/poky/meta/recipes-bsp/grub/grub2.inc b/poky/meta/recipes-bsp/grub/grub2.inc
index f870d41..590deb8 100644
--- a/poky/meta/recipes-bsp/grub/grub2.inc
+++ b/poky/meta/recipes-bsp/grub/grub2.inc
@@ -13,25 +13,24 @@
 
 CVE_PRODUCT = "grub2"
 
-SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
+SRC_URI = "https://alpha.gnu.org/gnu/grub/grub-${REALPV}.tar.xz \
            file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \
            file://autogen.sh-exclude-pc.patch \
            file://grub-module-explicitly-keeps-symbole-.module_license.patch \
            file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
-           file://CVE-2020-10713.patch \
-           file://calloc-Make-sure-we-always-have-an-overflow-checking.patch \
-           file://lvm-Add-LVM-cache-logical-volume-handling.patch \
-           file://CVE-2020-14308-calloc-Use-calloc-at-most-places.patch \
-           file://safemath-Add-some-arithmetic-primitives-that-check-f.patch \
-           file://CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch \
-           file://script-Remove-unused-fields-from-grub_script_functio.patch \
-           file://CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch \
-           file://CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch \
-           file://6643507ce30f775008e093580f0c9499dfb2c485.patch \
            file://determinism.patch \
+           file://0001-RISC-V-Restore-the-typcast-to-long.patch \
 "
-SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934"
-SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea"
+
+SRC_URI[sha256sum] = "2c87f1f21e2ab50043e6cd9163c08f1b6c3a6171556bf23ff9ed65b074145484"
+
+REALPV = "2.06~rc1"
+PV = "2.04+${REALPV}"
+
+S = "${WORKDIR}/grub-${REALPV}"
+
+UPSTREAM_CHECK_URI = "${GNU_MIRROR}/grub"
+UPSTREAM_CHECK_REGEX = "grub-(?P<pver>\d+(\.\d+)+)\.tar\.(gz|xz)"
 
 DEPENDS = "flex-native bison-native gettext-native"
 
diff --git a/poky/meta/recipes-bsp/grub/grub_2.04.bb b/poky/meta/recipes-bsp/grub/grub_git.bb
similarity index 100%
rename from poky/meta/recipes-bsp/grub/grub_2.04.bb
rename to poky/meta/recipes-bsp/grub/grub_git.bb
diff --git a/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch b/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch
new file mode 100644
index 0000000..d4ac9e2
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch
@@ -0,0 +1,36 @@
+From ea1a9ec5f430359720d9a0621ed1acfbba6a142a Mon Sep 17 00:00:00 2001
+From: Heinrich Schuchardt <xypron.glpk@gmx.de>
+Date: Wed, 13 Jan 2021 02:09:12 +0100
+Subject: [PATCH] image-fit: fit_check_format check for valid FDT
+
+fit_check_format() must check that the buffer contains a flattened device
+tree before calling any device tree library functions.
+
+Failure to do may cause segmentation faults.
+
+Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
+
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/ea1a9ec5f430359720d9a0621ed1acfbba6a142a]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ common/image-fit.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/common/image-fit.c b/common/image-fit.c
+index 6a8787ca0a..21c44bdf69 100644
+--- a/common/image-fit.c
++++ b/common/image-fit.c
+@@ -1553,6 +1553,12 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp)
+  */
+ int fit_check_format(const void *fit)
+ {
++	/* A FIT image must be a valid FDT */
++	if (fdt_check_header(fit)) {
++		debug("Wrong FIT format: not a flattened device tree\n");
++		return 0;
++	}
++
+ 	/* mandatory / node 'description' property */
+ 	if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) {
+ 		debug("Wrong FIT format: no description\n");
diff --git a/poky/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch b/poky/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch
new file mode 100644
index 0000000..0ed3de4
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch
@@ -0,0 +1,42 @@
+From 66dfe0fa886f6289add06d1af8642ce2b5302852 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 9 Feb 2021 16:40:12 -0800
+Subject: [PATCH] riscv32: Use double-float ABI for rv32
+
+So it can use libgcc built with OE toolchain
+Fixes
+error: "can't link hard-float modules with soft-float modules"
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ arch/riscv/Makefile | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
+index 0b80eb8d86..7324946f48 100644
+--- a/arch/riscv/Makefile
++++ b/arch/riscv/Makefile
+@@ -9,7 +9,9 @@ ifeq ($(CONFIG_ARCH_RV64I),y)
+ endif
+ ifeq ($(CONFIG_ARCH_RV32I),y)
+ 	ARCH_BASE = rv32im
+-	ABI = ilp32
++	ABI = ilp32d
++	ARCH_D = d
++	ARCH_F = f
+ endif
+ ifeq ($(CONFIG_RISCV_ISA_A),y)
+ 	ARCH_A = a
+@@ -24,7 +26,7 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
+ 	CMODEL = medany
+ endif
+ 
+-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \
++ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_D)$(ARCH_C) -mabi=$(ABI) \
+ 	     -mcmodel=$(CMODEL)
+ 
+ PLATFORM_CPPFLAGS	+= $(ARCH_FLAGS)
+-- 
+2.30.0
+
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch
new file mode 100644
index 0000000..98ec2c7
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch
@@ -0,0 +1,71 @@
+From 8a7d4cf9820ea16fabd25a6379351b4dc291204b Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:05 -0700
+Subject: [PATCH] fdt_region: Check for a single root node of the correct name
+
+At present fdt_find_regions() assumes that the FIT is a valid devicetree.
+If the FIT has two root nodes this is currently not detected in this
+function, nor does libfdt's fdt_check_full() notice. Also it is possible
+for the root node to have a name even though it should not.
+
+Add checks for these and return -FDT_ERR_BADSTRUCTURE if a problem is
+detected.
+
+CVE-2021-27097
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27097
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/8a7d4cf9820ea16fabd25a6379351b4dc291204b]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ common/fdt_region.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/common/fdt_region.c b/common/fdt_region.c
+index ff12c518e9..e4ef0ca770 100644
+--- a/common/fdt_region.c
++++ b/common/fdt_region.c
+@@ -43,6 +43,7 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count,
+ 	int depth = -1;
+ 	int want = 0;
+ 	int base = fdt_off_dt_struct(fdt);
++	bool expect_end = false;
+ 
+ 	end = path;
+ 	*end = '\0';
+@@ -59,6 +60,10 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count,
+ 		tag = fdt_next_tag(fdt, offset, &nextoffset);
+ 		stop_at = nextoffset;
+ 
++		/* If we see two root nodes, something is wrong */
++		if (expect_end && tag != FDT_END)
++			return -FDT_ERR_BADLAYOUT;
++
+ 		switch (tag) {
+ 		case FDT_PROP:
+ 			include = want >= 2;
+@@ -81,6 +86,10 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count,
+ 			if (depth == FDT_MAX_DEPTH)
+ 				return -FDT_ERR_BADSTRUCTURE;
+ 			name = fdt_get_name(fdt, offset, &len);
++
++			/* The root node must have an empty name */
++			if (!depth && *name)
++				return -FDT_ERR_BADLAYOUT;
+ 			if (end - path + 2 + len >= path_len)
+ 				return -FDT_ERR_NOSPACE;
+ 			if (end != path + 1)
+@@ -108,6 +117,8 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count,
+ 			while (end > path && *--end != '/')
+ 				;
+ 			*end = '\0';
++			if (depth == -1)
++				expect_end = true;
+ 			break;
+ 
+ 		case FDT_END:
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch
new file mode 100644
index 0000000..b13c44e
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch
@@ -0,0 +1,419 @@
+From c5819701a3de61e2ba2ef7ad0b616565b32305e5 Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:09 -0700
+Subject: [PATCH] image: Adjust the workings of fit_check_format()
+
+At present this function does not accept a size for the FIT. This means
+that it must be read from the FIT itself, introducing potential security
+risk. Update the function to include a size parameter, which can be
+invalid, in which case fit_check_format() calculates it.
+
+For now no callers pass the size, but this can be updated later.
+
+Also adjust the return value to an error code so that all the different
+types of problems can be distinguished by the user.
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27097 CVE-2021-27138
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/c5819701a3de61e2ba2ef7ad0b616565b32305e5]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ arch/arm/cpu/armv8/sec_firmware.c  |  2 +-
+ cmd/bootm.c                        |  6 ++---
+ cmd/disk.c                         |  2 +-
+ cmd/fpga.c                         |  2 +-
+ cmd/nand.c                         |  2 +-
+ cmd/source.c                       |  2 +-
+ cmd/ximg.c                         |  2 +-
+ common/image-fdt.c                 |  2 +-
+ common/image-fit.c                 | 46 +++++++++++++++++---------------------
+ common/splash_source.c             |  6 ++---
+ common/update.c                    |  4 ++--
+ drivers/fpga/socfpga_arria10.c     |  6 ++---
+ drivers/net/fsl-mc/mc.c            |  2 +-
+ drivers/net/pfe_eth/pfe_firmware.c |  2 +-
+ include/image.h                    | 21 ++++++++++++++++-
+ tools/fit_common.c                 |  3 ++-
+ tools/fit_image.c                  |  2 +-
+ tools/mkimage.h                    |  2 ++
+ 18 files changed, 65 insertions(+), 49 deletions(-)
+
+diff --git a/arch/arm/cpu/armv8/sec_firmware.c b/arch/arm/cpu/armv8/sec_firmware.c
+index bfc0fac3ef..0561f5efd1 100644
+--- a/arch/arm/cpu/armv8/sec_firmware.c
++++ b/arch/arm/cpu/armv8/sec_firmware.c
+@@ -316,7 +316,7 @@ __weak bool sec_firmware_is_valid(const void *sec_firmware_img)
+ 		return false;
+ 	}
+ 
+-	if (!fit_check_format(sec_firmware_img)) {
++	if (fit_check_format(sec_firmware_img, IMAGE_SIZE_INVAL)) {
+ 		printf("SEC Firmware: Bad firmware image (bad FIT header)\n");
+ 		return false;
+ 	}
+diff --git a/cmd/bootm.c b/cmd/bootm.c
+index e6b0e04413..a0f823f968 100644
+--- a/cmd/bootm.c
++++ b/cmd/bootm.c
+@@ -291,7 +291,7 @@ static int image_info(ulong addr)
+ 	case IMAGE_FORMAT_FIT:
+ 		puts("   FIT image found\n");
+ 
+-		if (!fit_check_format(hdr)) {
++		if (fit_check_format(hdr, IMAGE_SIZE_INVAL)) {
+ 			puts("Bad FIT image format!\n");
+ 			unmap_sysmem(hdr);
+ 			return 1;
+@@ -368,7 +368,7 @@ static int do_imls_nor(void)
+ #endif
+ #if defined(CONFIG_FIT)
+ 			case IMAGE_FORMAT_FIT:
+-				if (!fit_check_format(hdr))
++				if (fit_check_format(hdr, IMAGE_SIZE_INVAL))
+ 					goto next_sector;
+ 
+ 				printf("FIT Image at %08lX:\n", (ulong)hdr);
+@@ -448,7 +448,7 @@ static int nand_imls_fitimage(struct mtd_info *mtd, int nand_dev, loff_t off,
+ 		return ret;
+ 	}
+ 
+-	if (!fit_check_format(imgdata)) {
++	if (fit_check_format(imgdata, IMAGE_SIZE_INVAL)) {
+ 		free(imgdata);
+ 		return 0;
+ 	}
+diff --git a/cmd/disk.c b/cmd/disk.c
+index 8060e753eb..3195db9127 100644
+--- a/cmd/disk.c
++++ b/cmd/disk.c
+@@ -114,7 +114,7 @@ int common_diskboot(struct cmd_tbl *cmdtp, const char *intf, int argc,
+ 	/* This cannot be done earlier,
+ 	 * we need complete FIT image in RAM first */
+ 	if (genimg_get_format((void *) addr) == IMAGE_FORMAT_FIT) {
+-		if (!fit_check_format(fit_hdr)) {
++		if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 			bootstage_error(BOOTSTAGE_ID_IDE_FIT_READ);
+ 			puts("** Bad FIT image format\n");
+ 			return 1;
+diff --git a/cmd/fpga.c b/cmd/fpga.c
+index 8ae1c936fb..51410a8e42 100644
+--- a/cmd/fpga.c
++++ b/cmd/fpga.c
+@@ -330,7 +330,7 @@ static int do_fpga_loadmk(struct cmd_tbl *cmdtp, int flag, int argc,
+ 			return CMD_RET_FAILURE;
+ 		}
+ 
+-		if (!fit_check_format(fit_hdr)) {
++		if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 			puts("Bad FIT image format\n");
+ 			return CMD_RET_FAILURE;
+ 		}
+diff --git a/cmd/nand.c b/cmd/nand.c
+index 92d039af8f..97e117a979 100644
+--- a/cmd/nand.c
++++ b/cmd/nand.c
+@@ -917,7 +917,7 @@ static int nand_load_image(struct cmd_tbl *cmdtp, struct mtd_info *mtd,
+ #if defined(CONFIG_FIT)
+ 	/* This cannot be done earlier, we need complete FIT image in RAM first */
+ 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) {
+-		if (!fit_check_format (fit_hdr)) {
++		if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 			bootstage_error(BOOTSTAGE_ID_NAND_FIT_READ);
+ 			puts ("** Bad FIT image format\n");
+ 			return 1;
+diff --git a/cmd/source.c b/cmd/source.c
+index b6c709a3d2..71f71528ad 100644
+--- a/cmd/source.c
++++ b/cmd/source.c
+@@ -107,7 +107,7 @@ int image_source_script(ulong addr, const char *fit_uname)
+ #if defined(CONFIG_FIT)
+ 	case IMAGE_FORMAT_FIT:
+ 		fit_hdr = buf;
+-		if (!fit_check_format (fit_hdr)) {
++		if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 			puts ("Bad FIT image format\n");
+ 			return 1;
+ 		}
+diff --git a/cmd/ximg.c b/cmd/ximg.c
+index 159ba51648..ef738ebfa2 100644
+--- a/cmd/ximg.c
++++ b/cmd/ximg.c
+@@ -136,7 +136,7 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+ 			"at %08lx ...\n", uname, addr);
+ 
+ 		fit_hdr = (const void *)addr;
+-		if (!fit_check_format(fit_hdr)) {
++		if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 			puts("Bad FIT image format\n");
+ 			return 1;
+ 		}
+diff --git a/common/image-fdt.c b/common/image-fdt.c
+index 327a8c4c39..4105259212 100644
+--- a/common/image-fdt.c
++++ b/common/image-fdt.c
+@@ -399,7 +399,7 @@ int boot_get_fdt(int flag, int argc, char *const argv[], uint8_t arch,
+ 			 */
+ #if CONFIG_IS_ENABLED(FIT)
+ 			/* check FDT blob vs FIT blob */
+-			if (fit_check_format(buf)) {
++			if (!fit_check_format(buf, IMAGE_SIZE_INVAL)) {
+ 				ulong load, len;
+ 
+ 				fdt_noffset = boot_get_fdt_fit(images,
+diff --git a/common/image-fit.c b/common/image-fit.c
+index 9637d747fb..402f08fc9d 100644
+--- a/common/image-fit.c
++++ b/common/image-fit.c
+@@ -8,6 +8,8 @@
+  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+  */
+ 
++#define LOG_CATEGORY LOGC_BOOT
++
+ #ifdef USE_HOSTCC
+ #include "mkimage.h"
+ #include <time.h>
+@@ -1550,49 +1552,41 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp)
+ 	return (comp == image_comp);
+ }
+ 
+-/**
+- * fit_check_format - sanity check FIT image format
+- * @fit: pointer to the FIT format image header
+- *
+- * fit_check_format() runs a basic sanity FIT image verification.
+- * Routine checks for mandatory properties, nodes, etc.
+- *
+- * returns:
+- *     1, on success
+- *     0, on failure
+- */
+-int fit_check_format(const void *fit)
++int fit_check_format(const void *fit, ulong size)
+ {
++	int ret;
++
+ 	/* A FIT image must be a valid FDT */
+-	if (fdt_check_header(fit)) {
+-		debug("Wrong FIT format: not a flattened device tree\n");
+-		return 0;
++	ret = fdt_check_header(fit);
++	if (ret) {
++		log_debug("Wrong FIT format: not a flattened device tree (err=%d)\n",
++			  ret);
++		return -ENOEXEC;
+ 	}
+ 
+ 	/* mandatory / node 'description' property */
+-	if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) {
+-		debug("Wrong FIT format: no description\n");
+-		return 0;
++	if (!fdt_getprop(fit, 0, FIT_DESC_PROP, NULL)) {
++		log_debug("Wrong FIT format: no description\n");
++		return -ENOMSG;
+ 	}
+ 
+ 	if (IMAGE_ENABLE_TIMESTAMP) {
+ 		/* mandatory / node 'timestamp' property */
+-		if (fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) {
+-			debug("Wrong FIT format: no timestamp\n");
+-			return 0;
++		if (!fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL)) {
++			log_debug("Wrong FIT format: no timestamp\n");
++			return -ENODATA;
+ 		}
+ 	}
+ 
+ 	/* mandatory subimages parent '/images' node */
+ 	if (fdt_path_offset(fit, FIT_IMAGES_PATH) < 0) {
+-		debug("Wrong FIT format: no images parent node\n");
+-		return 0;
++		log_debug("Wrong FIT format: no images parent node\n");
++		return -ENOENT;
+ 	}
+ 
+-	return 1;
++	return 0;
+ }
+ 
+-
+ /**
+  * fit_conf_find_compat
+  * @fit: pointer to the FIT format image header
+@@ -1929,7 +1923,7 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
+ 	printf("## Loading %s from FIT Image at %08lx ...\n", prop_name, addr);
+ 
+ 	bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT);
+-	if (!fit_check_format(fit)) {
++	if (fit_check_format(fit, IMAGE_SIZE_INVAL)) {
+ 		printf("Bad FIT %s image format!\n", prop_name);
+ 		bootstage_error(bootstage_id + BOOTSTAGE_SUB_FORMAT);
+ 		return -ENOEXEC;
+diff --git a/common/splash_source.c b/common/splash_source.c
+index f51ca5ddf3..bad9a7790a 100644
+--- a/common/splash_source.c
++++ b/common/splash_source.c
+@@ -336,10 +336,10 @@ static int splash_load_fit(struct splash_location *location, u32 bmp_load_addr)
+ 	if (res < 0)
+ 		return res;
+ 
+-	res = fit_check_format(fit_header);
+-	if (!res) {
++	res = fit_check_format(fit_header, IMAGE_SIZE_INVAL);
++	if (res) {
+ 		debug("Could not find valid FIT image\n");
+-		return -EINVAL;
++		return res;
+ 	}
+ 
+ 	/* Get the splash image node */
+diff --git a/common/update.c b/common/update.c
+index a5879cb52c..f0848954e5 100644
+--- a/common/update.c
++++ b/common/update.c
+@@ -286,7 +286,7 @@ int update_tftp(ulong addr, char *interface, char *devstring)
+ got_update_file:
+ 	fit = map_sysmem(addr, 0);
+ 
+-	if (!fit_check_format((void *)fit)) {
++	if (fit_check_format((void *)fit, IMAGE_SIZE_INVAL)) {
+ 		printf("Bad FIT format of the update file, aborting "
+ 							"auto-update\n");
+ 		return 1;
+@@ -363,7 +363,7 @@ int fit_update(const void *fit)
+ 	if (!fit)
+ 		return -EINVAL;
+ 
+-	if (!fit_check_format((void *)fit)) {
++	if (fit_check_format((void *)fit, IMAGE_SIZE_INVAL)) {
+ 		printf("Bad FIT format of the update file, aborting auto-update\n");
+ 		return -EINVAL;
+ 	}
+diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
+index 44e1ac54c3..18f99676d2 100644
+--- a/drivers/fpga/socfpga_arria10.c
++++ b/drivers/fpga/socfpga_arria10.c
+@@ -565,10 +565,10 @@ static int first_loading_rbf_to_buffer(struct udevice *dev,
+ 	if (ret < 0)
+ 		return ret;
+ 
+-	ret = fit_check_format(buffer_p);
+-	if (!ret) {
++	ret = fit_check_format(buffer_p, IMAGE_SIZE_INVAL);
++	if (ret) {
+ 		debug("FPGA: No valid FIT image was found.\n");
+-		return -EBADF;
++		return ret;
+ 	}
+ 
+ 	confs_noffset = fdt_path_offset(buffer_p, FIT_CONFS_PATH);
+diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c
+index 84db6be624..81265ee356 100644
+--- a/drivers/net/fsl-mc/mc.c
++++ b/drivers/net/fsl-mc/mc.c
+@@ -141,7 +141,7 @@ int parse_mc_firmware_fit_image(u64 mc_fw_addr,
+ 		return -EINVAL;
+ 	}
+ 
+-	if (!fit_check_format(fit_hdr)) {
++	if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) {
+ 		printf("fsl-mc: ERR: Bad firmware image (bad FIT header)\n");
+ 		return -EINVAL;
+ 	}
+diff --git a/drivers/net/pfe_eth/pfe_firmware.c b/drivers/net/pfe_eth/pfe_firmware.c
+index 41999e176d..eee70a2e73 100644
+--- a/drivers/net/pfe_eth/pfe_firmware.c
++++ b/drivers/net/pfe_eth/pfe_firmware.c
+@@ -160,7 +160,7 @@ static int pfe_fit_check(void)
+ 		return ret;
+ 	}
+ 
+-	if (!fit_check_format(pfe_fit_addr)) {
++	if (fit_check_format(pfe_fit_addr, IMAGE_SIZE_INVAL)) {
+ 		printf("PFE Firmware: Bad firmware image (bad FIT header)\n");
+ 		ret = -1;
+ 		return ret;
+diff --git a/include/image.h b/include/image.h
+index 41473dbb9c..8c152c5c5f 100644
+--- a/include/image.h
++++ b/include/image.h
+@@ -134,6 +134,9 @@ extern ulong image_load_addr;		/* Default Load Address */
+ extern ulong image_save_addr;		/* Default Save Address */
+ extern ulong image_save_size;		/* Default Save Size */
+ 
++/* An invalid size, meaning that the image size is not known */
++#define IMAGE_SIZE_INVAL	(-1UL)
++
+ enum ih_category {
+ 	IH_ARCH,
+ 	IH_COMP,
+@@ -1141,7 +1144,23 @@ int fit_image_check_os(const void *fit, int noffset, uint8_t os);
+ int fit_image_check_arch(const void *fit, int noffset, uint8_t arch);
+ int fit_image_check_type(const void *fit, int noffset, uint8_t type);
+ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp);
+-int fit_check_format(const void *fit);
++
++/**
++ * fit_check_format() - Check that the FIT is valid
++ *
++ * This performs various checks on the FIT to make sure it is suitable for
++ * use, looking for mandatory properties, nodes, etc.
++ *
++ * If FIT_FULL_CHECK is enabled, it also runs it through libfdt to make
++ * sure that there are no strange tags or broken nodes in the FIT.
++ *
++ * @fit: pointer to the FIT format image header
++ * @return 0 if OK, -ENOEXEC if not an FDT file, -EINVAL if the full FDT check
++ *	failed (e.g. due to bad structure), -ENOMSG if the description is
++ *	missing, -ENODATA if the timestamp is missing, -ENOENT if the /images
++ *	path is missing
++ */
++int fit_check_format(const void *fit, ulong size);
+ 
+ int fit_conf_find_compat(const void *fit, const void *fdt);
+ 
+diff --git a/tools/fit_common.c b/tools/fit_common.c
+index cdf987d3c1..52b63296f8 100644
+--- a/tools/fit_common.c
++++ b/tools/fit_common.c
+@@ -26,7 +26,8 @@
+ int fit_verify_header(unsigned char *ptr, int image_size,
+ 			struct image_tool_params *params)
+ {
+-	if (fdt_check_header(ptr) != EXIT_SUCCESS || !fit_check_format(ptr))
++	if (fdt_check_header(ptr) != EXIT_SUCCESS ||
++	    fit_check_format(ptr, IMAGE_SIZE_INVAL))
+ 		return EXIT_FAILURE;
+ 
+ 	return EXIT_SUCCESS;
+diff --git a/tools/fit_image.c b/tools/fit_image.c
+index 06faeda7c2..d440d143c6 100644
+--- a/tools/fit_image.c
++++ b/tools/fit_image.c
+@@ -883,7 +883,7 @@ static int fit_extract_contents(void *ptr, struct image_tool_params *params)
+ 	/* Indent string is defined in header image.h */
+ 	p = IMAGE_INDENT_STRING;
+ 
+-	if (!fit_check_format(fit)) {
++	if (fit_check_format(fit, IMAGE_SIZE_INVAL)) {
+ 		printf("Bad FIT image format\n");
+ 		return -1;
+ 	}
+diff --git a/tools/mkimage.h b/tools/mkimage.h
+index 5b096a545b..0d3148444c 100644
+--- a/tools/mkimage.h
++++ b/tools/mkimage.h
+@@ -29,6 +29,8 @@
+ #define debug(fmt,args...)
+ #endif /* MKIMAGE_DEBUG */
+ 
++#define log_debug(fmt, args...)	debug(fmt, ##args)
++
+ static inline void *map_sysmem(ulong paddr, unsigned long len)
+ {
+ 	return (void *)(uintptr_t)paddr;
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch
new file mode 100644
index 0000000..86f7e8c
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch
@@ -0,0 +1,105 @@
+From 6f3c2d8aa5e6cbd80b5e869bbbddecb66c329d01 Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:10 -0700
+Subject: [PATCH] image: Add an option to do a full check of the FIT
+
+Some strange modifications of the FIT can introduce security risks. Add an
+option to check it thoroughly, using libfdt's fdt_check_full() function.
+
+Enable this by default if signature verification is enabled.
+
+CVE-2021-27097
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27097
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/6f3c2d8aa5e6cbd80b5e869bbbddecb66c329d01]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ common/Kconfig.boot | 20 ++++++++++++++++++++
+ common/image-fit.c  | 16 ++++++++++++++++
+ 2 files changed, 36 insertions(+)
+
+diff --git a/common/Kconfig.boot b/common/Kconfig.boot
+index 5eaabdfc27..7532e55edb 100644
+--- a/common/Kconfig.boot
++++ b/common/Kconfig.boot
+@@ -63,6 +63,15 @@ config FIT_ENABLE_SHA512_SUPPORT
+ 	  SHA512 checksum is a 512-bit (64-byte) hash value used to check that
+ 	  the image contents have not been corrupted.
+ 
++config FIT_FULL_CHECK
++	bool "Do a full check of the FIT before using it"
++	default y
++	help
++	  Enable this do a full check of the FIT to make sure it is valid. This
++	  helps to protect against carefully crafted FITs which take advantage
++	  of bugs or omissions in the code. This includes a bad structure,
++	  multiple root nodes and the like.
++
+ config FIT_SIGNATURE
+ 	bool "Enable signature verification of FIT uImages"
+ 	depends on DM
+@@ -70,6 +79,7 @@ config FIT_SIGNATURE
+ 	select RSA
+ 	select RSA_VERIFY
+ 	select IMAGE_SIGN_INFO
++	select FIT_FULL_CHECK
+ 	help
+ 	  This option enables signature verification of FIT uImages,
+ 	  using a hash signed and verified using RSA. If
+@@ -159,6 +169,15 @@ config SPL_FIT_PRINT
+ 	help
+ 	  Support printing the content of the fitImage in a verbose manner in SPL.
+ 
++config SPL_FIT_FULL_CHECK
++	bool "Do a full check of the FIT before using it"
++	help
++	  Enable this do a full check of the FIT to make sure it is valid. This
++	  helps to protect against carefully crafted FITs which take advantage
++	  of bugs or omissions in the code. This includes a bad structure,
++	  multiple root nodes and the like.
++
++
+ config SPL_FIT_SIGNATURE
+ 	bool "Enable signature verification of FIT firmware within SPL"
+ 	depends on SPL_DM
+@@ -168,6 +187,7 @@ config SPL_FIT_SIGNATURE
+ 	select SPL_RSA
+ 	select SPL_RSA_VERIFY
+ 	select SPL_IMAGE_SIGN_INFO
++	select SPL_FIT_FULL_CHECK
+ 
+ config SPL_LOAD_FIT
+ 	bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
+diff --git a/common/image-fit.c b/common/image-fit.c
+index f6c0428a96..bcf395f6a1 100644
+--- a/common/image-fit.c
++++ b/common/image-fit.c
+@@ -1580,6 +1580,22 @@ int fit_check_format(const void *fit, ulong size)
+ 		return -ENOEXEC;
+ 	}
+ 
++	if (CONFIG_IS_ENABLED(FIT_FULL_CHECK)) {
++		/*
++		 * If we are not given the size, make do wtih calculating it.
++		 * This is not as secure, so we should consider a flag to
++		 * control this.
++		 */
++		if (size == IMAGE_SIZE_INVAL)
++			size = fdt_totalsize(fit);
++		ret = fdt_check_full(fit, size);
++
++		if (ret) {
++			log_debug("FIT check error %d\n", ret);
++			return -EINVAL;
++		}
++	}
++
+ 	/* mandatory / node 'description' property */
+ 	if (!fdt_getprop(fit, 0, FIT_DESC_PROP, NULL)) {
+ 		log_debug("Wrong FIT format: no description\n");
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch
new file mode 100644
index 0000000..060cac1
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch
@@ -0,0 +1,73 @@
+From 124c255731c76a2b09587378b2bcce561bcd3f2d Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:11 -0700
+Subject: [PATCH] libfdt: Check for multiple/invalid root nodes
+
+It is possible to construct a devicetree blob with multiple root nodes.
+Update fdt_check_full() to check for this, along with a root node with an
+invalid name.
+
+CVE-2021-27097
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27097
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/124c255731c76a2b09587378b2bcce561bcd3f2d]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ scripts/dtc/libfdt/fdt_ro.c | 17 +++++++++++++++++
+ test/py/tests/test_vboot.py |  3 ++-
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c
+index d984bab036..efe7efe921 100644
+--- a/scripts/dtc/libfdt/fdt_ro.c
++++ b/scripts/dtc/libfdt/fdt_ro.c
+@@ -867,6 +867,7 @@ int fdt_check_full(const void *fdt, size_t bufsize)
+ 	unsigned depth = 0;
+ 	const void *prop;
+ 	const char *propname;
++	bool expect_end = false;
+ 
+ 	if (bufsize < FDT_V1_SIZE)
+ 		return -FDT_ERR_TRUNCATED;
+@@ -887,6 +888,10 @@ int fdt_check_full(const void *fdt, size_t bufsize)
+ 		if (nextoffset < 0)
+ 			return nextoffset;
+ 
++		/* If we see two root nodes, something is wrong */
++		if (expect_end && tag != FDT_END)
++			return -FDT_ERR_BADLAYOUT;
++
+ 		switch (tag) {
+ 		case FDT_NOP:
+ 			break;
+@@ -900,12 +905,24 @@ int fdt_check_full(const void *fdt, size_t bufsize)
+ 			depth++;
+ 			if (depth > INT_MAX)
+ 				return -FDT_ERR_BADSTRUCTURE;
++
++			/* The root node must have an empty name */
++			if (depth == 1) {
++				const char *name;
++				int len;
++
++				name = fdt_get_name(fdt, offset, &len);
++				if (*name || len)
++					return -FDT_ERR_BADLAYOUT;
++			}
+ 			break;
+ 
+ 		case FDT_END_NODE:
+ 			if (depth == 0)
+ 				return -FDT_ERR_BADSTRUCTURE;
+ 			depth--;
++			if (depth == 0)
++				expect_end = true;
+ 			break;
+ 
+ 		case FDT_PROP:
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch
new file mode 100644
index 0000000..562f815
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch
@@ -0,0 +1,245 @@
+From 79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4 Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:06 -0700
+Subject: [PATCH] fit: Don't allow verification of images with @ nodes
+
+When searching for a node called 'fred', any unit address appended to the
+name is ignored by libfdt, meaning that 'fred' can match 'fred@1'. This
+means that we cannot be sure that the node originally intended is the one
+that is used.
+
+Disallow use of nodes with unit addresses.
+
+Update the forge test also, since it uses @ addresses.
+
+CVE-2021-27138
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27138
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ common/image-fit-sig.c       | 22 ++++++++++++++++++++--
+ common/image-fit.c           | 20 +++++++++++++++-----
+ test/py/tests/test_fit.py    | 24 ++++++++++++------------
+ test/py/tests/vboot_forge.py | 12 ++++++------
+ 4 files changed, 53 insertions(+), 25 deletions(-)
+
+diff --git a/common/image-fit-sig.c b/common/image-fit-sig.c
+index 897e04c7a3..34ebb8edfe 100644
+--- a/common/image-fit-sig.c
++++ b/common/image-fit-sig.c
+@@ -149,6 +149,14 @@ static int fit_image_verify_sig(const void *fit, int image_noffset,
+ 	fdt_for_each_subnode(noffset, fit, image_noffset) {
+ 		const char *name = fit_get_name(fit, noffset, NULL);
+ 
++		/*
++		 * We don't support this since libfdt considers names with the
++		 * name root but different @ suffix to be equal
++		 */
++		if (strchr(name, '@')) {
++			err_msg = "Node name contains @";
++			goto error;
++		}
+ 		if (!strncmp(name, FIT_SIG_NODENAME,
+ 			     strlen(FIT_SIG_NODENAME))) {
+ 			ret = fit_image_check_sig(fit, noffset, data,
+@@ -398,9 +406,10 @@ error:
+ 	return -EPERM;
+ }
+ 
+-int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
+-				    const void *sig_blob)
++static int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
++					   const void *sig_blob)
+ {
++	const char *name = fit_get_name(fit, conf_noffset, NULL);
+ 	int noffset;
+ 	int sig_node;
+ 	int verified = 0;
+@@ -408,6 +417,15 @@ int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
+ 	bool reqd_policy_all = true;
+ 	const char *reqd_mode;
+ 
++	/*
++	 * We don't support this since libfdt considers names with the
++	 * name root but different @ suffix to be equal
++	 */
++	if (strchr(name, '@')) {
++		printf("Configuration node '%s' contains '@'\n", name);
++		return -EPERM;
++	}
++
+ 	/* Work out what we need to verify */
+ 	sig_node = fdt_subnode_offset(sig_blob, 0, FIT_SIG_NODENAME);
+ 	if (sig_node < 0) {
+diff --git a/common/image-fit.c b/common/image-fit.c
+index adc3e551de..c3dc814115 100644
+--- a/common/image-fit.c
++++ b/common/image-fit.c
+@@ -1369,21 +1369,31 @@ error:
+  */
+ int fit_image_verify(const void *fit, int image_noffset)
+ {
++	const char *name = fit_get_name(fit, image_noffset, NULL);
+ 	const void	*data;
+ 	size_t		size;
+-	int		noffset = 0;
+ 	char		*err_msg = "";
+ 
++	if (strchr(name, '@')) {
++		/*
++		 * We don't support this since libfdt considers names with the
++		 * name root but different @ suffix to be equal
++		 */
++		err_msg = "Node name contains @";
++		goto err;
++	}
+ 	/* Get image data and data length */
+ 	if (fit_image_get_data_and_size(fit, image_noffset, &data, &size)) {
+ 		err_msg = "Can't get image data/size";
+-		printf("error!\n%s for '%s' hash node in '%s' image node\n",
+-		       err_msg, fit_get_name(fit, noffset, NULL),
+-		       fit_get_name(fit, image_noffset, NULL));
+-		return 0;
++		goto err;
+ 	}
+ 
+ 	return fit_image_verify_with_data(fit, image_noffset, data, size);
++
++err:
++	printf("error!\n%s in '%s' image node\n", err_msg,
++	       fit_get_name(fit, image_noffset, NULL));
++	return 0;
+ }
+ 
+ /**
+diff --git a/test/py/tests/test_fit.py b/test/py/tests/test_fit.py
+index 84b3f95850..6d5b43c3ba 100755
+--- a/test/py/tests/test_fit.py
++++ b/test/py/tests/test_fit.py
+@@ -17,7 +17,7 @@ base_its = '''
+         #address-cells = <1>;
+ 
+         images {
+-                kernel@1 {
++                kernel-1 {
+                         data = /incbin/("%(kernel)s");
+                         type = "kernel";
+                         arch = "sandbox";
+@@ -26,7 +26,7 @@ base_its = '''
+                         load = <0x40000>;
+                         entry = <0x8>;
+                 };
+-                kernel@2 {
++                kernel-2 {
+                         data = /incbin/("%(loadables1)s");
+                         type = "kernel";
+                         arch = "sandbox";
+@@ -35,19 +35,19 @@ base_its = '''
+                         %(loadables1_load)s
+                         entry = <0x0>;
+                 };
+-                fdt@1 {
++                fdt-1 {
+                         description = "snow";
+                         data = /incbin/("%(fdt)s");
+                         type = "flat_dt";
+                         arch = "sandbox";
+                         %(fdt_load)s
+                         compression = "%(compression)s";
+-                        signature@1 {
++                        signature-1 {
+                                 algo = "sha1,rsa2048";
+                                 key-name-hint = "dev";
+                         };
+                 };
+-                ramdisk@1 {
++                ramdisk-1 {
+                         description = "snow";
+                         data = /incbin/("%(ramdisk)s");
+                         type = "ramdisk";
+@@ -56,7 +56,7 @@ base_its = '''
+                         %(ramdisk_load)s
+                         compression = "%(compression)s";
+                 };
+-                ramdisk@2 {
++                ramdisk-2 {
+                         description = "snow";
+                         data = /incbin/("%(loadables2)s");
+                         type = "ramdisk";
+@@ -67,10 +67,10 @@ base_its = '''
+                 };
+         };
+         configurations {
+-                default = "conf@1";
+-                conf@1 {
+-                        kernel = "kernel@1";
+-                        fdt = "fdt@1";
++                default = "conf-1";
++                conf-1 {
++                        kernel = "kernel-1";
++                        fdt = "fdt-1";
+                         %(ramdisk_config)s
+                         %(loadables_config)s
+                 };
+@@ -410,7 +410,7 @@ def test_fit(u_boot_console):
+ 
+         # Try a ramdisk
+         with cons.log.section('Kernel + FDT + Ramdisk load'):
+-            params['ramdisk_config'] = 'ramdisk = "ramdisk@1";'
++            params['ramdisk_config'] = 'ramdisk = "ramdisk-1";'
+             params['ramdisk_load'] = 'load = <%#x>;' % params['ramdisk_addr']
+             fit = make_fit(mkimage, params)
+             cons.restart_uboot()
+@@ -419,7 +419,7 @@ def test_fit(u_boot_console):
+ 
+         # Configuration with some Loadables
+         with cons.log.section('Kernel + FDT + Ramdisk load + Loadables'):
+-            params['loadables_config'] = 'loadables = "kernel@2", "ramdisk@2";'
++            params['loadables_config'] = 'loadables = "kernel-2", "ramdisk-2";'
+             params['loadables1_load'] = ('load = <%#x>;' %
+                                          params['loadables1_addr'])
+             params['loadables2_load'] = ('load = <%#x>;' %
+diff --git a/test/py/tests/vboot_forge.py b/test/py/tests/vboot_forge.py
+index 0fb7ef4024..b41105bd0e 100644
+--- a/test/py/tests/vboot_forge.py
++++ b/test/py/tests/vboot_forge.py
+@@ -376,12 +376,12 @@ def manipulate(root, strblock):
+     """
+     Maliciously manipulates the structure to create a crafted FIT file
+     """
+-    # locate /images/kernel@1 (frankly, it just expects it to be the first one)
++    # locate /images/kernel-1 (frankly, it just expects it to be the first one)
+     kernel_node = root[0][0]
+     # clone it to save time filling all the properties
+     fake_kernel = kernel_node.clone()
+     # rename the node
+-    fake_kernel.name = b'kernel@2'
++    fake_kernel.name = b'kernel-2'
+     # get rid of signatures/hashes
+     fake_kernel.children = []
+     # NOTE: this simply replaces the first prop... either description or data
+@@ -391,13 +391,13 @@ def manipulate(root, strblock):
+     root[0].children.append(fake_kernel)
+ 
+     # modify the default configuration
+-    root[1].props[0].value = b'conf@2\x00'
++    root[1].props[0].value = b'conf-2\x00'
+     # clone the first (only?) configuration
+     fake_conf = root[1][0].clone()
+     # rename and change kernel and fdt properties to select the crafted kernel
+-    fake_conf.name = b'conf@2'
+-    fake_conf.props[0].value = b'kernel@2\x00'
+-    fake_conf.props[1].value = b'fdt@1\x00'
++    fake_conf.name = b'conf-2'
++    fake_conf.props[0].value = b'kernel-2\x00'
++    fake_conf.props[1].value = b'fdt-1\x00'
+     # insert the new configuration under /configurations
+     root[1].children.append(fake_conf)
+ 
diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch
new file mode 100644
index 0000000..946196c
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch
@@ -0,0 +1,109 @@
+From 3f04db891a353f4b127ed57279279f851c6b4917 Mon Sep 17 00:00:00 2001
+From: Simon Glass <sjg@chromium.org>
+Date: Mon, 15 Feb 2021 17:08:12 -0700
+Subject: [PATCH] image: Check for unit addresses in FITs
+
+Using unit addresses in a FIT is a security risk. Add a check for this
+and disallow it.
+
+CVE-2021-27138
+
+Signed-off-by: Simon Glass <sjg@chromium.org>
+Reported-by: Bruce Monroe <bruce.monroe@intel.com>
+Reported-by: Arie Haenel <arie.haenel@intel.com>
+Reported-by: Julien Lenoir <julien.lenoir@intel.com>
+
+CVE: CVE-2021-27138
+Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/3f04db891a353f4b127ed57279279f851c6b4917]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ common/image-fit.c          | 56 +++++++++++++++++++++++++++++++++++++++++----
+ test/py/tests/test_vboot.py |  9 ++++----
+ 2 files changed, 57 insertions(+), 8 deletions(-)
+
+diff --git a/common/image-fit.c b/common/image-fit.c
+index bcf395f6a1..28b3d2b191 100644
+--- a/common/image-fit.c
++++ b/common/image-fit.c
+@@ -1568,6 +1568,34 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp)
+ 	return (comp == image_comp);
+ }
+ 
++/**
++ * fdt_check_no_at() - Check for nodes whose names contain '@'
++ *
++ * This checks the parent node and all subnodes recursively
++ *
++ * @fit: FIT to check
++ * @parent: Parent node to check
++ * @return 0 if OK, -EADDRNOTAVAIL is a node has a name containing '@'
++ */
++static int fdt_check_no_at(const void *fit, int parent)
++{
++	const char *name;
++	int node;
++	int ret;
++
++	name = fdt_get_name(fit, parent, NULL);
++	if (!name || strchr(name, '@'))
++		return -EADDRNOTAVAIL;
++
++	fdt_for_each_subnode(node, fit, parent) {
++		ret = fdt_check_no_at(fit, node);
++		if (ret)
++			return ret;
++	}
++
++	return 0;
++}
++
+ int fit_check_format(const void *fit, ulong size)
+ {
+ 	int ret;
+@@ -1589,10 +1617,27 @@ int fit_check_format(const void *fit, ulong size)
+ 		if (size == IMAGE_SIZE_INVAL)
+ 			size = fdt_totalsize(fit);
+ 		ret = fdt_check_full(fit, size);
++		if (ret)
++			ret = -EINVAL;
++
++		/*
++		 * U-Boot stopped using unit addressed in 2017. Since libfdt
++		 * can match nodes ignoring any unit address, signature
++		 * verification can see the wrong node if one is inserted with
++		 * the same name as a valid node but with a unit address
++		 * attached. Protect against this by disallowing unit addresses.
++		 */
++		if (!ret && CONFIG_IS_ENABLED(FIT_SIGNATURE)) {
++			ret = fdt_check_no_at(fit, 0);
+ 
++			if (ret) {
++				log_debug("FIT check error %d\n", ret);
++				return ret;
++			}
++		}
+ 		if (ret) {
+ 			log_debug("FIT check error %d\n", ret);
+-			return -EINVAL;
++			return ret;
+ 		}
+ 	}
+ 
+@@ -1955,10 +2000,13 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
+ 	printf("## Loading %s from FIT Image at %08lx ...\n", prop_name, addr);
+ 
+ 	bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT);
+-	if (fit_check_format(fit, IMAGE_SIZE_INVAL)) {
+-		printf("Bad FIT %s image format!\n", prop_name);
++	ret = fit_check_format(fit, IMAGE_SIZE_INVAL);
++	if (ret) {
++		printf("Bad FIT %s image format! (err=%d)\n", prop_name, ret);
++		if (CONFIG_IS_ENABLED(FIT_SIGNATURE) && ret == -EADDRNOTAVAIL)
++			printf("Signature checking prevents use of unit addresses (@) in nodes\n");
+ 		bootstage_error(bootstage_id + BOOTSTAGE_SUB_FORMAT);
+-		return -ENOEXEC;
++		return ret;
+ 	}
+ 	bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT_OK);
+ 	if (fit_uname) {
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
index 5a8035f..993478a 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -15,6 +15,13 @@
 SRCREV = "c4fddedc48f336eabc4ce3f74940e6aa372de18c"
 
 SRC_URI = "git://git.denx.de/u-boot.git \
+           file://0001-add-valid-fdt-check.patch \
+           file://CVE-2021-27097-1.patch \
+           file://CVE-2021-27097-2.patch \
+           file://CVE-2021-27097-3.patch \
+           file://CVE-2021-27097-4.patch \
+           file://CVE-2021-27138-1.patch \
+           file://CVE-2021-27138-2.patch \
           "
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb b/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb
index 2eef1e9..bbbc99b 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb
+++ b/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb
@@ -1,4 +1,6 @@
 require u-boot-common.inc
 require u-boot.inc
 
+SRC_URI_append = " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch"
+
 DEPENDS += "bc-native dtc-native python3-setuptools-native"
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/0001-avoid-start-failure-with-bind-user.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-avoid-start-failure-with-bind-user.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/0001-avoid-start-failure-with-bind-user.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-avoid-start-failure-with-bind-user.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-named-lwresd-V-and-start-log-hide-build-options.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/0001-named-lwresd-V-and-start-log-hide-build-options.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-named-lwresd-V-and-start-log-hide-build-options.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/bind-ensure-searching-for-json-headers-searches-sysr.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind-ensure-searching-for-json-headers-searches-sysr.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/bind-ensure-searching-for-json-headers-searches-sysr.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/bind-ensure-searching-for-json-headers-searches-sysr.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/bind9 b/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind9
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/bind9
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/bind9
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/conf.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/conf.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/conf.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/conf.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/generate-rndc-key.sh b/poky/meta/recipes-connectivity/bind/bind-9.16.12/generate-rndc-key.sh
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/generate-rndc-key.sh
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/generate-rndc-key.sh
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/init.d-add-support-for-read-only-rootfs.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/init.d-add-support-for-read-only-rootfs.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/init.d-add-support-for-read-only-rootfs.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/init.d-add-support-for-read-only-rootfs.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/make-etc-initd-bind-stop-work.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.12/make-etc-initd-bind-stop-work.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/make-etc-initd-bind-stop-work.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/make-etc-initd-bind-stop-work.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.11/named.service b/poky/meta/recipes-connectivity/bind/bind-9.16.12/named.service
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.11/named.service
rename to poky/meta/recipes-connectivity/bind/bind-9.16.12/named.service
diff --git a/poky/meta/recipes-connectivity/bind/bind_9.16.11.bb b/poky/meta/recipes-connectivity/bind/bind_9.16.12.bb
similarity index 92%
rename from poky/meta/recipes-connectivity/bind/bind_9.16.11.bb
rename to poky/meta/recipes-connectivity/bind/bind_9.16.12.bb
index f48cc74..09f7703 100644
--- a/poky/meta/recipes-connectivity/bind/bind_9.16.11.bb
+++ b/poky/meta/recipes-connectivity/bind/bind_9.16.12.bb
@@ -20,7 +20,7 @@
            file://0001-avoid-start-failure-with-bind-user.patch \
            "
 
-SRC_URI[sha256sum] = "0111f64dd7d8f515cfa129e181cce96ff82070d1b27f11a21f6856110d0699c1"
+SRC_URI[sha256sum] = "9914af9311fd349cab441097898d94fb28d0bfd9bf6ed04fe1f97f042644da7f"
 
 UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
 # stay at 9.16 follow the ESV versions divisible by 4
@@ -113,7 +113,10 @@
 FILES_${PN} += "${sbindir}/generate-rndc-key.sh"
 
 PACKAGE_BEFORE_PN += "${PN}-libs"
-FILES_${PN}-libs = "${libdir}/*.so* ${libdir}/named/*.so*"
+# special arrangement below due to
+# https://github.com/isc-projects/bind9/commit/0e25af628cd776f98c04fc4cc59048f5448f6c88
+FILES_SOLIBSDEV = "${libdir}/*[!0-9].so ${libdir}/libbind9.so"
+FILES_${PN}-libs = "${libdir}/named/*.so* ${libdir}/*-${PV}.so"
 FILES_${PN}-staticdev += "${libdir}/*.la"
 
 PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-bind', '', d)}"
diff --git a/poky/meta/recipes-connectivity/openssh/openssh/0f90440ca70abab947acbd77795e9f130967956c.patch b/poky/meta/recipes-connectivity/openssh/openssh/0f90440ca70abab947acbd77795e9f130967956c.patch
deleted file mode 100644
index b88bc18..0000000
--- a/poky/meta/recipes-connectivity/openssh/openssh/0f90440ca70abab947acbd77795e9f130967956c.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0f90440ca70abab947acbd77795e9f130967956c Mon Sep 17 00:00:00 2001
-From: Darren Tucker <dtucker@dtucker.net>
-Date: Fri, 20 Nov 2020 13:37:54 +1100
-Subject: [PATCH] Add new pselect6_time64 syscall on ARM.
-
-This is apparently needed on armhfp/armv7hl.  bz#3232, patch from
-jjelen at redhat.com.
----
- sandbox-seccomp-filter.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-Upstream-Status: Backport
-[fixes issues on 32bit IA and probably other 32 bit platforms too with glibc 2.33]
-
-diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
-index e0768c063..5065ae7ef 100644
---- a/sandbox-seccomp-filter.c
-+++ b/sandbox-seccomp-filter.c
-@@ -267,6 +267,9 @@ static const struct sock_filter preauth_insns[] = {
- #ifdef __NR_pselect6
- 	SC_ALLOW(__NR_pselect6),
- #endif
-+#ifdef __NR_pselect6_time64
-+	SC_ALLOW(__NR_pselect6_time64),
-+#endif
- #ifdef __NR_read
- 	SC_ALLOW(__NR_read),
- #endif
diff --git a/poky/meta/recipes-connectivity/openssh/openssh_8.4p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_8.5p1.bb
similarity index 96%
rename from poky/meta/recipes-connectivity/openssh/openssh_8.4p1.bb
rename to poky/meta/recipes-connectivity/openssh/openssh_8.5p1.bb
index 128e2e3..6a49cf7 100644
--- a/poky/meta/recipes-connectivity/openssh/openssh_8.4p1.bb
+++ b/poky/meta/recipes-connectivity/openssh/openssh_8.5p1.bb
@@ -5,8 +5,8 @@
 and for executing commands on a remote machine."
 HOMEPAGE = "http://www.openssh.com/"
 SECTION = "console/network"
-LICENSE = "BSD & ISC & MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=18d9e5a8b3dd1790d73502f50426d4d3"
+LICENSE = "BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & BSD & ISC & MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=d9d2753bdef9f19466dc7bc959114b11"
 
 DEPENDS = "zlib openssl virtual/crypt"
 DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
@@ -24,9 +24,8 @@
            file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
            file://sshd_check_keys \
            file://add-test-support-for-busybox.patch \
-           file://0f90440ca70abab947acbd77795e9f130967956c.patch \
            "
-SRC_URI[sha256sum] = "5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24"
+SRC_URI[sha256sum] = "f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25"
 
 # This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7
 # and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch b/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch
new file mode 100644
index 0000000..d62b934
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch
@@ -0,0 +1,62 @@
+From 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Thu, 29 Aug 2019 13:56:21 -0700
+Subject: [PATCH] Add support for io_pgetevents_time64 syscall
+
+32-bit architectures that are y2038 safe don't include syscalls that use
+32-bit time_t. Instead these architectures have suffixed syscalls that
+always use a 64-bit time_t. In the case of the io_getevents syscall the
+syscall has been replaced with the io_pgetevents_time64 syscall instead.
+
+This patch changes the io_getevents() function to use the correct
+syscall based on the avaliable syscalls and the time_t size. We will
+only use the new 64-bit time_t syscall if the architecture is using a
+64-bit time_t. This is to avoid having to deal with 32/64-bit
+conversions and relying on a 64-bit timespec struct on 32-bit time_t
+platforms. As of Linux 5.3 there are no 32-bit time_t architectures
+without __NR_io_getevents. In the future if a 32-bit time_t architecture
+wants to use the 64-bit syscalls we can handle the conversion.
+
+This fixes build failures on 32-bit RISC-V.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+
+Reviewed-by: Richard Levitte <levitte@openssl.org>
+Reviewed-by: Paul Dale <paul.dale@oracle.com>
+(Merged from https://github.com/openssl/openssl/pull/9819)
+Upstream-Status: Accepted
+---
+ engines/e_afalg.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/engines/e_afalg.c b/engines/e_afalg.c
+index dacbe358cb..99516cb1bb 100644
+--- a/engines/e_afalg.c
++++ b/engines/e_afalg.c
+@@ -125,7 +125,23 @@ static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,
+                                struct io_event *events,
+                                struct timespec *timeout)
+ {
++#if defined(__NR_io_getevents)
+     return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
++#elif defined(__NR_io_pgetevents_time64)
++    /* Let's only support the 64 suffix syscalls for 64-bit time_t.
++     * This simplifies the code for us as we don't need to use a 64-bit
++     * version of timespec with a 32-bit time_t and handle converting
++     * between 64-bit and 32-bit times and check for overflows.
++     */
++    if (sizeof(timeout->tv_sec) == 8)
++        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);
++    else {
++        errno = ENOSYS;
++        return -1;
++    }
++#else
++# error "We require either the io_getevents syscall or __NR_io_pgetevents_time64."
++#endif
+ }
+ 
+ static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch b/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch
new file mode 100644
index 0000000..c8bc6f5
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch
@@ -0,0 +1,99 @@
+From e5499a3cac1e823c3e0697e8667e952317b70cc8 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Thu, 4 Mar 2021 12:10:11 -0500
+Subject: [PATCH] Fixup support for io_pgetevents_time64 syscall
+
+This is a fixup for the original commit 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc
+"Add support for io_pgetevents_time64 syscall" that didn't correctly
+work for 32-bit architecutres with a 64-bit time_t that aren't RISC-V.
+
+For a full discussion of the issue see:
+https://github.com/openssl/openssl/commit/5b5e2985f355c8e99c196d9ce5d02c15bebadfbc
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+
+Reviewed-by: Tomas Mraz <tomas@openssl.org>
+Reviewed-by: Paul Dale <pauli@openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/14432)
+Upstream-Status: Accepted
+---
+ engines/e_afalg.c | 55 ++++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 42 insertions(+), 13 deletions(-)
+
+diff --git a/engines/e_afalg.c b/engines/e_afalg.c
+index 9480d7c24b..4e9d67db2d 100644
+--- a/engines/e_afalg.c
++++ b/engines/e_afalg.c
+@@ -124,27 +124,56 @@ static ossl_inline int io_read(aio_context_t ctx, long n, struct iocb **iocb)
+     return syscall(__NR_io_submit, ctx, n, iocb);
+ }
+ 
++/* A version of 'struct timespec' with 32-bit time_t and nanoseconds.  */
++struct __timespec32
++{
++  __kernel_long_t tv_sec;
++  __kernel_long_t tv_nsec;
++};
++
+ static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,
+                                struct io_event *events,
+                                struct timespec *timeout)
+ {
++#if defined(__NR_io_pgetevents_time64)
++    /* Check if we are a 32-bit architecture with a 64-bit time_t */
++    if (sizeof(*timeout) != sizeof(struct __timespec32)) {
++        int ret = syscall(__NR_io_pgetevents_time64, ctx, min, max, events,
++                          timeout, NULL);
++        if (ret == 0 || errno != ENOSYS)
++            return ret;
++    }
++#endif
++
+ #if defined(__NR_io_getevents)
+-    return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
+-#elif defined(__NR_io_pgetevents_time64)
+-    /* Let's only support the 64 suffix syscalls for 64-bit time_t.
+-     * This simplifies the code for us as we don't need to use a 64-bit
+-     * version of timespec with a 32-bit time_t and handle converting
+-     * between 64-bit and 32-bit times and check for overflows.
+-     */
+-    if (sizeof(timeout->tv_sec) == 8)
+-        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);
++    if (sizeof(*timeout) == sizeof(struct __timespec32))
++        /*
++         * time_t matches our architecture length, we can just use
++         * __NR_io_getevents
++         */
++        return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
+     else {
+-        errno = ENOSYS;
+-        return -1;
++        /*
++         * We don't have __NR_io_pgetevents_time64, but we are using a
++         * 64-bit time_t on a 32-bit architecture. If we can fit the
++         * timeout value in a 32-bit time_t, then let's do that
++         * and then use the __NR_io_getevents syscall.
++         */
++        if (timeout && timeout->tv_sec == (long)timeout->tv_sec) {
++            struct __timespec32 ts32;
++
++            ts32.tv_sec = (__kernel_long_t) timeout->tv_sec;
++            ts32.tv_nsec = (__kernel_long_t) timeout->tv_nsec;
++
++            return syscall(__NR_io_getevents, ctx, min, max, events, ts32);
++        } else {
++            return syscall(__NR_io_getevents, ctx, min, max, events, NULL);
++        }
+     }
+-#else
+-# error "We require either the io_getevents syscall or __NR_io_pgetevents_time64."
+ #endif
++
++    errno = ENOSYS;
++    return -1;
+ }
+ 
+ static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_1.1.1j.bb b/poky/meta/recipes-connectivity/openssl/openssl_1.1.1k.bb
similarity index 96%
rename from poky/meta/recipes-connectivity/openssl/openssl_1.1.1j.bb
rename to poky/meta/recipes-connectivity/openssl/openssl_1.1.1k.bb
index 181790e..e518cb6 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl_1.1.1j.bb
+++ b/poky/meta/recipes-connectivity/openssl/openssl_1.1.1k.bb
@@ -23,7 +23,12 @@
            file://environment.d-openssl.sh \
            "
 
-SRC_URI[sha256sum] = "aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf"
+SRC_URI_append_riscv32 = " \
+           file://0003-Add-support-for-io_pgetevents_time64-syscall.patch \
+           file://0004-Fixup-support-for-io_pgetevents_time64-syscall.patch \
+           "
+
+SRC_URI[sha256sum] = "892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5"
 
 inherit lib_package multilib_header multilib_script ptest
 MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
diff --git a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch
new file mode 100644
index 0000000..004b1db
--- /dev/null
+++ b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch
@@ -0,0 +1,58 @@
+From 8460e3230988ef2ec13ce6b69b687e941f6cdb32 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@codeaurora.org>
+Date: Tue, 8 Dec 2020 23:52:50 +0200
+Subject: [PATCH] P2P: Fix a corner case in peer addition based on PD Request
+
+p2p_add_device() may remove the oldest entry if there is no room in the
+peer table for a new peer. This would result in any pointer to that
+removed entry becoming stale. A corner case with an invalid PD Request
+frame could result in such a case ending up using (read+write) freed
+memory. This could only by triggered when the peer table has reached its
+maximum size and the PD Request frame is received from the P2P Device
+Address of the oldest remaining entry and the frame has incorrect P2P
+Device Address in the payload.
+
+Fix this by fetching the dev pointer again after having called
+p2p_add_device() so that the stale pointer cannot be used.
+
+Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request")
+Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
+
+Upstream-Status: Backport
+CVE: CVE-2021-27803
+
+Reference to upstream patch:
+[https://w1.fi/cgit/hostap/commit/?id=8460e3230988ef2ec13ce6b69b687e941f6cdb32]
+
+Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
+---
+ src/p2p/p2p_pd.c | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c
+index 3994ec0..05fd593 100644
+--- a/src/p2p/p2p_pd.c
++++ b/src/p2p/p2p_pd.c
+@@ -595,14 +595,12 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
+ 			goto out;
+ 		}
+ 
++		dev = p2p_get_device(p2p, sa);
+ 		if (!dev) {
+-			dev = p2p_get_device(p2p, sa);
+-			if (!dev) {
+-				p2p_dbg(p2p,
+-					"Provision Discovery device not found "
+-					MACSTR, MAC2STR(sa));
+-				goto out;
+-			}
++			p2p_dbg(p2p,
++				"Provision Discovery device not found "
++				MACSTR, MAC2STR(sa));
++			goto out;
+ 		}
+ 	} else if (msg.wfd_subelems) {
+ 		wpabuf_free(dev->info.wfd_subelems);
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
index caa6018..357c286 100644
--- a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
+++ b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
@@ -31,6 +31,7 @@
            file://0002-WPS-UPnP-Fix-event-message-generation-using-a-long-U.patch \
            file://0003-WPS-UPnP-Handle-HTTP-initiation-failures-for-events-.patch \
            file://CVE-2021-0326.patch \
+           file://CVE-2021-27803.patch \
           "
 SRC_URI[md5sum] = "2d2958c782576dc9901092fbfecb4190"
 SRC_URI[sha256sum] = "fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17"
diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb
similarity index 93%
rename from poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb
rename to poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb
index 3804f4f..0021e45 100644
--- a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb
+++ b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb
@@ -44,6 +44,9 @@
 	fi
 
 }
+do_install_append_qemuppc64 () {
+            echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab
+}
 
 pkg_postinst_${PN} () {
 # run this on host and on target
diff --git a/poky/meta/recipes-core/busybox/busybox/defconfig b/poky/meta/recipes-core/busybox/busybox/defconfig
index 4334a9d..701d48d 100644
--- a/poky/meta/recipes-core/busybox/busybox/defconfig
+++ b/poky/meta/recipes-core/busybox/busybox/defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Busybox version: 1.30.1
-# Sun Feb 17 18:12:27 2019
+# Busybox version: 1.33.0
+# Wed Mar 10 13:29:25 2021
 #
 CONFIG_HAVE_DOT_CONFIG=y
 
@@ -34,8 +34,8 @@
 CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
 # CONFIG_SELINUX is not set
 # CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SYSLOG_INFO=y
 CONFIG_FEATURE_SYSLOG=y
-CONFIG_PLATFORM_LINUX=y
 
 #
 # Build Options
@@ -54,6 +54,7 @@
 CONFIG_EXTRA_LDLIBS=""
 # CONFIG_USE_PORTABLE_CODE is not set
 CONFIG_STACK_OPTIMIZATION_386=y
+CONFIG_STATIC_LIBGCC=y
 
 #
 # Installation Options ("make install" behavior)
@@ -75,6 +76,7 @@
 # CONFIG_DEBUG_SANITIZE is not set
 # CONFIG_UNIT_TEST is not set
 # CONFIG_WERROR is not set
+# CONFIG_WARN_SIMPLE_MSG is not set
 CONFIG_NO_DEBUG_LIB=y
 # CONFIG_DMALLOC is not set
 # CONFIG_EFENCE is not set
@@ -108,13 +110,13 @@
 # CONFIG_FEATURE_EDITING_WINCH is not set
 # CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
 # CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_UNICODE_SUPPORT is not set
+CONFIG_UNICODE_SUPPORT=y
 # CONFIG_UNICODE_USING_LOCALE is not set
-# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
-CONFIG_SUBST_WCHAR=0
-CONFIG_LAST_SUPPORTED_WCHAR=0
-# CONFIG_UNICODE_COMBINING_WCHARS is not set
-# CONFIG_UNICODE_WIDE_WCHARS is not set
+CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=767
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
 # CONFIG_UNICODE_BIDI_SUPPORT is not set
 # CONFIG_UNICODE_NEUTRAL_TABLE is not set
 # CONFIG_UNICODE_PRESERVE_BROKEN is not set
@@ -155,6 +157,7 @@
 CONFIG_XZCAT=y
 # CONFIG_XZ is not set
 CONFIG_BZIP2=y
+CONFIG_BZIP2_SMALL=8
 CONFIG_FEATURE_BZIP2_DECOMPRESS=y
 CONFIG_CPIO=y
 # CONFIG_FEATURE_CPIO_O is not set
@@ -235,7 +238,6 @@
 # CONFIG_FACTOR is not set
 CONFIG_FALSE=y
 # CONFIG_FOLD is not set
-# CONFIG_FSYNC is not set
 CONFIG_HEAD=y
 # CONFIG_FEATURE_FANCY_HEAD is not set
 # CONFIG_HOSTID is not set
@@ -257,8 +259,8 @@
 CONFIG_FEATURE_LS_COLOR=y
 # CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
 CONFIG_MD5SUM=y
-# CONFIG_SHA1SUM is not set
-# CONFIG_SHA256SUM is not set
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
 # CONFIG_SHA512SUM is not set
 # CONFIG_SHA3SUM is not set
 
@@ -302,6 +304,7 @@
 # CONFIG_SUM is not set
 CONFIG_SYNC=y
 # CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_FSYNC is not set
 # CONFIG_TAC is not set
 CONFIG_TAIL=y
 CONFIG_FEATURE_FANCY_TAIL=y
@@ -328,14 +331,15 @@
 CONFIG_UNLINK=y
 CONFIG_USLEEP=y
 # CONFIG_UUDECODE is not set
+CONFIG_BASE32=y
 # CONFIG_BASE64 is not set
 # CONFIG_UUENCODE is not set
 CONFIG_WC=y
 # CONFIG_FEATURE_WC_LARGE is not set
-CONFIG_WHOAMI=y
 CONFIG_WHO=y
 # CONFIG_W is not set
 CONFIG_USERS=y
+CONFIG_WHOAMI=y
 CONFIG_YES=y
 
 #
@@ -375,8 +379,8 @@
 CONFIG_LOADKMAP=y
 CONFIG_OPENVT=y
 CONFIG_RESET=y
-# CONFIG_RESIZE is not set
-# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
 CONFIG_SETCONSOLE=y
 # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
 # CONFIG_SETKEYCODES is not set
@@ -460,6 +464,7 @@
 CONFIG_FEATURE_FIND_PRUNE=y
 CONFIG_FEATURE_FIND_QUIT=y
 # CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_EMPTY=y
 CONFIG_FEATURE_FIND_PATH=y
 CONFIG_FEATURE_FIND_REGEX=y
 # CONFIG_FEATURE_FIND_CONTEXT is not set
@@ -488,32 +493,32 @@
 CONFIG_REBOOT=y
 # CONFIG_FEATURE_WAIT_FOR_INIT is not set
 # CONFIG_FEATURE_CALL_TELINIT is not set
-# CONFIG_TELINIT_PATH is not set
+CONFIG_TELINIT_PATH=""
 # CONFIG_INIT is not set
 # CONFIG_LINUXRC is not set
 # CONFIG_FEATURE_USE_INITTAB is not set
 # CONFIG_FEATURE_KILL_REMOVED is not set
-# CONFIG_FEATURE_KILL_DELAY is not set
+CONFIG_FEATURE_KILL_DELAY=0
 # CONFIG_FEATURE_INIT_SCTTY is not set
 # CONFIG_FEATURE_INIT_SYSLOG is not set
 # CONFIG_FEATURE_INIT_QUIET is not set
 # CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_INIT_TERMINAL_TYPE is not set
+CONFIG_INIT_TERMINAL_TYPE=""
 # CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
 
 #
 # Login/Password Management Utilities
 #
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
+CONFIG_FEATURE_SHADOWPASSWDS=y
 # CONFIG_USE_BB_PWD_GRP is not set
 # CONFIG_USE_BB_SHADOW is not set
 CONFIG_USE_BB_CRYPT=y
 # CONFIG_USE_BB_CRYPT_SHA is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
 # CONFIG_ADD_SHELL is not set
 # CONFIG_REMOVE_SHELL is not set
-# CONFIG_ADDUSER is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+CONFIG_ADDUSER=y
 # CONFIG_FEATURE_CHECK_NAMES is not set
 CONFIG_LAST_ID=60000
 CONFIG_FIRST_SYSTEM_ID=100
@@ -522,23 +527,23 @@
 CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
 # CONFIG_CRYPTPW is not set
 # CONFIG_MKPASSWD is not set
-# CONFIG_DELUSER is not set
-# CONFIG_DELGROUP is not set
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
 # CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
-# CONFIG_GETTY is not set
-# CONFIG_LOGIN is not set
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
 # CONFIG_LOGIN_SESSION_AS_CHILD is not set
 # CONFIG_LOGIN_SCRIPTS is not set
 # CONFIG_FEATURE_NOLOGIN is not set
 # CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
+CONFIG_PASSWD=y
 # CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_SU is not set
+CONFIG_SU=y
 # CONFIG_FEATURE_SU_SYSLOG is not set
 # CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
 # CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
 
 #
 # Linux Ext2 FS Progs
@@ -585,8 +590,8 @@
 # CONFIG_ACPID is not set
 # CONFIG_FEATURE_ACPID_COMPAT is not set
 # CONFIG_BLKDISCARD is not set
-# CONFIG_BLKID is not set
-# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_BLKID=y
+CONFIG_FEATURE_BLKID_TYPE=y
 # CONFIG_BLOCKDEV is not set
 # CONFIG_CAL is not set
 # CONFIG_CHRT is not set
@@ -616,10 +621,9 @@
 # CONFIG_FSCK_MINIX is not set
 # CONFIG_FSFREEZE is not set
 CONFIG_FSTRIM=y
-# CONFIG_GETOPT is not set
-# CONFIG_FEATURE_GETOPT_LONG is not set
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
 CONFIG_HEXDUMP=y
-# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
 # CONFIG_HD is not set
 # CONFIG_XXD is not set
 CONFIG_HWCLOCK=y
@@ -638,6 +642,7 @@
 # CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
 # CONFIG_FEATURE_MDEV_EXEC is not set
 # CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_FEATURE_MDEV_DAEMON is not set
 CONFIG_MESG=y
 # CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
 # CONFIG_MKE2FS is not set
@@ -654,7 +659,7 @@
 # CONFIG_FEATURE_MOUNT_FAKE is not set
 # CONFIG_FEATURE_MOUNT_VERBOSE is not set
 # CONFIG_FEATURE_MOUNT_HELPERS is not set
-# CONFIG_FEATURE_MOUNT_LABEL is not set
+CONFIG_FEATURE_MOUNT_LABEL=y
 # CONFIG_FEATURE_MOUNT_NFS is not set
 # CONFIG_FEATURE_MOUNT_CIFS is not set
 CONFIG_FEATURE_MOUNT_FLAGS=y
@@ -669,7 +674,7 @@
 # CONFIG_RDEV is not set
 # CONFIG_READPROFILE is not set
 CONFIG_RENICE=y
-# CONFIG_REV is not set
+CONFIG_REV=y
 # CONFIG_RTCWAKE is not set
 # CONFIG_SCRIPT is not set
 # CONFIG_SCRIPTREPLAY is not set
@@ -689,6 +694,7 @@
 CONFIG_SWITCH_ROOT=y
 # CONFIG_TASKSET is not set
 # CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_FEATURE_TASKSET_CPULIST is not set
 # CONFIG_UEVENT is not set
 CONFIG_UMOUNT=y
 CONFIG_FEATURE_UMOUNT_ALL=y
@@ -701,18 +707,19 @@
 CONFIG_FEATURE_MOUNT_LOOP=y
 CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
 # CONFIG_FEATURE_MTAB_SUPPORT is not set
-# CONFIG_VOLUMEID is not set
+CONFIG_VOLUMEID=y
 
 #
 # Filesystem/Volume identification
 #
 # CONFIG_FEATURE_VOLUMEID_BCACHE is not set
-# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+CONFIG_FEATURE_VOLUMEID_BTRFS=y
 # CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+CONFIG_FEATURE_VOLUMEID_EROFS=y
 # CONFIG_FEATURE_VOLUMEID_EXFAT is not set
-# CONFIG_FEATURE_VOLUMEID_EXT is not set
-# CONFIG_FEATURE_VOLUMEID_F2FS is not set
-# CONFIG_FEATURE_VOLUMEID_FAT is not set
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
 # CONFIG_FEATURE_VOLUMEID_HFS is not set
 # CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
 # CONFIG_FEATURE_VOLUMEID_JFS is not set
@@ -726,7 +733,7 @@
 # CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
 # CONFIG_FEATURE_VOLUMEID_REISERFS is not set
 # CONFIG_FEATURE_VOLUMEID_ROMFS is not set
-# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
 # CONFIG_FEATURE_VOLUMEID_SYSV is not set
 # CONFIG_FEATURE_VOLUMEID_UBIFS is not set
 # CONFIG_FEATURE_VOLUMEID_UDF is not set
@@ -769,10 +776,10 @@
 # CONFIG_FEATURE_DEVFS is not set
 # CONFIG_DEVMEM is not set
 # CONFIG_FBSPLASH is not set
-# CONFIG_FLASHCP is not set
 # CONFIG_FLASH_ERASEALL is not set
 # CONFIG_FLASH_LOCK is not set
 # CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
 # CONFIG_HDPARM is not set
 # CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
 # CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
@@ -806,6 +813,7 @@
 # CONFIG_FEATURE_MAKEDEVS_TABLE is not set
 # CONFIG_MAN is not set
 CONFIG_MICROCOM=y
+# CONFIG_MIM is not set
 # CONFIG_MT is not set
 # CONFIG_NANDWRITE is not set
 # CONFIG_NANDDUMP is not set
@@ -819,14 +827,15 @@
 # CONFIG_SETSERIAL is not set
 CONFIG_STRINGS=y
 CONFIG_TIME=y
+CONFIG_TS=y
 # CONFIG_TTYSIZE is not set
-# CONFIG_UBIRENAME is not set
 # CONFIG_UBIATTACH is not set
 # CONFIG_UBIDETACH is not set
 # CONFIG_UBIMKVOL is not set
 # CONFIG_UBIRMVOL is not set
 # CONFIG_UBIRSVOL is not set
 # CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
 # CONFIG_VOLNAME is not set
 # CONFIG_WATCHDOG is not set
 
@@ -866,6 +875,10 @@
 # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
 # CONFIG_FEATURE_HTTPD_PROXY is not set
 # CONFIG_FEATURE_HTTPD_GZIP is not set
+# CONFIG_FEATURE_HTTPD_ETAG is not set
+# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set
+# CONFIG_FEATURE_HTTPD_DATE is not set
+# CONFIG_FEATURE_HTTPD_ACL_IP is not set
 CONFIG_IFCONFIG=y
 CONFIG_FEATURE_IFCONFIG_STATUS=y
 # CONFIG_FEATURE_IFCONFIG_SLIP is not set
@@ -946,6 +959,7 @@
 # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
 CONFIG_TFTP=y
 # CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+CONFIG_FEATURE_TFTP_HPA_COMPAT=y
 # CONFIG_TFTPD is not set
 CONFIG_FEATURE_TFTP_GET=y
 CONFIG_FEATURE_TFTP_PUT=y
@@ -990,6 +1004,7 @@
 # CONFIG_FEATURE_UDHCP_PORT is not set
 CONFIG_UDHCP_DEBUG=0
 CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_FEATURE_UDHCP_RFC3397=y
 # CONFIG_FEATURE_UDHCP_8021Q is not set
 CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b"
 
@@ -1023,7 +1038,7 @@
 # CONFIG_LSOF is not set
 # CONFIG_MPSTAT is not set
 # CONFIG_NMETER is not set
-# CONFIG_PGREP is not set
+CONFIG_PGREP=y
 # CONFIG_PKILL is not set
 CONFIG_PIDOF=y
 # CONFIG_FEATURE_PIDOF_SINGLE is not set
@@ -1093,6 +1108,7 @@
 # CONFIG_BASH_IS_ASH is not set
 # CONFIG_BASH_IS_HUSH is not set
 CONFIG_BASH_IS_NONE=y
+CONFIG_SHELL_ASH=y
 CONFIG_ASH=y
 CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
 CONFIG_ASH_INTERNAL_GLOB=y
@@ -1113,6 +1129,7 @@
 CONFIG_ASH_CMDCMD=y
 # CONFIG_CTTYHACK is not set
 # CONFIG_HUSH is not set
+# CONFIG_SHELL_HUSH is not set
 # CONFIG_HUSH_BASH_COMPAT is not set
 # CONFIG_HUSH_BRACE_EXPANSION is not set
 # CONFIG_HUSH_LINENO_VAR is not set
@@ -1154,6 +1171,7 @@
 #
 CONFIG_FEATURE_SH_MATH=y
 # CONFIG_FEATURE_SH_MATH_64 is not set
+CONFIG_FEATURE_SH_MATH_BASE=y
 CONFIG_FEATURE_SH_EXTRA_QUIET=y
 # CONFIG_FEATURE_SH_STANDALONE is not set
 # CONFIG_FEATURE_SH_NOFORK is not set
@@ -1171,14 +1189,15 @@
 #
 CONFIG_FEATURE_KLOGD_KLOGCTL=y
 CONFIG_LOGGER=y
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-# CONFIG_SYSLOGD is not set
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-# CONFIG_FEATURE_SYSLOGD_CFG is not set
-CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_FEATURE_KMSG_SYSLOG is not set
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_SYSLOGD_DUP=y
+CONFIG_FEATURE_SYSLOGD_CFG=y
+# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
+CONFIG_FEATURE_KMSG_SYSLOG=y
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch
new file mode 100644
index 0000000..4852186
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch
@@ -0,0 +1,403 @@
+From fab561f8d05794329184cd81f9ab9d9d77dcc22a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:12:22 +0000
+Subject: [PATCH 01/29] gobject: Drop use of volatile from get_type() macros
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+http://isvolatileusefulwiththreads.in/c/
+
+It’s possible that the variables here are only marked as volatile
+because they’re arguments to `g_once_*()`. Those arguments will be
+modified in a subsequent commit.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ docs/reference/gobject/glib-mkenums.xml |  8 ++---
+ docs/reference/gobject/tut_gtype.xml    |  2 +-
+ gio/gioenumtypes.c.template             |  8 ++---
+ gio/tests/gsettings.c                   |  4 +--
+ gobject/gbinding.c                      |  8 ++---
+ gobject/gboxed.c                        |  8 ++---
+ gobject/glib-enumtypes.c.template       |  8 ++---
+ gobject/gsourceclosure.c                |  2 +-
+ gobject/gtype.h                         | 48 ++++++++++++-------------
+ gobject/tests/signals.c                 | 16 ++++-----
+ 10 files changed, 56 insertions(+), 56 deletions(-)
+
+diff --git a/docs/reference/gobject/glib-mkenums.xml b/docs/reference/gobject/glib-mkenums.xml
+index 2200328ed..ce250a3ff 100644
+--- a/docs/reference/gobject/glib-mkenums.xml
++++ b/docs/reference/gobject/glib-mkenums.xml
+@@ -480,9 +480,9 @@ A C source template file will typically look like this:
+ GType
+ @enum_name@_get_type (void)
+ {
+-  static volatile gsize g_@type@_type_id__volatile;
++  static gsize static_g_@type@_type_id;
+ 
+-  if (g_once_init_enter (&amp;g_define_type_id__volatile))
++  if (g_once_init_enter (&amp;static_g_@type@_type_id))
+     {
+       static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -498,9 +498,9 @@ GType
+       GType g_@type@_type_id =
+         g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+ 
+-      g_once_init_leave (&amp;g_@type@_type_id__volatile, g_@type@_type_id);
++      g_once_init_leave (&amp;static_g_@type@_type_id, g_@type@_type_id);
+     }
+-  return g_@type@_type_id__volatile;
++  return static_g_@type@_type_id;
+ }
+ 
+ /*** END value-tail ***/
+diff --git a/docs/reference/gobject/tut_gtype.xml b/docs/reference/gobject/tut_gtype.xml
+index 25e37dc48..ee042889d 100644
+--- a/docs/reference/gobject/tut_gtype.xml
++++ b/docs/reference/gobject/tut_gtype.xml
+@@ -852,7 +852,7 @@ viewer_editable_default_init (ViewerEditableInterface *iface)
+ GType
+ viewer_editable_get_type (void)
+ {
+-  static volatile gsize type_id = 0;
++  static gsize type_id = 0;
+   if (g_once_init_enter (&amp;type_id)) {
+     const GTypeInfo info = {
+       sizeof (ViewerEditableInterface),
+diff --git a/gio/gioenumtypes.c.template b/gio/gioenumtypes.c.template
+index e9adc4a38..948a01201 100644
+--- a/gio/gioenumtypes.c.template
++++ b/gio/gioenumtypes.c.template
+@@ -13,9 +13,9 @@
+ GType
+ @enum_name@_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -29,10 +29,10 @@ GType
+       };
+       GType g_define_type_id =
+         g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ /*** END value-tail ***/
+diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c
+index 2f81ae6c3..179d0fd2f 100644
+--- a/gio/tests/gsettings.c
++++ b/gio/tests/gsettings.c
+@@ -1060,7 +1060,7 @@ test_object_set_property (GObject      *object,
+ static GType
+ test_enum_get_type (void)
+ {
+-  static volatile gsize define_type_id = 0;
++  static gsize define_type_id = 0;
+ 
+   if (g_once_init_enter (&define_type_id))
+     {
+@@ -1082,7 +1082,7 @@ test_enum_get_type (void)
+ static GType
+ test_flags_get_type (void)
+ {
+-  static volatile gsize define_type_id = 0;
++  static gsize define_type_id = 0;
+ 
+   if (g_once_init_enter (&define_type_id))
+     {
+diff --git a/gobject/gbinding.c b/gobject/gbinding.c
+index 78a883075..662d76b3c 100644
+--- a/gobject/gbinding.c
++++ b/gobject/gbinding.c
+@@ -120,9 +120,9 @@
+ GType
+ g_binding_flags_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       static const GFlagsValue values[] = {
+         { G_BINDING_DEFAULT, "G_BINDING_DEFAULT", "default" },
+@@ -133,10 +133,10 @@ g_binding_flags_get_type (void)
+       };
+       GType g_define_type_id =
+         g_flags_register_static (g_intern_static_string ("GBindingFlags"), values);
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ #define G_BINDING_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_BINDING, GBindingClass))
+diff --git a/gobject/gboxed.c b/gobject/gboxed.c
+index 30ba4e775..194251383 100644
+--- a/gobject/gboxed.c
++++ b/gobject/gboxed.c
+@@ -180,19 +180,19 @@ G_DEFINE_BOXED_TYPE (GOptionGroup, g_option_group, g_option_group_ref, g_option_
+ GType
+ g_strv_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       GType g_define_type_id =
+         g_boxed_type_register_static (g_intern_static_string ("GStrv"),
+                                       (GBoxedCopyFunc) g_strdupv,
+                                       (GBoxedFreeFunc) g_strfreev);
+ 
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ GType
+diff --git a/gobject/glib-enumtypes.c.template b/gobject/glib-enumtypes.c.template
+index b7d36728f..1800ca8af 100644
+--- a/gobject/glib-enumtypes.c.template
++++ b/gobject/glib-enumtypes.c.template
+@@ -13,9 +13,9 @@
+ GType
+ @enum_name@_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -29,10 +29,10 @@ GType
+       };
+       GType g_define_type_id =
+         g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ /*** END value-tail ***/
+diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c
+index 0d0d2e87c..d1b1ee4b3 100644
+--- a/gobject/gsourceclosure.c
++++ b/gobject/gsourceclosure.c
+@@ -32,7 +32,7 @@ G_DEFINE_BOXED_TYPE (GIOChannel, g_io_channel, g_io_channel_ref, g_io_channel_un
+ GType
+ g_io_condition_get_type (void)
+ {
+-  static volatile GType etype = 0;
++  static GType etype = 0;
+ 
+   if (g_once_init_enter (&etype))
+     {
+diff --git a/gobject/gtype.h b/gobject/gtype.h
+index 9de46ac60..666fadb0c 100644
+--- a/gobject/gtype.h
++++ b/gobject/gtype.h
+@@ -1727,8 +1727,8 @@ guint     g_type_get_type_registration_serial (void);
+  * GType
+  * gtk_gadget_get_type (void)
+  * {
+- *   static volatile gsize g_define_type_id__volatile = 0;
+- *   if (g_once_init_enter (&g_define_type_id__volatile))
++ *   static gsize static_g_define_type_id = 0;
++ *   if (g_once_init_enter (&static_g_define_type_id))
+  *     {
+  *       GType g_define_type_id =
+  *         g_type_register_static_simple (GTK_TYPE_WIDGET,
+@@ -1748,9 +1748,9 @@ guint     g_type_get_type_registration_serial (void);
+  *         };
+  *         g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
+  *       }
+- *       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ *       g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+  *     }
+- *   return g_define_type_id__volatile;
++ *   return static_g_define_type_id;
+  * }
+  * ]|
+  * The only pieces which have to be manually provided are the definitions of
+@@ -1995,17 +1995,17 @@ type_name##_get_instance_private (TypeName *self) \
+ GType \
+ type_name##_get_type (void) \
+ { \
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+   /* Prelude goes here */
+ 
+ /* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */
+ #define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
+-  if (g_once_init_enter (&g_define_type_id__volatile))  \
++  if (g_once_init_enter (&static_g_define_type_id)) \
+     { \
+       GType g_define_type_id = type_name##_get_type_once (); \
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+     }					\
+-  return g_define_type_id__volatile;	\
++  return static_g_define_type_id; \
+ } /* closes type_name##_get_type() */ \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2041,8 +2041,8 @@ static void     type_name##_default_init        (TypeName##Interface *klass); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+-  static volatile gsize g_define_type_id__volatile = 0; \
+-  if (g_once_init_enter (&g_define_type_id__volatile))  \
++  static gsize static_g_define_type_id = 0; \
++  if (g_once_init_enter (&static_g_define_type_id)) \
+     { \
+       GType g_define_type_id = \
+         g_type_register_static_simple (G_TYPE_INTERFACE, \
+@@ -2058,9 +2058,9 @@ type_name##_get_type (void) \
+ #define _G_DEFINE_INTERFACE_EXTENDED_END()	\
+         /* following custom code */		\
+       }						\
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+     }						\
+-  return g_define_type_id__volatile;			\
++  return static_g_define_type_id; \
+ } /* closes type_name##_get_type() */
+ 
+ /**
+@@ -2115,13 +2115,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+-  static volatile gsize g_define_type_id__volatile = 0; \
+-  if (g_once_init_enter (&g_define_type_id__volatile))  \
++  static gsize static_g_define_type_id = 0; \
++  if (g_once_init_enter (&static_g_define_type_id)) \
+     { \
+       GType g_define_type_id = type_name##_get_type_once (); \
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+     } \
+-  return g_define_type_id__volatile; \
++  return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2152,13 +2152,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+-  static volatile gsize g_define_type_id__volatile = 0; \
+-  if (g_once_init_enter (&g_define_type_id__volatile))  \
++  static gsize static_g_define_type_id = 0; \
++  if (g_once_init_enter (&static_g_define_type_id)) \
+     { \
+       GType g_define_type_id = type_name##_get_type_once (); \
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+     } \
+-  return g_define_type_id__volatile; \
++  return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2205,13 +2205,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+-  static volatile gsize g_define_type_id__volatile = 0; \
+-  if (g_once_init_enter (&g_define_type_id__volatile))  \
++  static gsize static_g_define_type_id = 0; \
++  if (g_once_init_enter (&static_g_define_type_id)) \
+     { \
+       GType g_define_type_id = type_name##_get_type_once (); \
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+     } \
+-  return g_define_type_id__volatile; \
++  return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c
+index 120f90b5c..ac0ce5102 100644
+--- a/gobject/tests/signals.c
++++ b/gobject/tests/signals.c
+@@ -66,9 +66,9 @@ custom_marshal_VOID__INVOCATIONHINT (GClosure     *closure,
+ static GType
+ test_enum_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       static const GEnumValue values[] = {
+         { TEST_ENUM_NEGATIVE, "TEST_ENUM_NEGATIVE", "negative" },
+@@ -79,18 +79,18 @@ test_enum_get_type (void)
+       };
+       GType g_define_type_id =
+         g_enum_register_static (g_intern_static_string ("TestEnum"), values);
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ static GType
+ test_unsigned_enum_get_type (void)
+ {
+-  static volatile gsize g_define_type_id__volatile = 0;
++  static gsize static_g_define_type_id = 0;
+ 
+-  if (g_once_init_enter (&g_define_type_id__volatile))
++  if (g_once_init_enter (&static_g_define_type_id))
+     {
+       static const GEnumValue values[] = {
+         { TEST_UNSIGNED_ENUM_FOO, "TEST_UNSIGNED_ENUM_FOO", "foo" },
+@@ -99,10 +99,10 @@ test_unsigned_enum_get_type (void)
+       };
+       GType g_define_type_id =
+         g_enum_register_static (g_intern_static_string ("TestUnsignedEnum"), values);
+-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++      g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+     }
+ 
+-  return g_define_type_id__volatile;
++  return static_g_define_type_id;
+ }
+ 
+ typedef enum {
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch
new file mode 100644
index 0000000..fada7cc
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch
@@ -0,0 +1,44 @@
+From a6ce0e742a5c75c53a7c702ebb1af1084065160a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:14:29 +0000
+Subject: [PATCH 02/29] tests: Fix non-atomic access to a shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variable, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/642026.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/tests/642026.c b/glib/tests/642026.c
+index ef54f14bb..26ab2ed06 100644
+--- a/glib/tests/642026.c
++++ b/glib/tests/642026.c
+@@ -25,7 +25,7 @@ static GMutex *mutex;
+ static GCond *cond;
+ static guint i;
+ 
+-static volatile gint freed = 0;
++static gint freed = 0;  /* (atomic) */
+ 
+ static void
+ notify (gpointer p)
+@@ -63,7 +63,7 @@ testcase (void)
+       GThread *t1;
+ 
+       g_static_private_init (&sp);
+-      freed = 0;
++      g_atomic_int_set (&freed, 0);
+ 
+       t1 = g_thread_create (thread_func, NULL, TRUE, NULL);
+       g_assert (t1 != NULL);
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch
new file mode 100644
index 0000000..8bc71a6
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch
@@ -0,0 +1,90 @@
+From ea746c79faf554d980c21b0e4381753e003d2dc6 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:17:23 +0000
+Subject: [PATCH 03/29] tests: Fix non-atomic access to a shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variable, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/mainloop.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c
+index 16763a0ea..563a951de 100644
+--- a/glib/tests/mainloop.c
++++ b/glib/tests/mainloop.c
+@@ -918,7 +918,7 @@ test_mainloop_overflow (void)
+   g_main_context_unref (ctx);
+ }
+ 
+-static volatile gint ready_time_dispatched;
++static gint ready_time_dispatched;  /* (atomic) */
+ 
+ static gboolean
+ ready_time_dispatch (GSource     *source,
+@@ -964,7 +964,7 @@ test_ready_time (void)
+   /* A source with no ready time set should not fire */
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_false (ready_time_dispatched);
++  g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+ 
+   /* The ready time should not have been changed */
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+@@ -978,37 +978,37 @@ test_ready_time (void)
+    */
+   g_source_set_ready_time (source, g_get_monotonic_time () + G_TIME_SPAN_DAY);
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_false (ready_time_dispatched);
++  g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+   /* Make sure it didn't get reset */
+   g_assert_cmpint (g_source_get_ready_time (source), !=, -1);
+ 
+   /* Ready time of -1 -> don't fire */
+   g_source_set_ready_time (source, -1);
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_false (ready_time_dispatched);
++  g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+   /* Not reset, but should still be -1 from above */
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+ 
+   /* A ready time of the current time should fire immediately */
+   g_source_set_ready_time (source, g_get_monotonic_time ());
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_true (ready_time_dispatched);
+-  ready_time_dispatched = FALSE;
++  g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++  g_atomic_int_set (&ready_time_dispatched, FALSE);
+   /* Should have gotten reset by the handler function */
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+ 
+   /* As well as one in the recent past... */
+   g_source_set_ready_time (source, g_get_monotonic_time () - G_TIME_SPAN_SECOND);
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_true (ready_time_dispatched);
+-  ready_time_dispatched = FALSE;
++  g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++  g_atomic_int_set (&ready_time_dispatched, FALSE);
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+ 
+   /* Zero is the 'official' way to get a source to fire immediately */
+   g_source_set_ready_time (source, 0);
+   while (g_main_context_iteration (NULL, FALSE));
+-  g_assert_true (ready_time_dispatched);
+-  ready_time_dispatched = FALSE;
++  g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++  g_atomic_int_set (&ready_time_dispatched, FALSE);
+   g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+ 
+   /* Now do some tests of cross-thread wakeups.
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 0000000..4b7b6f4
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,93 @@
+From 3dda662bebb81666d009635df1055ba5c1e17b52 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:16:17 +0000
+Subject: [PATCH 04/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/atomic.c      | 4 ++--
+ glib/tests/cond.c        | 2 +-
+ glib/tests/gwakeuptest.c | 2 +-
+ glib/tests/hash.c        | 2 +-
+ glib/tests/slice.c       | 2 +-
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c
+index 6b6cc7f3e..7d2459f3a 100644
+--- a/glib/tests/atomic.c
++++ b/glib/tests/atomic.c
+@@ -248,8 +248,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ #define THREADS 10
+ #define ROUNDS 10000
+ 
+-volatile gint bucket[THREADS];
+-volatile gint atomic;
++gint bucket[THREADS];  /* never contested by threads, not accessed atomically */
++gint atomic;  /* (atomic) */
+ 
+ static gpointer
+ thread_func (gpointer data)
+diff --git a/glib/tests/cond.c b/glib/tests/cond.c
+index 0f0b3d249..ed338cce3 100644
+--- a/glib/tests/cond.c
++++ b/glib/tests/cond.c
+@@ -29,7 +29,7 @@
+ 
+ static GCond cond;
+ static GMutex mutex;
+-static volatile gint next;
++static gint next;  /* locked by @mutex */
+ 
+ static void
+ push_value (gint value)
+diff --git a/glib/tests/gwakeuptest.c b/glib/tests/gwakeuptest.c
+index 461a7d3de..b37fb43fc 100644
+--- a/glib/tests/gwakeuptest.c
++++ b/glib/tests/gwakeuptest.c
+@@ -92,7 +92,7 @@ struct context
+ static struct context contexts[NUM_THREADS];
+ static GThread *threads[NUM_THREADS];
+ static GWakeup *last_token_wakeup;
+-static volatile gint tokens_alive;
++static gint tokens_alive;  /* (atomic) */
+ 
+ static void
+ context_init (struct context *ctx)
+diff --git a/glib/tests/hash.c b/glib/tests/hash.c
+index 4623d18d1..f4ff55ce1 100644
+--- a/glib/tests/hash.c
++++ b/glib/tests/hash.c
+@@ -1362,7 +1362,7 @@ struct _GHashTable
+ 
+   GHashFunc        hash_func;
+   GEqualFunc       key_equal_func;
+-  volatile gint    ref_count;
++  gint             ref_count;  /* (atomic) */
+ 
+ #ifndef G_DISABLE_ASSERT
+   int              version;
+diff --git a/glib/tests/slice.c b/glib/tests/slice.c
+index f37826f3a..a566280db 100644
+--- a/glib/tests/slice.c
++++ b/glib/tests/slice.c
+@@ -107,7 +107,7 @@ thread_allocate (gpointer data)
+   gint b;
+   gint size;
+   gpointer p;
+-  volatile gpointer *loc;
++  gpointer *loc;  /* (atomic) */
+ 
+   for (i = 0; i < 10000; i++)
+     {
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch
new file mode 100644
index 0000000..3aecf45
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch
@@ -0,0 +1,702 @@
+From 7f905ff1faf0acbe0d2ce69937e031fcacce9294 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:21:00 +0000
+Subject: [PATCH 05/29] tests: Fix non-atomic access to some shared variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variables, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/tests/gdbus-connection-flush.c |   6 +-
+ gio/tests/gdbus-connection.c       |  40 ++++----
+ gio/tests/gdbus-overflow.c         |  20 ++--
+ gio/tests/socket-service.c         |   6 +-
+ gio/tests/task.c                   | 150 ++++++++++++++---------------
+ 5 files changed, 111 insertions(+), 111 deletions(-)
+
+--- a/gio/tests/gdbus-connection-flush.c
++++ b/gio/tests/gdbus-connection-flush.c
+@@ -43,9 +43,9 @@ G_LOCK_DEFINE_STATIC (write);
+ typedef struct {
+     GFilterOutputStream parent;
+ 
+-    volatile gint started;
+-    volatile gint finished;
+-    volatile gint flushed;
++    gint started;  /* (atomic) */
++    gint finished;  /* (atomic) */
++    gint flushed;  /* (atomic) */
+ 
+     GOutputStream *real_output;
+ } MyOutputStream;
+--- a/gio/tests/gdbus-connection.c
++++ b/gio/tests/gdbus-connection.c
+@@ -61,9 +61,9 @@ _log (const gchar *format, ...)
+ static gboolean
+ test_connection_quit_mainloop (gpointer user_data)
+ {
+-  volatile gboolean *quit_mainloop_fired = user_data;
++  gboolean *quit_mainloop_fired = user_data;  /* (atomic) */
+   _log ("quit_mainloop_fired");
+-  *quit_mainloop_fired = TRUE;
++  g_atomic_int_set (quit_mainloop_fired, TRUE);
+   g_main_loop_quit (loop);
+   return TRUE;
+ }
+@@ -113,8 +113,8 @@ on_name_owner_changed (GDBusConnection *
+ static void
+ a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop (gpointer user_data)
+ {
+-  volatile gboolean *val = user_data;
+-  *val = TRUE;
++  gboolean *val = user_data;  /* (atomic) */
++  g_atomic_int_set (val, TRUE);
+   _log ("destroynotify fired for %p", val);
+   g_main_loop_quit (loop);
+ }
+@@ -143,10 +143,10 @@ test_connection_life_cycle (void)
+   GDBusConnection *c;
+   GDBusConnection *c2;
+   GError *error;
+-  volatile gboolean on_signal_registration_freed_called;
+-  volatile gboolean on_filter_freed_called;
+-  volatile gboolean on_register_object_freed_called;
+-  volatile gboolean quit_mainloop_fired;
++  gboolean on_signal_registration_freed_called;  /* (atomic) */
++  gboolean on_filter_freed_called;  /* (atomic) */
++  gboolean on_register_object_freed_called;  /* (atomic) */
++  gboolean quit_mainloop_fired;  /* (atomic) */
+   guint quit_mainloop_id;
+   guint registration_id;
+ 
+@@ -208,7 +208,7 @@ test_connection_life_cycle (void)
+   g_assert_no_error (error);
+   g_assert_nonnull (c2);
+   /* signal registration */
+-  on_signal_registration_freed_called = FALSE;
++  g_atomic_int_set (&on_signal_registration_freed_called, FALSE);
+   g_dbus_connection_signal_subscribe (c2,
+                                       "org.freedesktop.DBus", /* bus name */
+                                       "org.freedesktop.DBus", /* interface */
+@@ -220,13 +220,13 @@ test_connection_life_cycle (void)
+                                       (gpointer) &on_signal_registration_freed_called,
+                                       a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop);
+   /* filter func */
+-  on_filter_freed_called = FALSE;
++  g_atomic_int_set (&on_filter_freed_called, FALSE);
+   g_dbus_connection_add_filter (c2,
+                                 some_filter_func,
+                                 (gpointer) &on_filter_freed_called,
+                                 a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop);
+   /* object registration */
+-  on_register_object_freed_called = FALSE;
++  g_atomic_int_set (&on_register_object_freed_called, FALSE);
+   error = NULL;
+   registration_id = g_dbus_connection_register_object (c2,
+                                                        "/foo",
+@@ -239,7 +239,7 @@ test_connection_life_cycle (void)
+   g_assert_cmpuint (registration_id, >, 0);
+   /* ok, finalize the connection and check that all the GDestroyNotify functions are invoked as expected */
+   g_object_unref (c2);
+-  quit_mainloop_fired = FALSE;
++  g_atomic_int_set (&quit_mainloop_fired, FALSE);
+   quit_mainloop_id = g_timeout_add (30000, test_connection_quit_mainloop, (gpointer) &quit_mainloop_fired);
+   _log ("destroynotifies for\n"
+         " register_object %p\n"
+@@ -250,21 +250,21 @@ test_connection_life_cycle (void)
+         &on_signal_registration_freed_called);
+   while (TRUE)
+     {
+-      if (on_signal_registration_freed_called &&
+-          on_filter_freed_called &&
+-          on_register_object_freed_called)
++      if (g_atomic_int_get (&on_signal_registration_freed_called) &&
++          g_atomic_int_get (&on_filter_freed_called) &&
++          g_atomic_int_get (&on_register_object_freed_called))
+         break;
+-      if (quit_mainloop_fired)
++      if (g_atomic_int_get (&quit_mainloop_fired))
+         break;
+       _log ("entering loop");
+       g_main_loop_run (loop);
+       _log ("exiting loop");
+     }
+   g_source_remove (quit_mainloop_id);
+-  g_assert_true (on_signal_registration_freed_called);
+-  g_assert_true (on_filter_freed_called);
+-  g_assert_true (on_register_object_freed_called);
+-  g_assert_false (quit_mainloop_fired);
++  g_assert_true (g_atomic_int_get (&on_signal_registration_freed_called));
++  g_assert_true (g_atomic_int_get (&on_filter_freed_called));
++  g_assert_true (g_atomic_int_get (&on_register_object_freed_called));
++  g_assert_false (g_atomic_int_get (&quit_mainloop_fired));
+ 
+   /*
+    *  Check for correct behavior when the bus goes away
+--- a/gio/tests/gdbus-overflow.c
++++ b/gio/tests/gdbus-overflow.c
+@@ -86,8 +86,8 @@ overflow_filter_func (GDBusConnection *c
+                       gboolean         incoming,
+                       gpointer         user_data)
+ {
+-  volatile gint *counter = user_data;
+-  *counter += 1;
++  gint *counter = user_data;  /* (atomic) */
++  g_atomic_int_inc (counter);
+   return message;
+ }
+ 
+@@ -108,8 +108,8 @@ test_overflow (void)
+   GDBusConnection *producer, *consumer;
+   GError *error;
+   GTimer *timer;
+-  volatile gint n_messages_received;
+-  volatile gint n_messages_sent;
++  gint n_messages_received;  /* (atomic) */
++  gint n_messages_sent;  /* (atomic) */
+ 
+   g_assert_cmpint (socketpair (AF_UNIX, SOCK_STREAM, 0, sv), ==, 0);
+ 
+@@ -129,7 +129,7 @@ test_overflow (void)
+   g_dbus_connection_set_exit_on_close (producer, TRUE);
+   g_assert_no_error (error);
+   g_object_unref (socket_connection);
+-  n_messages_sent = 0;
++  g_atomic_int_set (&n_messages_sent, 0);
+   g_dbus_connection_add_filter (producer, overflow_filter_func, (gpointer) &n_messages_sent, NULL);
+ 
+   /* send enough data that we get an EAGAIN */
+@@ -155,7 +155,7 @@ test_overflow (void)
+    */
+   g_timeout_add (500, overflow_on_500ms_later_func, NULL);
+   g_main_loop_run (loop);
+-  g_assert_cmpint (n_messages_sent, <, OVERFLOW_NUM_SIGNALS);
++  g_assert_cmpint (g_atomic_int_get (&n_messages_sent), <, OVERFLOW_NUM_SIGNALS);
+ 
+   /* now suck it all out as a client, and add it up */
+   socket = g_socket_new_from_fd (sv[1], &error);
+@@ -171,18 +171,18 @@ test_overflow (void)
+ 					 &error);
+   g_assert_no_error (error);
+   g_object_unref (socket_connection);
+-  n_messages_received = 0;
++  g_atomic_int_set (&n_messages_received, 0);
+   g_dbus_connection_add_filter (consumer, overflow_filter_func, (gpointer) &n_messages_received, NULL);
+   g_dbus_connection_start_message_processing (consumer);
+ 
+   timer = g_timer_new ();
+   g_timer_start (timer);
+ 
+-  while (n_messages_received < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC)
++  while (g_atomic_int_get (&n_messages_received) < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC)
+       g_main_context_iteration (NULL, FALSE);
+ 
+-  g_assert_cmpint (n_messages_sent, ==, OVERFLOW_NUM_SIGNALS);
+-  g_assert_cmpint (n_messages_received, ==, OVERFLOW_NUM_SIGNALS);
++  g_assert_cmpint (g_atomic_int_get (&n_messages_sent), ==, OVERFLOW_NUM_SIGNALS);
++  g_assert_cmpint (g_atomic_int_get (&n_messages_received), ==, OVERFLOW_NUM_SIGNALS);
+ 
+   g_timer_destroy (timer);
+   g_object_unref (consumer);
+--- a/gio/tests/socket-service.c
++++ b/gio/tests/socket-service.c
+@@ -99,7 +99,7 @@ test_start_stop (void)
+ 
+ GMutex mutex_712570;
+ GCond cond_712570;
+-volatile gboolean finalized;
++gboolean finalized;  /* (atomic) */
+ 
+ GType test_threaded_socket_service_get_type (void);
+ typedef GThreadedSocketService TestThreadedSocketService;
+@@ -120,7 +120,7 @@ test_threaded_socket_service_finalize (G
+   /* Signal the main thread that finalization completed successfully
+    * rather than hanging.
+    */
+-  finalized = TRUE;
++  g_atomic_int_set (&finalized, TRUE);
+   g_cond_signal (&cond_712570);
+   g_mutex_unlock (&mutex_712570);
+ }
+@@ -235,7 +235,7 @@ test_threaded_712570 (void)
+    */
+   g_object_unref (service);
+ 
+-  while (!finalized)
++  while (!g_atomic_int_get (&finalized))
+     g_cond_wait (&cond_712570, &mutex_712570);
+   g_mutex_unlock (&mutex_712570);
+ }
+--- a/gio/tests/task.c
++++ b/gio/tests/task.c
+@@ -957,7 +957,7 @@ task_weak_notify (gpointer  user_data,
+   gboolean *weak_notify_ran = user_data;
+ 
+   g_mutex_lock (&run_in_thread_mutex);
+-  *weak_notify_ran = TRUE;
++  g_atomic_int_set (weak_notify_ran, TRUE);
+   g_cond_signal (&run_in_thread_cond);
+   g_mutex_unlock (&run_in_thread_mutex);
+ }
+@@ -1007,7 +1007,7 @@ run_in_thread_thread (GTask        *task
+   g_assert (g_thread_self () != main_thread);
+ 
+   g_mutex_lock (&run_in_thread_mutex);
+-  *thread_ran = TRUE;
++  g_atomic_int_set (thread_ran, TRUE);
+   g_cond_signal (&run_in_thread_cond);
+   g_mutex_unlock (&run_in_thread_mutex);
+ 
+@@ -1018,8 +1018,8 @@ static void
+ test_run_in_thread (void)
+ {
+   GTask *task;
+-  volatile gboolean thread_ran = FALSE;
+-  volatile gboolean weak_notify_ran = FALSE;
++  gboolean thread_ran = FALSE;  /* (atomic) */
++  gboolean weak_notify_ran = FALSE;  /* (atomic) */
+   gboolean notification_emitted = FALSE;
+   gboolean done = FALSE;
+ 
+@@ -1033,12 +1033,12 @@ test_run_in_thread (void)
+   g_task_run_in_thread (task, run_in_thread_thread);
+ 
+   g_mutex_lock (&run_in_thread_mutex);
+-  while (!thread_ran)
++  while (!g_atomic_int_get (&thread_ran))
+     g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+   g_mutex_unlock (&run_in_thread_mutex);
+ 
+   g_assert (done == FALSE);
+-  g_assert (weak_notify_ran == FALSE);
++  g_assert_false (g_atomic_int_get (&weak_notify_ran));
+ 
+   g_main_loop_run (loop);
+ 
+@@ -1050,7 +1050,7 @@ test_run_in_thread (void)
+   g_object_unref (task);
+ 
+   g_mutex_lock (&run_in_thread_mutex);
+-  while (!weak_notify_ran)
++  while (!g_atomic_int_get (&weak_notify_ran))
+     g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+   g_mutex_unlock (&run_in_thread_mutex);
+ }
+@@ -1081,7 +1081,7 @@ run_in_thread_sync_thread (GTask
+ 
+   g_assert (g_thread_self () != main_thread);
+ 
+-  *thread_ran = TRUE;
++  g_atomic_int_set (thread_ran, TRUE);
+   g_task_return_int (task, magic);
+ }
+ 
+@@ -1102,7 +1102,7 @@ test_run_in_thread_sync (void)
+   g_task_set_task_data (task, &thread_ran, NULL);
+   g_task_run_in_thread_sync (task, run_in_thread_sync_thread);
+ 
+-  g_assert (thread_ran == TRUE);
++  g_assert_true (g_atomic_int_get (&thread_ran));
+   g_assert (task != NULL);
+   g_assert (!g_task_had_error (task));
+   g_assert_true (g_task_get_completed (task));
+@@ -1487,8 +1487,8 @@ test_return_on_cancel (void)
+ {
+   GTask *task;
+   GCancellable *cancellable;
+-  volatile ThreadState thread_state;
+-  volatile gboolean weak_notify_ran = FALSE;
++  ThreadState thread_state;  /* (atomic) */
++  gboolean weak_notify_ran = FALSE;  /* (atomic) */
+   gboolean callback_ran;
+   gboolean notification_emitted = FALSE;
+ 
+@@ -1498,7 +1498,7 @@ test_return_on_cancel (void)
+    * early.
+    */
+   callback_ran = FALSE;
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+   g_signal_connect (task, "notify::completed",
+                     (GCallback) completed_cb, &notification_emitted);
+@@ -1509,18 +1509,18 @@ test_return_on_cancel (void)
+   g_task_run_in_thread (task, return_on_cancel_thread);
+   g_object_unref (task);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+   g_assert (callback_ran == FALSE);
+ 
+   g_cancellable_cancel (cancellable);
+   g_mutex_unlock (&roc_finish_mutex);
+   g_main_loop_run (loop);
+ 
+-  g_assert (thread_state == THREAD_COMPLETED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED);
+   g_assert (callback_ran == TRUE);
+   g_assert_true (notification_emitted);
+ 
+@@ -1529,7 +1529,7 @@ test_return_on_cancel (void)
+   /* If return-on-cancel is TRUE, it does return early */
+   callback_ran = FALSE;
+   notification_emitted = FALSE;
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+   g_object_weak_ref (G_OBJECT (task), task_weak_notify, (gpointer)&weak_notify_ran);
+   g_signal_connect (task, "notify::completed",
+@@ -1542,27 +1542,27 @@ test_return_on_cancel (void)
+   g_task_run_in_thread (task, return_on_cancel_thread);
+   g_object_unref (task);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+   g_assert (callback_ran == FALSE);
+ 
+   g_cancellable_cancel (cancellable);
+   g_main_loop_run (loop);
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+   g_assert (callback_ran == TRUE);
+ 
+-  g_assert (weak_notify_ran == FALSE);
++  g_assert_false (g_atomic_int_get (&weak_notify_ran));
+ 
+-  while (thread_state == THREAD_RUNNING)
++  while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+     g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+   g_mutex_unlock (&roc_finish_mutex);
+ 
+-  g_assert (thread_state == THREAD_CANCELLED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+   g_mutex_lock (&run_in_thread_mutex);
+-  while (!weak_notify_ran)
++  while (!g_atomic_int_get (&weak_notify_ran))
+     g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+   g_mutex_unlock (&run_in_thread_mutex);
+ 
+@@ -1574,7 +1574,7 @@ test_return_on_cancel (void)
+    */
+   callback_ran = FALSE;
+   notification_emitted = FALSE;
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+   g_signal_connect (task, "notify::completed",
+                     (GCallback) completed_cb, &notification_emitted);
+@@ -1591,17 +1591,17 @@ test_return_on_cancel (void)
+   g_main_loop_run (loop);
+   g_assert (callback_ran == TRUE);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ 
+-  while (thread_state == THREAD_RUNNING)
++  while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+     g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+   g_mutex_unlock (&roc_finish_mutex);
+ 
+-  g_assert (thread_state == THREAD_CANCELLED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+   g_assert_true (notification_emitted);
+ 
+   g_object_unref (cancellable);
+@@ -1621,7 +1621,7 @@ test_return_on_cancel_sync (void)
+ {
+   GTask *task;
+   GCancellable *cancellable;
+-  volatile ThreadState thread_state;
++  ThreadState thread_state;  /* (atomic) */
+   GThread *runner_thread;
+   gssize ret;
+   GError *error = NULL;
+@@ -1630,7 +1630,7 @@ test_return_on_cancel_sync (void)
+ 
+   /* If return-on-cancel is FALSE, the task does not return early.
+    */
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+ 
+   g_task_set_task_data (task, (gpointer)&thread_state, NULL);
+@@ -1639,16 +1639,16 @@ test_return_on_cancel_sync (void)
+   runner_thread = g_thread_new ("return-on-cancel-sync runner thread",
+                                 cancel_sync_runner_thread, task);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ 
+   g_cancellable_cancel (cancellable);
+   g_mutex_unlock (&roc_finish_mutex);
+   g_thread_join (runner_thread);
+-  g_assert (thread_state == THREAD_COMPLETED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED);
+ 
+   ret = g_task_propagate_int (task, &error);
+   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1660,7 +1660,7 @@ test_return_on_cancel_sync (void)
+   g_cancellable_reset (cancellable);
+ 
+   /* If return-on-cancel is TRUE, it does return early */
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+   g_task_set_return_on_cancel (task, TRUE);
+ 
+@@ -1670,15 +1670,15 @@ test_return_on_cancel_sync (void)
+   runner_thread = g_thread_new ("return-on-cancel-sync runner thread",
+                                 cancel_sync_runner_thread, task);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ 
+   g_cancellable_cancel (cancellable);
+   g_thread_join (runner_thread);
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ 
+   ret = g_task_propagate_int (task, &error);
+   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1687,18 +1687,18 @@ test_return_on_cancel_sync (void)
+ 
+   g_object_unref (task);
+ 
+-  while (thread_state == THREAD_RUNNING)
++  while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+     g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+   g_mutex_unlock (&roc_finish_mutex);
+ 
+-  g_assert (thread_state == THREAD_CANCELLED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+ 
+   g_cancellable_reset (cancellable);
+ 
+   /* If the task is already cancelled before it starts, it returns
+    * immediately, but the thread func still runs.
+    */
+-  thread_state = THREAD_STARTING;
++  g_atomic_int_set (&thread_state, THREAD_STARTING);
+   task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+   g_task_set_return_on_cancel (task, TRUE);
+ 
+@@ -1711,7 +1711,7 @@ test_return_on_cancel_sync (void)
+                                 cancel_sync_runner_thread, task);
+ 
+   g_thread_join (runner_thread);
+-  g_assert (thread_state == THREAD_STARTING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_STARTING);
+ 
+   ret = g_task_propagate_int (task, &error);
+   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1720,17 +1720,17 @@ test_return_on_cancel_sync (void)
+ 
+   g_object_unref (task);
+ 
+-  while (thread_state == THREAD_STARTING)
++  while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+     g_cond_wait (&roc_init_cond, &roc_init_mutex);
+   g_mutex_unlock (&roc_init_mutex);
+ 
+-  g_assert (thread_state == THREAD_RUNNING);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ 
+-  while (thread_state == THREAD_RUNNING)
++  while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+     g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+   g_mutex_unlock (&roc_finish_mutex);
+ 
+-  g_assert (thread_state == THREAD_CANCELLED);
++  g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+ 
+   g_object_unref (cancellable);
+ }
+@@ -1776,7 +1776,7 @@ return_on_cancel_atomic_thread (GTask
+                                 gpointer      task_data,
+                                 GCancellable *cancellable)
+ {
+-  gint *state = task_data;
++  gint *state = task_data;  /* (atomic) */
+ 
+   g_assert (source_object == g_task_get_source_object (task));
+   g_assert (task_data == g_task_get_task_data (task));
+@@ -1784,34 +1784,34 @@ return_on_cancel_atomic_thread (GTask
+   g_assert_false (g_task_get_completed (task));
+ 
+   g_assert (g_thread_self () != main_thread);
+-  g_assert_cmpint (*state, ==, 0);
++  g_assert_cmpint (g_atomic_int_get (state), ==, 0);
+ 
+   g_mutex_lock (&roca_mutex_1);
+-  *state = 1;
++  g_atomic_int_set (state, 1);
+   g_cond_signal (&roca_cond_1);
+   g_mutex_unlock (&roca_mutex_1);
+ 
+   g_mutex_lock (&roca_mutex_2);
+   if (g_task_set_return_on_cancel (task, FALSE))
+-    *state = 2;
++    g_atomic_int_set (state, 2);
+   else
+-    *state = 3;
++    g_atomic_int_set (state, 3);
+   g_cond_signal (&roca_cond_2);
+   g_mutex_unlock (&roca_mutex_2);
+ 
+   g_mutex_lock (&roca_mutex_1);
+   if (g_task_set_return_on_cancel (task, TRUE))
+-    *state = 4;
++    g_atomic_int_set (state, 4);
+   else
+-    *state = 5;
++    g_atomic_int_set (state, 5);
+   g_cond_signal (&roca_cond_1);
+   g_mutex_unlock (&roca_mutex_1);
+ 
+   g_mutex_lock (&roca_mutex_2);
+   if (g_task_set_return_on_cancel (task, TRUE))
+-    *state = 6;
++    g_atomic_int_set (state, 6);
+   else
+-    *state = 7;
++    g_atomic_int_set (state, 7);
+   g_cond_signal (&roca_cond_2);
+   g_mutex_unlock (&roca_mutex_2);
+ 
+@@ -1823,7 +1823,7 @@ test_return_on_cancel_atomic (void)
+ {
+   GTask *task;
+   GCancellable *cancellable;
+-  volatile gint state;
++  gint state;  /* (atomic) */
+   gboolean notification_emitted = FALSE;
+   gboolean callback_ran;
+ 
+@@ -1832,7 +1832,7 @@ test_return_on_cancel_atomic (void)
+   g_mutex_lock (&roca_mutex_2);
+ 
+   /* If we don't cancel it, each set_return_on_cancel() call will succeed */
+-  state = 0;
++  g_atomic_int_set (&state, 0);
+   callback_ran = FALSE;
+   task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran);
+   g_task_set_return_on_cancel (task, TRUE);
+@@ -1843,23 +1843,23 @@ test_return_on_cancel_atomic (void)
+   g_task_run_in_thread (task, return_on_cancel_atomic_thread);
+   g_object_unref (task);
+ 
+-  g_assert_cmpint (state, ==, 0);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 0);
+ 
+-  while (state == 0)
++  while (g_atomic_int_get (&state) == 0)
+     g_cond_wait (&roca_cond_1, &roca_mutex_1);
+-  g_assert (state == 1);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 1);
+ 
+-  while (state == 1)
++  while (g_atomic_int_get (&state) == 1)
+     g_cond_wait (&roca_cond_2, &roca_mutex_2);
+-  g_assert (state == 2);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 2);
+ 
+-  while (state == 2)
++  while (g_atomic_int_get (&state) == 2)
+     g_cond_wait (&roca_cond_1, &roca_mutex_1);
+-  g_assert (state == 4);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 4);
+ 
+-  while (state == 4)
++  while (g_atomic_int_get (&state) == 4)
+     g_cond_wait (&roca_cond_2, &roca_mutex_2);
+-  g_assert (state == 6);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 6);
+ 
+   /* callback assumes there'll be a cancelled error */
+   g_cancellable_cancel (cancellable);
+@@ -1876,7 +1876,7 @@ test_return_on_cancel_atomic (void)
+    * task won't complete right away, and further
+    * g_task_set_return_on_cancel() calls will return FALSE.
+    */
+-  state = 0;
++  g_atomic_int_set (&state, 0);
+   callback_ran = FALSE;
+   notification_emitted = FALSE;
+   task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran);
+@@ -1887,16 +1887,16 @@ test_return_on_cancel_atomic (void)
+   g_task_set_task_data (task, (gpointer)&state, NULL);
+   g_task_run_in_thread (task, return_on_cancel_atomic_thread);
+ 
+-  g_assert_cmpint (state, ==, 0);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 0);
+ 
+-  while (state == 0)
++  while (g_atomic_int_get (&state) == 0)
+     g_cond_wait (&roca_cond_1, &roca_mutex_1);
+-  g_assert (state == 1);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 1);
+   g_assert (g_task_get_return_on_cancel (task));
+ 
+-  while (state == 1)
++  while (g_atomic_int_get (&state) == 1)
+     g_cond_wait (&roca_cond_2, &roca_mutex_2);
+-  g_assert (state == 2);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 2);
+   g_assert (!g_task_get_return_on_cancel (task));
+ 
+   g_cancellable_cancel (cancellable);
+@@ -1904,18 +1904,18 @@ test_return_on_cancel_atomic (void)
+   g_main_loop_run (loop);
+   g_assert (callback_ran == FALSE);
+ 
+-  while (state == 2)
++  while (g_atomic_int_get (&state) == 2)
+     g_cond_wait (&roca_cond_1, &roca_mutex_1);
+-  g_assert (state == 5);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 5);
+   g_assert (!g_task_get_return_on_cancel (task));
+ 
+   g_main_loop_run (loop);
+   g_assert (callback_ran == TRUE);
+   g_assert_true (notification_emitted);
+ 
+-  while (state == 5)
++  while (g_atomic_int_get (&state) == 5)
+     g_cond_wait (&roca_cond_2, &roca_mutex_2);
+-  g_assert (state == 7);
++  g_assert_cmpint (g_atomic_int_get (&state), ==, 7);
+ 
+   g_object_unref (cancellable);
+   g_mutex_unlock (&roca_mutex_1);
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 0000000..7f22b4d
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,35 @@
+From f4607def1695efb50eb49e0586eed0f5557935f2 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:20:37 +0000
+Subject: [PATCH 06/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/tests/g-file-info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/tests/g-file-info.c b/gio/tests/g-file-info.c
+index 809b0ec79..1a02b5e0e 100644
+--- a/gio/tests/g-file-info.c
++++ b/gio/tests/g-file-info.c
+@@ -221,7 +221,7 @@ test_internal_enhanced_stdio (void)
+   guint64 size_p0, alsize_p0, size_ps, alsize_ps;
+   const gchar *id_p0;
+   const gchar *id_p1;
+-  volatile guint64 time_p0;
++  guint64 time_p0;
+   gchar *tmp_dir;
+   wchar_t *programdata_dir_w;
+   wchar_t *users_dir_w;
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch
new file mode 100644
index 0000000..78753f8
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch
@@ -0,0 +1,111 @@
+From 33612404397f87f0cd45da90d3aa9ab60df895ee Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:24:28 +0000
+Subject: [PATCH 07/29] gdbusconnection: Drop unnecessary volatile qualifiers
+ from variables
+
+This should introduce no API changes; there are public functions
+exported by `GDBusConnection` which still have some (incorrectly)
+`volatile` arguments, but dropping those qualifiers would be an API
+break.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusconnection.c | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
+index ed8cf6219..91c365e80 100644
+--- a/gio/gdbusconnection.c
++++ b/gio/gdbusconnection.c
+@@ -393,7 +393,7 @@ struct _GDBusConnection
+    * FLAG_CLOSED is the closed property. It may be read at any time, but
+    * may only be written while holding @lock.
+    */
+-  volatile gint atomic_flags;
++  gint atomic_flags;  /* (atomic) */
+ 
+   /* If the connection could not be established during initable_init(),
+    * this GError will be set.
+@@ -1596,7 +1596,7 @@ static gboolean
+ g_dbus_connection_send_message_unlocked (GDBusConnection   *connection,
+                                          GDBusMessage      *message,
+                                          GDBusSendMessageFlags flags,
+-                                         volatile guint32  *out_serial,
++                                         guint32           *out_serial,
+                                          GError           **error)
+ {
+   guchar *blob;
+@@ -1741,7 +1741,7 @@ g_dbus_connection_send_message (GDBusConnection        *connection,
+   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+ 
+   CONNECTION_LOCK (connection);
+-  ret = g_dbus_connection_send_message_unlocked (connection, message, flags, out_serial, error);
++  ret = g_dbus_connection_send_message_unlocked (connection, message, flags, (guint32 *) out_serial, error);
+   CONNECTION_UNLOCK (connection);
+   return ret;
+ }
+@@ -1901,7 +1901,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection     *connect
+                                                     GDBusMessage        *message,
+                                                     GDBusSendMessageFlags flags,
+                                                     gint                 timeout_msec,
+-                                                    volatile guint32    *out_serial,
++                                                    guint32             *out_serial,
+                                                     GCancellable        *cancellable,
+                                                     GAsyncReadyCallback  callback,
+                                                     gpointer             user_data)
+@@ -1909,7 +1909,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection     *connect
+   GTask *task;
+   SendMessageData *data;
+   GError *error = NULL;
+-  volatile guint32 serial;
++  guint32 serial;
+ 
+   if (out_serial == NULL)
+     out_serial = &serial;
+@@ -2022,7 +2022,7 @@ g_dbus_connection_send_message_with_reply (GDBusConnection       *connection,
+                                                       message,
+                                                       flags,
+                                                       timeout_msec,
+-                                                      out_serial,
++                                                      (guint32 *) out_serial,
+                                                       cancellable,
+                                                       callback,
+                                                       user_data);
+@@ -3082,7 +3082,7 @@ g_dbus_connection_get_peer_credentials (GDBusConnection *connection)
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static volatile guint _global_filter_id = 1;
++static guint _global_filter_id = 1;  /* (atomic) */
+ 
+ /**
+  * g_dbus_connection_add_filter:
+@@ -3327,9 +3327,9 @@ args_to_rule (const gchar      *sender,
+   return g_string_free (rule, FALSE);
+ }
+ 
+-static volatile guint _global_subscriber_id = 1;
+-static volatile guint _global_registration_id = 1;
+-static volatile guint _global_subtree_registration_id = 1;
++static guint _global_subscriber_id = 1;  /* (atomic) */
++static guint _global_registration_id = 1;  /* (atomic) */
++static guint _global_subtree_registration_id = 1;  /* (atomic) */
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+@@ -5992,7 +5992,7 @@ g_dbus_connection_call_sync_internal (GDBusConnection         *connection,
+                                                           message,
+                                                           send_flags,
+                                                           timeout_msec,
+-                                                          NULL, /* volatile guint32 *out_serial */
++                                                          NULL, /* guint32 *out_serial */
+                                                           cancellable,
+                                                           &local_error);
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch
new file mode 100644
index 0000000..e947a26
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch
@@ -0,0 +1,95 @@
+From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:26:19 +0000
+Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from
+ variables
+
+This should introduce no API changes. The
+`g_dbus_error_register_error_domain()` function still (incorrectly) has
+a `volatile` argument, but dropping that qualifier would be an API
+break.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbuserror.c | 28 +++++++++++++++++-----------
+ 1 file changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c
+index 682677354..b03a33f27 100644
+--- a/gio/gdbuserror.c
++++ b/gio/gdbuserror.c
+@@ -84,12 +84,12 @@
+  * GQuark
+  * foo_bar_error_quark (void)
+  * {
+- *   static volatile gsize quark_volatile = 0;
++ *   static gsize quark = 0;
+  *   g_dbus_error_register_error_domain ("foo-bar-error-quark",
+- *                                       &quark_volatile,
++ *                                       &quark,
+  *                                       foo_bar_error_entries,
+  *                                       G_N_ELEMENTS (foo_bar_error_entries));
+- *   return (GQuark) quark_volatile;
++ *   return (GQuark) quark;
+  * }
+  * ]|
+  * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and
+@@ -160,12 +160,12 @@ GQuark
+ g_dbus_error_quark (void)
+ {
+   G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY);
+-  static volatile gsize quark_volatile = 0;
++  static gsize quark = 0;
+   g_dbus_error_register_error_domain ("g-dbus-error-quark",
+-                                      &quark_volatile,
++                                      &quark,
+                                       g_dbus_error_entries,
+                                       G_N_ELEMENTS (g_dbus_error_entries));
+-  return (GQuark) quark_volatile;
++  return (GQuark) quark;
+ }
+ 
+ /**
+@@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar           *error_domain_quark_na
+                                     const GDBusErrorEntry *entries,
+                                     guint                  num_entries)
+ {
++  gsize *quark;
++
+   g_return_if_fail (error_domain_quark_name != NULL);
+   g_return_if_fail (quark_volatile != NULL);
+   g_return_if_fail (entries != NULL);
+   g_return_if_fail (num_entries > 0);
+ 
+-  if (g_once_init_enter (quark_volatile))
++  /* Drop the volatile qualifier, which should never have been on the argument
++   * in the first place. */
++  quark = (gsize *) quark_volatile;
++
++  if (g_once_init_enter (quark))
+     {
+       guint n;
+-      GQuark quark;
++      GQuark new_quark;
+ 
+-      quark = g_quark_from_static_string (error_domain_quark_name);
++      new_quark = g_quark_from_static_string (error_domain_quark_name);
+ 
+       for (n = 0; n < num_entries; n++)
+         {
+-          g_warn_if_fail (g_dbus_error_register_error (quark,
++          g_warn_if_fail (g_dbus_error_register_error (new_quark,
+                                                        entries[n].error_code,
+                                                        entries[n].dbus_error_name));
+         }
+-      g_once_init_leave (quark_volatile, quark);
++      g_once_init_leave (quark, new_quark);
+     }
+ }
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch
new file mode 100644
index 0000000..7897d43
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch
@@ -0,0 +1,207 @@
+From 74250cd9c9dfd3ad428e445c095ceac88ba18691 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:28:23 +0000
+Subject: [PATCH 09/29] gio: Drop unnecessary volatile qualifiers from internal
+ variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusinterfaceskeleton.c |  2 +-
+ gio/gdbusintrospection.h     | 14 +++++++-------
+ gio/gdbusnameowning.c        |  4 ++--
+ gio/gdbusnamewatching.c      |  4 ++--
+ gio/gdbusprivate.c           | 10 +++++-----
+ gio/gnetworking.c            |  2 +-
+ 6 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c
+index 243b4a0a4..76398df36 100644
+--- a/gio/gdbusinterfaceskeleton.c
++++ b/gio/gdbusinterfaceskeleton.c
+@@ -458,7 +458,7 @@ dbus_interface_interface_init (GDBusInterfaceIface *iface)
+ 
+ typedef struct
+ {
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+   GDBusInterfaceSkeleton       *interface;
+   GDBusInterfaceMethodCallFunc  method_call_func;
+   GDBusMethodInvocation        *invocation;
+diff --git a/gio/gdbusintrospection.h b/gio/gdbusintrospection.h
+index 14b171055..f2e291787 100644
+--- a/gio/gdbusintrospection.h
++++ b/gio/gdbusintrospection.h
+@@ -43,7 +43,7 @@ G_BEGIN_DECLS
+ struct _GDBusAnnotationInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *key;
+   gchar                *value;
+   GDBusAnnotationInfo **annotations;
+@@ -63,7 +63,7 @@ struct _GDBusAnnotationInfo
+ struct _GDBusArgInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *name;
+   gchar                *signature;
+   GDBusAnnotationInfo **annotations;
+@@ -84,7 +84,7 @@ struct _GDBusArgInfo
+ struct _GDBusMethodInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *name;
+   GDBusArgInfo        **in_args;
+   GDBusArgInfo        **out_args;
+@@ -105,7 +105,7 @@ struct _GDBusMethodInfo
+ struct _GDBusSignalInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *name;
+   GDBusArgInfo        **args;
+   GDBusAnnotationInfo **annotations;
+@@ -126,7 +126,7 @@ struct _GDBusSignalInfo
+ struct _GDBusPropertyInfo
+ {
+   /*< public >*/
+-  volatile gint             ref_count;
++  gint                      ref_count;  /* (atomic) */
+   gchar                    *name;
+   gchar                    *signature;
+   GDBusPropertyInfoFlags    flags;
+@@ -149,7 +149,7 @@ struct _GDBusPropertyInfo
+ struct _GDBusInterfaceInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *name;
+   GDBusMethodInfo     **methods;
+   GDBusSignalInfo     **signals;
+@@ -172,7 +172,7 @@ struct _GDBusInterfaceInfo
+ struct _GDBusNodeInfo
+ {
+   /*< public >*/
+-  volatile gint         ref_count;
++  gint                  ref_count;  /* (atomic) */
+   gchar                *path;
+   GDBusInterfaceInfo  **interfaces;
+   GDBusNodeInfo       **nodes;
+diff --git a/gio/gdbusnameowning.c b/gio/gdbusnameowning.c
+index d20e6ffed..1130d6789 100644
+--- a/gio/gdbusnameowning.c
++++ b/gio/gdbusnameowning.c
+@@ -55,7 +55,7 @@ typedef enum
+ 
+ typedef struct
+ {
+-  volatile gint             ref_count;
++  gint                      ref_count;  /* (atomic) */
+   guint                     id;
+   GBusNameOwnerFlags        flags;
+   gchar                    *name;
+@@ -73,7 +73,7 @@ typedef struct
+   guint                     name_acquired_subscription_id;
+   guint                     name_lost_subscription_id;
+ 
+-  volatile gboolean         cancelled; /* must hold lock when reading or modifying */
++  gboolean                  cancelled; /* must hold lock when reading or modifying */
+ 
+   gboolean                  needs_release;
+ } Client;
+diff --git a/gio/gdbusnamewatching.c b/gio/gdbusnamewatching.c
+index bc2a9119e..8d24700c5 100644
+--- a/gio/gdbusnamewatching.c
++++ b/gio/gdbusnamewatching.c
+@@ -56,7 +56,7 @@ typedef enum
+ 
+ typedef struct
+ {
+-  volatile gint             ref_count;
++  gint                      ref_count;  /* (atomic) */
+   guint                     id;
+   gchar                    *name;
+   GBusNameWatcherFlags      flags;
+@@ -78,7 +78,7 @@ typedef struct
+ } Client;
+ 
+ /* Must be accessed atomically. */
+-static volatile guint next_global_id = 1;
++static guint next_global_id = 1;  /* (atomic) */
+ 
+ /* Must be accessed with @lock held. */
+ static GHashTable *map_id_to_client = NULL;
+diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c
+index 2551e4791..99b37f3eb 100644
+--- a/gio/gdbusprivate.c
++++ b/gio/gdbusprivate.c
+@@ -265,7 +265,7 @@ ensure_required_types (void)
+ 
+ typedef struct
+ {
+-  volatile gint refcount;
++  gint refcount;  /* (atomic) */
+   GThread *thread;
+   GMainContext *context;
+   GMainLoop *loop;
+@@ -341,12 +341,12 @@ typedef enum {
+ 
+ struct GDBusWorker
+ {
+-  volatile gint                       ref_count;
++  gint                                ref_count;  /* (atomic) */
+ 
+   SharedThreadData                   *shared_thread_data;
+ 
+   /* really a boolean, but GLib 2.28 lacks atomic boolean ops */
+-  volatile gint                       stopped;
++  gint                                stopped;  /* (atomic) */
+ 
+   /* TODO: frozen (e.g. G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING) currently
+    * only affects messages received from the other peer (since GDBusServer is the
+@@ -1941,11 +1941,11 @@ _g_dbus_debug_print_unlock (void)
+ void
+ _g_dbus_initialize (void)
+ {
+-  static volatile gsize initialized = 0;
++  static gsize initialized = 0;
+ 
+   if (g_once_init_enter (&initialized))
+     {
+-      volatile GQuark g_dbus_error_domain;
++      GQuark g_dbus_error_domain;
+       const gchar *debug;
+ 
+       g_dbus_error_domain = G_DBUS_ERROR;
+diff --git a/gio/gnetworking.c b/gio/gnetworking.c
+index 05507fe70..7bc6d73c4 100644
+--- a/gio/gnetworking.c
++++ b/gio/gnetworking.c
+@@ -61,7 +61,7 @@ void
+ g_networking_init (void)
+ {
+ #ifdef G_OS_WIN32
+-  static volatile gsize inited = 0;
++  static gsize inited = 0;
+ 
+   if (g_once_init_enter (&inited))
+     {
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch
new file mode 100644
index 0000000..e52b709
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch
@@ -0,0 +1,51 @@
+From e4e88688a0722237effc56cc21438d0c8e82de88 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:29:26 +0000
+Subject: [PATCH 10/29] kqueue: Fix unlocked access to shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier because it doesn’t help.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/kqueue/kqueue-missing.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/gio/kqueue/kqueue-missing.c b/gio/kqueue/kqueue-missing.c
+index 37af82e5b..d1ffdf4bd 100644
+--- a/gio/kqueue/kqueue-missing.c
++++ b/gio/kqueue/kqueue-missing.c
+@@ -34,7 +34,7 @@ static gboolean km_debug_enabled = FALSE;
+ static GSList *missing_subs_list = NULL;
+ G_LOCK_DEFINE_STATIC (missing_lock);
+ 
+-static volatile gboolean scan_missing_running = FALSE;
++static gboolean scan_missing_running = FALSE;  /* must be accessed under @missing_lock */
+ 
+ 
+ static gboolean
+@@ -62,7 +62,6 @@ _km_add_missing (kqueue_sub *sub)
+ 
+   KM_W ("adding %s to missing list\n", sub->filename);
+   missing_subs_list = g_slist_prepend (missing_subs_list, sub);
+-  G_UNLOCK (missing_lock);
+ 
+   if (!scan_missing_running)
+     {
+@@ -73,6 +72,8 @@ _km_add_missing (kqueue_sub *sub)
+       g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
+       g_source_unref (source);
+     }
++
++  G_UNLOCK (missing_lock);
+ }
+ 
+ /**
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 0000000..ea3fd9f
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,126 @@
+From 7cdb68713c1863a27ad82d801756ec74097e8e87 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:30:36 +0000
+Subject: [PATCH 11/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ tests/gobject/performance-threaded.c |  2 +-
+ tests/gobject/performance.c          |  4 ++--
+ tests/onceinit.c                     | 16 ++++++++--------
+ 3 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/tests/gobject/performance-threaded.c b/tests/gobject/performance-threaded.c
+index 30ea5bd80..c98541d66 100644
+--- a/tests/gobject/performance-threaded.c
++++ b/tests/gobject/performance-threaded.c
+@@ -52,7 +52,7 @@ static GType liststore_interfaces[6];
+ static gpointer 
+ register_types (void)
+ {
+-  static volatile gsize inited = 0;
++  static gsize inited = 0;
+   if (g_once_init_enter (&inited))
+     {
+       liststore_interfaces[0] = simple_register_class ("GtkBuildable", G_TYPE_INTERFACE, 0);
+diff --git a/tests/gobject/performance.c b/tests/gobject/performance.c
+index 236ffaed0..163be58b4 100644
+--- a/tests/gobject/performance.c
++++ b/tests/gobject/performance.c
+@@ -575,8 +575,8 @@ test_type_check_run (PerformanceTest *test,
+ 		     gpointer _data)
+ {
+   struct TypeCheckTest *data = _data;
+-  volatile GObject *object = data->object;
+-  volatile GType type, types[5];
++  GObject *object = data->object;
++  GType type, types[5];
+   int i, j;
+ 
+   types[0] = test_iface1_get_type ();
+diff --git a/tests/onceinit.c b/tests/onceinit.c
+index 89ba6a136..9788efcbd 100644
+--- a/tests/onceinit.c
++++ b/tests/onceinit.c
+@@ -25,13 +25,13 @@
+ 
+ static GMutex       tmutex;
+ static GCond        tcond;
+-static volatile int thread_call_count = 0;
++static int thread_call_count = 0;  /* (atomic) */
+ static char         dummy_value = 'x';
+ 
+ static void
+ assert_singleton_execution1 (void)
+ {
+-  static volatile int seen_execution = 0;
++  static int seen_execution = 0;  /* (atomic) */
+   int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+   if (old_seen_execution != 0)
+     g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -40,7 +40,7 @@ assert_singleton_execution1 (void)
+ static void
+ assert_singleton_execution2 (void)
+ {
+-  static volatile int seen_execution = 0;
++  static int seen_execution = 0;  /* (atomic) */
+   int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+   if (old_seen_execution != 0)
+     g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -49,7 +49,7 @@ assert_singleton_execution2 (void)
+ static void
+ assert_singleton_execution3 (void)
+ {
+-  static volatile int seen_execution = 0;
++  static int seen_execution = 0;  /* (atomic) */
+   int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+   if (old_seen_execution != 0)
+     g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -58,7 +58,7 @@ assert_singleton_execution3 (void)
+ static void
+ initializer1 (void)
+ {
+-  static volatile gsize initialized = 0;
++  static gsize initialized = 0;
+   if (g_once_init_enter (&initialized))
+     {
+       gsize initval = 42;
+@@ -70,7 +70,7 @@ initializer1 (void)
+ static gpointer
+ initializer2 (void)
+ {
+-  static volatile gsize initialized = 0;
++  static gsize initialized = 0;
+   if (g_once_init_enter (&initialized))
+     {
+       void *pointer_value = &dummy_value;
+@@ -83,7 +83,7 @@ initializer2 (void)
+ static void
+ initializer3 (void)
+ {
+-  static volatile gsize initialized = 0;
++  static gsize initialized = 0;
+   if (g_once_init_enter (&initialized))
+     {
+       gsize initval = 42;
+@@ -163,7 +163,7 @@ main (int   argc,
+       static void                                       \
+       test_initializer_##N (void)                       \
+       {                                                 \
+-        static volatile gsize initialized = 0;          \
++        static gsize initialized = 0;                   \
+         if (g_once_init_enter (&initialized))           \
+           {                                             \
+             g_free (g_strdup_printf ("cpuhog%5d", 1));  \
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch
new file mode 100644
index 0000000..be7fcba
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch
@@ -0,0 +1,103 @@
+From 1a7f0002a052725fb646e136fadd5dad66222d7f Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:31:01 +0000
+Subject: [PATCH 12/29] tests: Fix non-atomic access to some shared variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variables, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ tests/refcount/objects.c     | 8 ++++----
+ tests/refcount/properties3.c | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/tests/refcount/objects.c b/tests/refcount/objects.c
+index 963766d00..0c471a42b 100644
+--- a/tests/refcount/objects.c
++++ b/tests/refcount/objects.c
+@@ -26,7 +26,7 @@ struct _GTestClass
+ };
+ 
+ static GType my_test_get_type (void);
+-static volatile gboolean stopping;
++static gint stopping;  /* (atomic) */
+ 
+ static void my_test_class_init (GTestClass * klass);
+ static void my_test_init (GTest * test);
+@@ -101,7 +101,7 @@ run_thread (GTest * test)
+ {
+   gint i = 1;
+ 
+-  while (!stopping) {
++  while (!g_atomic_int_get (&stopping)) {
+     my_test_do_refcount (test);
+     if ((i++ % 10000) == 0) {
+       g_print (".");
+@@ -128,7 +128,7 @@ main (int argc, char **argv)
+ 
+   test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *));
+ 
+-  stopping = FALSE;
++  g_atomic_int_set (&stopping, 0);
+ 
+   for (i = 0; i < n_threads; i++) {
+     GThread *thread;
+@@ -141,7 +141,7 @@ main (int argc, char **argv)
+   }
+   g_usleep (5000000);
+ 
+-  stopping = TRUE;
++  g_atomic_int_set (&stopping, 1);
+ 
+   g_print ("\nstopping\n");
+ 
+diff --git a/tests/refcount/properties3.c b/tests/refcount/properties3.c
+index bc8820661..31f26a46e 100644
+--- a/tests/refcount/properties3.c
++++ b/tests/refcount/properties3.c
+@@ -34,7 +34,7 @@ struct _GTestClass
+ static GType my_test_get_type (void);
+ G_DEFINE_TYPE (GTest, my_test, G_TYPE_OBJECT)
+ 
+-static volatile gboolean stopping;
++static gint stopping;  /* (atomic) */
+ 
+ static void my_test_get_property (GObject    *object,
+ 				  guint       prop_id,
+@@ -140,7 +140,7 @@ run_thread (GTest * test)
+ {
+   gint i = 1;
+ 
+-  while (!stopping) {
++  while (!g_atomic_int_get (&stopping)) {
+     my_test_do_property (test);
+     if ((i++ % 10000) == 0)
+       {
+@@ -170,7 +170,7 @@ main (int argc, char **argv)
+ 
+   test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *));
+ 
+-  stopping = FALSE;
++  g_atomic_int_set (&stopping, 0);
+ 
+   for (i = 0; i < n_threads; i++) {
+     GThread *thread;
+@@ -180,7 +180,7 @@ main (int argc, char **argv)
+   }
+   g_usleep (30000000);
+ 
+-  stopping = TRUE;
++  g_atomic_int_set (&stopping, 1);
+   g_print ("\nstopping\n");
+ 
+   /* join all threads */
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch
new file mode 100644
index 0000000..efc6817
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch
@@ -0,0 +1,180 @@
+From 3c648457c284b4ba313b8591008d2e18ae4335eb Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:36:37 +0000
+Subject: [PATCH 13/29] gatomic: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+The `volatile` qualifiers on the function arguments have to be kept, as
+they are (unfortunately) part of the API.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gatomic.c | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/glib/gatomic.c b/glib/gatomic.c
+index 8b8c6453d..67f5ba6b4 100644
+--- a/glib/gatomic.c
++++ b/glib/gatomic.c
+@@ -316,7 +316,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+-  return g_atomic_pointer_get ((const volatile gpointer *) atomic);
++  return g_atomic_pointer_get ((gpointer *) atomic);
+ }
+ 
+ /**
+@@ -335,7 +335,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+                         gpointer       newval)
+ {
+-  g_atomic_pointer_set ((volatile gpointer *) atomic, newval);
++  g_atomic_pointer_set ((gpointer *) atomic, newval);
+ }
+ 
+ /**
+@@ -363,7 +363,7 @@ gboolean
+                                          gpointer       oldval,
+                                          gpointer       newval)
+ {
+-  return g_atomic_pointer_compare_and_exchange ((volatile gpointer *) atomic,
++  return g_atomic_pointer_compare_and_exchange ((gpointer *) atomic,
+                                                 oldval, newval);
+ }
+ 
+@@ -387,7 +387,7 @@ gssize
+ (g_atomic_pointer_add) (volatile void *atomic,
+                         gssize         val)
+ {
+-  return g_atomic_pointer_add ((volatile gpointer *) atomic, val);
++  return g_atomic_pointer_add ((gpointer *) atomic, val);
+ }
+ 
+ /**
+@@ -411,7 +411,7 @@ gsize
+ (g_atomic_pointer_and) (volatile void *atomic,
+                         gsize          val)
+ {
+-  return g_atomic_pointer_and ((volatile gpointer *) atomic, val);
++  return g_atomic_pointer_and ((gpointer *) atomic, val);
+ }
+ 
+ /**
+@@ -435,7 +435,7 @@ gsize
+ (g_atomic_pointer_or) (volatile void *atomic,
+                        gsize          val)
+ {
+-  return g_atomic_pointer_or ((volatile gpointer *) atomic, val);
++  return g_atomic_pointer_or ((gpointer *) atomic, val);
+ }
+ 
+ /**
+@@ -459,7 +459,7 @@ gsize
+ (g_atomic_pointer_xor) (volatile void *atomic,
+                         gsize          val)
+ {
+-  return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
++  return g_atomic_pointer_xor ((gpointer *) atomic, val);
+ }
+ 
+ #elif defined (G_PLATFORM_WIN32)
+@@ -591,7 +591,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+-  const volatile gpointer *ptr = atomic;
++  const gpointer *ptr = atomic;
+ 
+   MemoryBarrier ();
+   return *ptr;
+@@ -601,7 +601,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+                         gpointer       newval)
+ {
+-  volatile gpointer *ptr = atomic;
++  gpointer *ptr = atomic;
+ 
+   *ptr = newval;
+   MemoryBarrier ();
+@@ -797,7 +797,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+-  const volatile gpointer *ptr = atomic;
++  const gpointer *ptr = atomic;
+   gpointer value;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -811,7 +811,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+                         gpointer       newval)
+ {
+-  volatile gpointer *ptr = atomic;
++  gpointer *ptr = atomic;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+   *ptr = newval;
+@@ -823,7 +823,7 @@ gboolean
+                                          gpointer       oldval,
+                                          gpointer       newval)
+ {
+-  volatile gpointer *ptr = atomic;
++  gpointer *ptr = atomic;
+   gboolean success;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -840,7 +840,7 @@ gssize
+ (g_atomic_pointer_add) (volatile void *atomic,
+                         gssize         val)
+ {
+-  volatile gssize *ptr = atomic;
++  gssize *ptr = atomic;
+   gssize oldval;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -855,7 +855,7 @@ gsize
+ (g_atomic_pointer_and) (volatile void *atomic,
+                         gsize          val)
+ {
+-  volatile gsize *ptr = atomic;
++  gsize *ptr = atomic;
+   gsize oldval;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -870,7 +870,7 @@ gsize
+ (g_atomic_pointer_or) (volatile void *atomic,
+                        gsize          val)
+ {
+-  volatile gsize *ptr = atomic;
++  gsize *ptr = atomic;
+   gsize oldval;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -885,7 +885,7 @@ gsize
+ (g_atomic_pointer_xor) (volatile void *atomic,
+                         gsize          val)
+ {
+-  volatile gsize *ptr = atomic;
++  gsize *ptr = atomic;
+   gsize oldval;
+ 
+   pthread_mutex_lock (&g_atomic_lock);
+@@ -915,5 +915,5 @@ gint
+ g_atomic_int_exchange_and_add (volatile gint *atomic,
+                                gint           val)
+ {
+-  return (g_atomic_int_add) (atomic, val);
++  return (g_atomic_int_add) ((gint *) atomic, val);
+ }
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch
new file mode 100644
index 0000000..bcc06e0
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch
@@ -0,0 +1,56 @@
+From 9474655eb21d64519b293e780bb686976cbdb790 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:38:36 +0000
+Subject: [PATCH 14/29] gatomic: Drop unnecessary volatile qualifiers from
+ macro variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+The `volatile` qualifiers on the function arguments have to be kept, as
+they are (unfortunately) part of the API.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gatomic.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/glib/gatomic.h b/glib/gatomic.h
+index bb1435c70..e6eccfada 100644
+--- a/glib/gatomic.h
++++ b/glib/gatomic.h
+@@ -211,7 +211,7 @@ G_END_DECLS
+   }))
+ #define g_atomic_pointer_and(atomic, val) \
+   (G_GNUC_EXTENSION ({                                                       \
+-    volatile gsize *gapa_atomic = (volatile gsize *) (atomic);               \
++    gsize *gapa_atomic = (gsize *) (atomic);                                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+@@ -220,7 +220,7 @@ G_END_DECLS
+   }))
+ #define g_atomic_pointer_or(atomic, val) \
+   (G_GNUC_EXTENSION ({                                                       \
+-    volatile gsize *gapo_atomic = (volatile gsize *) (atomic);               \
++    gsize *gapo_atomic = (gsize *) (atomic);                                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+@@ -229,7 +229,7 @@ G_END_DECLS
+   }))
+ #define g_atomic_pointer_xor(atomic, val) \
+   (G_GNUC_EXTENSION ({                                                       \
+-    volatile gsize *gapx_atomic = (volatile gsize *) (atomic);               \
++    gsize *gapx_atomic = (gsize *) (atomic);                                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch
new file mode 100644
index 0000000..9468548
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch
@@ -0,0 +1,169 @@
+From 1314ff93fc4d3379483c33da6a7deff27f71ed95 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:40:56 +0000
+Subject: [PATCH 15/29] glib: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gdatetime.c | 2 +-
+ glib/gkeyfile.c  | 2 +-
+ glib/gmain.c     | 8 ++++----
+ glib/gmarkup.c   | 2 +-
+ glib/gregex.c    | 6 +++---
+ glib/gthread.c   | 6 +++---
+ 6 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/glib/gdatetime.c b/glib/gdatetime.c
+index 1755257be..453077f6d 100644
+--- a/glib/gdatetime.c
++++ b/glib/gdatetime.c
+@@ -126,7 +126,7 @@ struct _GDateTime
+   /* 1 is 0001-01-01 in Proleptic Gregorian */
+   gint32 days;
+ 
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+ };
+ 
+ /* Time conversion {{{1 */
+diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c
+index 9d0215331..bbe638b74 100644
+--- a/glib/gkeyfile.c
++++ b/glib/gkeyfile.c
+@@ -512,7 +512,7 @@ struct _GKeyFile
+ 
+   gchar **locales;
+ 
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+ };
+ 
+ typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair;
+diff --git a/glib/gmain.c b/glib/gmain.c
+index 772b8ecfc..9c5f0ef1e 100644
+--- a/glib/gmain.c
++++ b/glib/gmain.c
+@@ -272,7 +272,7 @@ struct _GMainContext
+   guint owner_count;
+   GSList *waiters;
+ 
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+ 
+   GHashTable *sources;              /* guint -> GSource */
+ 
+@@ -303,7 +303,7 @@ struct _GMainContext
+ 
+ struct _GSourceCallback
+ {
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+   GSourceFunc func;
+   gpointer    data;
+   GDestroyNotify notify;
+@@ -313,7 +313,7 @@ struct _GMainLoop
+ {
+   GMainContext *context;
+   gboolean is_running; /* (atomic) */
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+ };
+ 
+ struct _GTimeoutSource
+@@ -4749,7 +4749,7 @@ g_main_context_get_poll_func (GMainContext *context)
+  *
+  * |[<!-- language="C" --> 
+  *   #define NUM_TASKS 10
+- *   static volatile gint tasks_remaining = NUM_TASKS;
++ *   static gint tasks_remaining = NUM_TASKS;  // (atomic)
+  *   ...
+  *  
+  *   while (g_atomic_int_get (&tasks_remaining) != 0)
+diff --git a/glib/gmarkup.c b/glib/gmarkup.c
+index ba4dfd2e4..b8327fb6d 100644
+--- a/glib/gmarkup.c
++++ b/glib/gmarkup.c
+@@ -119,7 +119,7 @@ struct _GMarkupParseContext
+ {
+   const GMarkupParser *parser;
+ 
+-  volatile gint ref_count;
++  gint ref_count;  /* (atomic) */
+ 
+   GMarkupParseFlags flags;
+ 
+diff --git a/glib/gregex.c b/glib/gregex.c
+index 52416bbb9..5e6ddfb46 100644
+--- a/glib/gregex.c
++++ b/glib/gregex.c
+@@ -203,7 +203,7 @@ G_STATIC_ASSERT (G_REGEX_RAW               == PCRE_UTF8);
+ 
+ struct _GMatchInfo
+ {
+-  volatile gint ref_count;      /* the ref count */
++  gint ref_count;               /* the ref count (atomic) */
+   GRegex *regex;                /* the regex */
+   GRegexMatchFlags match_opts;  /* options used at match time on the regex */
+   gint matches;                 /* number of matching sub patterns */
+@@ -218,7 +218,7 @@ struct _GMatchInfo
+ 
+ struct _GRegex
+ {
+-  volatile gint ref_count;      /* the ref count for the immutable part */
++  gint ref_count;               /* the ref count for the immutable part (atomic) */
+   gchar *pattern;               /* the pattern */
+   pcre *pcre_re;                /* compiled form of the pattern */
+   GRegexCompileFlags compile_opts;      /* options used at compile time on the pattern */
+@@ -1300,7 +1300,7 @@ g_regex_new (const gchar         *pattern,
+   pcre *re;
+   const gchar *errmsg;
+   gboolean optimize = FALSE;
+-  static volatile gsize initialised = 0;
++  static gsize initialised = 0;
+ 
+   g_return_val_if_fail (pattern != NULL, NULL);
+   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+diff --git a/glib/gthread.c b/glib/gthread.c
+index 53f3a0848..612a9739f 100644
+--- a/glib/gthread.c
++++ b/glib/gthread.c
+@@ -513,7 +513,7 @@ static GMutex    g_once_mutex;
+ static GCond     g_once_cond;
+ static GSList   *g_once_init_list = NULL;
+ 
+-static volatile guint g_thread_n_created_counter = 0;
++static guint g_thread_n_created_counter = 0;  /* (atomic) */
+ 
+ static void g_thread_cleanup (gpointer data);
+ static GPrivate     g_thread_specific_private = G_PRIVATE_INIT (g_thread_cleanup);
+@@ -694,7 +694,7 @@ g_once_impl (GOnce       *once,
+ gboolean
+ (g_once_init_enter) (volatile void *location)
+ {
+-  volatile gsize *value_location = location;
++  gsize *value_location = (gsize *) location;
+   gboolean need_init = FALSE;
+   g_mutex_lock (&g_once_mutex);
+   if (g_atomic_pointer_get (value_location) == 0)
+@@ -731,7 +731,7 @@ void
+ (g_once_init_leave) (volatile void *location,
+                      gsize          result)
+ {
+-  volatile gsize *value_location = location;
++  gsize *value_location = (gsize *) location;
+ 
+   g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
+   g_return_if_fail (result != 0);
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch
new file mode 100644
index 0000000..8111b3b
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch
@@ -0,0 +1,126 @@
+From 08d04d0428cc26935a2d42083f1710432465c98a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:42:43 +0000
+Subject: [PATCH 16/29] gobject: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gclosure.c |  2 +-
+ gobject/gclosure.h | 20 ++++++++++----------
+ gobject/gobject.c  |  4 ++--
+ gobject/gtype.c    | 10 +++++-----
+ 4 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/gobject/gclosure.c b/gobject/gclosure.c
+index 1d1f2f48a..6d41e6d8a 100644
+--- a/gobject/gclosure.c
++++ b/gobject/gclosure.c
+@@ -98,7 +98,7 @@
+ 
+ typedef union {
+   GClosure closure;
+-  volatile gint vint;
++  gint vint;
+ } ClosureInt;
+ 
+ #define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
+diff --git a/gobject/gclosure.h b/gobject/gclosure.h
+index a0f91f538..884e403a8 100644
+--- a/gobject/gclosure.h
++++ b/gobject/gclosure.h
+@@ -175,20 +175,20 @@ struct _GClosureNotifyData
+ struct _GClosure
+ {
+   /*< private >*/
+-  volatile      	guint	 ref_count : 15;
++  guint ref_count : 15;  /* (atomic) */
+   /* meta_marshal is not used anymore but must be zero for historical reasons
+      as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */
+-  volatile       	guint	 meta_marshal_nouse : 1;
+-  volatile       	guint	 n_guards : 1;
+-  volatile       	guint	 n_fnotifiers : 2;	/* finalization notifiers */
+-  volatile       	guint	 n_inotifiers : 8;	/* invalidation notifiers */
+-  volatile       	guint	 in_inotify : 1;
+-  volatile       	guint	 floating : 1;
++  guint meta_marshal_nouse : 1;  /* (atomic) */
++  guint n_guards : 1;  /* (atomic) */
++  guint n_fnotifiers : 2;  /* finalization notifiers (atomic) */
++  guint n_inotifiers : 8;  /* invalidation notifiers (atomic) */
++  guint in_inotify : 1;  /* (atomic) */
++  guint floating : 1;  /* (atomic) */
+   /*< protected >*/
+-  volatile         	guint	 derivative_flag : 1;
++  guint derivative_flag : 1;  /* (atomic) */
+   /*< public >*/
+-  volatile       	guint	 in_marshal : 1;
+-  volatile       	guint	 is_invalid : 1;
++  guint in_marshal : 1;  /* (atomic) */
++  guint is_invalid : 1;  /* (atomic) */
+ 
+   /*< private >*/	void   (*marshal)  (GClosure       *closure,
+ 					    GValue /*out*/ *return_value,
+diff --git a/gobject/gobject.c b/gobject/gobject.c
+index 6e9c44a1e..a3a32be9f 100644
+--- a/gobject/gobject.c
++++ b/gobject/gobject.c
+@@ -174,9 +174,9 @@ typedef struct
+   GTypeInstance  g_type_instance;
+ 
+   /*< private >*/
+-  volatile guint ref_count;
++  guint          ref_count;  /* (atomic) */
+ #ifdef HAVE_OPTIONAL_FLAGS
+-  volatile guint optional_flags;
++  guint          optional_flags;  /* (atomic) */
+ #endif
+   GData         *qdata;
+ } GObjectReal;
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index 51dad7690..be5989a3e 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -221,9 +221,9 @@ typedef enum
+ /* --- structures --- */
+ struct _TypeNode
+ {
+-  guint volatile ref_count;
++  guint        ref_count;  /* (atomic) */
+ #ifdef G_ENABLE_DEBUG
+-  guint volatile instance_count;
++  guint        instance_count;  /* (atomic) */
+ #endif
+   GTypePlugin *plugin;
+   guint        n_children; /* writable with lock */
+@@ -233,7 +233,7 @@ struct _TypeNode
+   guint        is_instantiatable : 1;
+   guint        mutatable_check_cache : 1;	/* combines some common path checks */
+   GType       *children; /* writable with lock */
+-  TypeData * volatile data;
++  TypeData    *data;
+   GQuark       qname;
+   GData       *global_gdata;
+   union {
+@@ -569,8 +569,8 @@ type_node_new_W (TypeNode    *pnode,
+ }
+ 
+ static inline IFaceEntry*
+-lookup_iface_entry_I (volatile IFaceEntries *entries,
+-		      TypeNode *iface_node)
++lookup_iface_entry_I (IFaceEntries *entries,
++                      TypeNode     *iface_node)
+ {
+   guint8 *offsets;
+   guint offset_index;
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch
new file mode 100644
index 0000000..02816a8
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch
@@ -0,0 +1,44 @@
+From eee7e3c6688f2f1ee9beed5d6d209973c1df387e Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:14:25 +0000
+Subject: [PATCH 17/29] gmessages: Drop unnecessary volatile qualifiers from
+ macro variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gmessages.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/gmessages.h b/glib/gmessages.h
+index 6a28443b4..2e3650baf 100644
+--- a/glib/gmessages.h
++++ b/glib/gmessages.h
+@@ -478,7 +478,7 @@ g_debug (const gchar *format,
+ #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
+ #define g_warning_once(...) \
+   G_STMT_START { \
+-    static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
++    static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0;  /* (atomic) */ \
+     if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+                                            0, 1)) \
+       g_warning (__VA_ARGS__); \
+@@ -487,7 +487,7 @@ g_debug (const gchar *format,
+ #elif defined(G_HAVE_GNUC_VARARGS)  && !G_ANALYZER_ANALYZING
+ #define g_warning_once(format...) \
+   G_STMT_START { \
+-    static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
++    static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0;  /* (atomic) */ \
+     if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+                                            0, 1)) \
+       g_warning (format); \
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch
new file mode 100644
index 0000000..50cb3c4
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch
@@ -0,0 +1,35 @@
+From 8a87069ff42a0631dce153701cb2ec5e343a958c Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:16:30 +0000
+Subject: [PATCH 18/29] gtypes: Drop volatile qualifier from gatomicrefcount
+
+This is technically an API break, but since the type is meant to be
+opaque (third party code is not meant to treat it like an integer) it
+should not cause problems.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gtypes.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/gtypes.h b/glib/gtypes.h
+index 23c5a1295..2c4825582 100644
+--- a/glib/gtypes.h
++++ b/glib/gtypes.h
+@@ -550,8 +550,8 @@ struct _GTimeVal
+   glong tv_usec;
+ } GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
+ 
+-typedef gint            grefcount;
+-typedef volatile gint   gatomicrefcount;
++typedef gint grefcount;
++typedef gint gatomicrefcount;  /* should be accessed only using atomics */
+ 
+ G_END_DECLS
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch
new file mode 100644
index 0000000..be32116
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch
@@ -0,0 +1,44 @@
+From 46bae4f18dfec8fedda82648091752d270b2dff8 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:19:20 +0000
+Subject: [PATCH 19/29] gatomicarray: Drop volatile qualifier from GAtomicArray
+ API
+
+This is an API break, but it should not affect third party code since
+that code should not be interacting with the `data` member in a way that
+invokes its `volatile` qualifier (such as copying to an intermediate
+variable).
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gatomicarray.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gobject/gatomicarray.h b/gobject/gatomicarray.h
+index 9550fa396..89043c5e4 100644
+--- a/gobject/gatomicarray.h
++++ b/gobject/gatomicarray.h
+@@ -29,7 +29,7 @@ G_BEGIN_DECLS
+ 
+ typedef struct _GAtomicArray GAtomicArray;
+ struct _GAtomicArray {
+-  volatile gpointer data;               /* elements - atomic */
++  gpointer data;  /* elements - atomic */
+ };
+ 
+ void     _g_atomic_array_init   (GAtomicArray *array);
+@@ -42,7 +42,7 @@ void     _g_atomic_array_update (GAtomicArray *array,
+ #define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
+ 
+ #define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
+-    volatile gpointer *_datap  = &(_array)->data;				\
++    gpointer *_datap  = &(_array)->data;				\
+     _type *transaction_data, *__check;						\
+ 										\
+     __check = g_atomic_pointer_get (_datap);					\
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch
new file mode 100644
index 0000000..ae024a9
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch
@@ -0,0 +1,33 @@
+From 334f6953364680ddc6c0d3da13fda1d92bf5379d Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:21:07 +0000
+Subject: [PATCH 20/29] gobject: Drop volatile qualifier from GObject.ref_count
+
+This is an API break, but no third party code should be touching
+`GObject.ref_count`, let alone in a way which would be changed by the
+removal of the `volatile` qualifier.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gobject.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gobject/gobject.h b/gobject/gobject.h
+index 7f55e1976..a84c183f8 100644
+--- a/gobject/gobject.h
++++ b/gobject/gobject.h
+@@ -247,7 +247,7 @@ struct  _GObject
+   GTypeInstance  g_type_instance;
+   
+   /*< private >*/
+-  volatile guint ref_count;
++  guint          ref_count;  /* (atomic) */
+   GData         *qdata;
+ };
+ /**
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 0000000..b8ed99c
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,51 @@
+From 8a112c3c6e5fe6838ee29eec7caa62ba32d9bc40 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:22:49 +0000
+Subject: [PATCH 21/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/tests/qdata.c       | 2 +-
+ gobject/tests/threadtests.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/gobject/tests/qdata.c b/gobject/tests/qdata.c
+index 528bdc68e..7d46efb15 100644
+--- a/gobject/tests/qdata.c
++++ b/gobject/tests/qdata.c
+@@ -17,7 +17,7 @@ gboolean fail;
+ #define ROUNDS 10000
+ 
+ GObject *object;
+-volatile gint bucket[THREADS];
++gint bucket[THREADS];  /* accessed from multiple threads, but should never be contested due to the sequence of thread operations */
+ 
+ static gpointer
+ thread_func (gpointer data)
+diff --git a/gobject/tests/threadtests.c b/gobject/tests/threadtests.c
+index e341a9d67..b6f9e17fa 100644
+--- a/gobject/tests/threadtests.c
++++ b/gobject/tests/threadtests.c
+@@ -27,8 +27,8 @@
+ #include <glib.h>
+ #include <glib-object.h>
+ 
+-static volatile int mtsafe_call_counter = 0; /* multi thread safe call counter */
+-static int          unsafe_call_counter = 0; /* single-threaded call counter */
++static int mtsafe_call_counter = 0; /* multi thread safe call counter, must be accessed atomically */
++static int unsafe_call_counter = 0; /* single-threaded call counter */
+ static GCond sync_cond;
+ static GMutex sync_mutex;
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch
new file mode 100644
index 0000000..5da509d
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch
@@ -0,0 +1,38 @@
+From daf90bfa99fc02a253d538c65fbaa12f2e6c1c45 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:23:18 +0000
+Subject: [PATCH 22/29] build: Drop unnecessary volatile qualifiers from
+ configure tests
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ meson.build | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index e0b308a25..ad7f887fb 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1773,7 +1773,7 @@ endforeach
+ # that then to silently fall back on emulated atomic ops just because
+ # the user had the wrong build environment.
+ atomictest = '''int main() {
+-  volatile int atomic = 2;
++  int atomic = 2;
+   __sync_bool_compare_and_swap (&atomic, 2, 3);
+   return 0;
+ }
+@@ -1883,6 +1883,7 @@ endif
+ 
+ # FIXME: we should make it print the result and always return 0, so that
+ # the output in meson shows up as green
++# volatile is needed here to avoid optimisations in the test
+ stack_grows_check_prog = '''
+   volatile int *a = 0, *b = 0;
+   void f (int i) {
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch
new file mode 100644
index 0000000..012f9ca
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch
@@ -0,0 +1,33 @@
+From 0604f5858259c32744e6fc912ed4feb308651a3a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 14:47:23 +0000
+Subject: [PATCH 23/29] gdbusprivate: Avoid a warning about a statement with no
+ effect
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusprivate.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c
+index 99b37f3eb..4e42c1a4d 100644
+--- a/gio/gdbusprivate.c
++++ b/gio/gdbusprivate.c
+@@ -1945,11 +1945,10 @@ _g_dbus_initialize (void)
+ 
+   if (g_once_init_enter (&initialized))
+     {
+-      GQuark g_dbus_error_domain;
+       const gchar *debug;
+ 
+-      g_dbus_error_domain = G_DBUS_ERROR;
+-      (g_dbus_error_domain); /* To avoid -Wunused-but-set-variable */
++      /* Ensure the domain is registered. */
++      g_dbus_error_quark ();
+ 
+       debug = g_getenv ("G_DBUS_DEBUG");
+       if (debug != NULL)
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch
new file mode 100644
index 0000000..7350803
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch
@@ -0,0 +1,49 @@
+From 2d03f99ae4de394cac0690717d96c2d884ccdae2 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 14:47:47 +0000
+Subject: [PATCH 24/29] tests: Add comment to volatile atomic tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+`volatile` should not be used to indicate atomic variables, and we
+shouldn’t encourage its use. Keep the tests, since they check that we
+don’t emit warnings when built against incorrect old code which uses
+`volatile`. But add a comment to stop copy/paste use of `volatile`
+in the future.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/atomic.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c
+index 7d2459f3a..14e6e454e 100644
+--- a/glib/tests/atomic.c
++++ b/glib/tests/atomic.c
+@@ -94,6 +94,9 @@ test_types (void)
+   res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, str);
+   g_assert_true (res);
+ 
++  /* Note that atomic variables should almost certainly not be marked as
++   * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists
++   * to make sure that we don’t warn when built against older third party code. */
+   g_atomic_pointer_set (&vp_str_vol, NULL);
+   res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, str);
+   g_assert_true (res);
+@@ -210,6 +213,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+   res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, (char *) str);
+   g_assert_true (res);
+ 
++  /* Note that atomic variables should almost certainly not be marked as
++   * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists
++   * to make sure that we don’t warn when built against older third party code. */
+   g_atomic_pointer_set (&vp_str_vol, NULL);
+   res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, (char *) str);
+   g_assert_true (res);
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch
new file mode 100644
index 0000000..c15a3b8
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch
@@ -0,0 +1,77 @@
+From 6bd0a4b29753570a2c20b61b5ad2c0068567b7b6 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:44:29 +0000
+Subject: [PATCH 25/29] gthread: Use g_atomic() primitives correctly in
+ destructor list
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In the Windows destructor list, consistently access
+`g_private_destructors` using atomic primitives.
+
+`g_atomic_pointer_compare_and_exchange()` should be equivalent to
+`InterlockedCompareExchangePointer()`, but is a bit more understandable
+in a general GLib context, and pairs with `g_atomic_pointer_get()`. (I
+can’t find a Windows API equivalent for that.)
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gthread-win32.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c
+index 0c37dc6c1..20aca6fa1 100644
+--- a/glib/gthread-win32.c
++++ b/glib/gthread-win32.c
+@@ -301,7 +301,7 @@ struct _GPrivateDestructor
+   GPrivateDestructor *next;
+ };
+ 
+-static GPrivateDestructor * volatile g_private_destructors;
++static GPrivateDestructor *g_private_destructors;  /* (atomic) prepend-only */
+ static CRITICAL_SECTION g_private_lock;
+ 
+ static DWORD
+@@ -329,7 +329,7 @@ g_private_get_impl (GPrivate *key)
+                 g_thread_abort (errno, "malloc");
+               destructor->index = impl;
+               destructor->notify = key->notify;
+-              destructor->next = g_private_destructors;
++              destructor->next = g_atomic_pointer_get (&g_private_destructors);
+ 
+               /* We need to do an atomic store due to the unlocked
+                * access to the destructor list from the thread exit
+@@ -337,13 +337,14 @@ g_private_get_impl (GPrivate *key)
+                *
+                * It can double as a sanity check...
+                */
+-              if (InterlockedCompareExchangePointer (&g_private_destructors, destructor,
+-                                                     destructor->next) != destructor->next)
++              if (!g_atomic_pointer_compare_and_exchange (&g_private_destructors,
++                                                          destructor->next,
++                                                          destructor))
+                 g_thread_abort (0, "g_private_get_impl(1)");
+             }
+ 
+           /* Ditto, due to the unlocked access on the fast path */
+-          if (InterlockedCompareExchangePointer (&key->p, impl, NULL) != NULL)
++          if (!g_atomic_pointer_compare_and_exchange (&key->p, NULL, impl))
+             g_thread_abort (0, "g_private_get_impl(2)");
+         }
+       LeaveCriticalSection (&g_private_lock);
+@@ -635,7 +636,7 @@ g_thread_win32_thread_detach (void)
+        */
+       dtors_called = FALSE;
+ 
+-      for (dtor = g_private_destructors; dtor; dtor = dtor->next)
++      for (dtor = g_atomic_pointer_get (&g_private_destructors); dtor; dtor = dtor->next)
+         {
+           gpointer value;
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch
new file mode 100644
index 0000000..7090a12
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch
@@ -0,0 +1,47 @@
+From 041dd8b70bd14b041d6a495492eb7a5fc7568bb7 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:47:54 +0000
+Subject: [PATCH 26/29] gtype: Fix some typos in comments
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+---
+ gobject/gtype.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index be5989a3e..ae1af8a05 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -2290,7 +2290,7 @@ type_class_init_Wm (TypeNode   *node,
+    * inherited interfaces are already init_state == INITIALIZED, because
+    * they either got setup in the above base_init loop, or during
+    * class_init from within type_add_interface_Wm() for this or
+-   * an anchestor type.
++   * an ancestor type.
+    */
+   i = 0;
+   while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
+@@ -3462,7 +3462,7 @@ g_type_depth (GType type)
+  * be used to determine the types and order in which the leaf type is
+  * descended from the root type.
+  *
+- * Returns: immediate child of @root_type and anchestor of @leaf_type
++ * Returns: immediate child of @root_type and ancestor of @leaf_type
+  */
+ GType
+ g_type_next_base (GType type,
+@@ -3549,8 +3549,8 @@ type_node_conforms_to_U (TypeNode *node,
+ 
+ /**
+  * g_type_is_a:
+- * @type: type to check anchestry for
+- * @is_a_type: possible anchestor of @type or interface that @type
++ * @type: type to check ancestry for
++ * @is_a_type: possible ancestor of @type or interface that @type
+  *     could conform to
+  *
+  * If @is_a_type is a derivable type, check whether @type is a
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch
new file mode 100644
index 0000000..9c4e45f
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch
@@ -0,0 +1,76 @@
+From 47da8ec5d9a284e07f77c7d59fc8eacf3ebf188a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:57:22 +0000
+Subject: [PATCH 27/29] gtype: Add some missing atomic accesses to init_state
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Half of the references to `init_state` in `gtype.c` already correctly
+accessed it atomically, but a couple didn’t. Drop the `volatile`
+qualifier from its declaration, as that’s not necessary for atomic
+access.
+
+Note that this is the `init_state` in `TypeData`, *not* the `init_state`
+in `IFaceEntry`.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gtype.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index ae1af8a05..909faf138 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -322,7 +322,7 @@ struct _ClassData
+   CommonData         common;
+   guint16            class_size;
+   guint16            class_private_size;
+-  int volatile       init_state; /* atomic - g_type_class_ref reads it unlocked */
++  int                init_state;  /* (atomic) - g_type_class_ref reads it unlocked */
+   GBaseInitFunc      class_init_base;
+   GBaseFinalizeFunc  class_finalize_base;
+   GClassInitFunc     class_init;
+@@ -336,7 +336,7 @@ struct _InstanceData
+   CommonData         common;
+   guint16            class_size;
+   guint16            class_private_size;
+-  int volatile       init_state; /* atomic - g_type_class_ref reads it unlocked */
++  int                init_state;  /* (atomic) - g_type_class_ref reads it unlocked */
+   GBaseInitFunc      class_init_base;
+   GBaseFinalizeFunc  class_finalize_base;
+   GClassInitFunc     class_init;
+@@ -1415,7 +1415,7 @@ type_node_add_iface_entry_W (TypeNode   *node,
+ 
+   if (parent_entry)
+     {
+-      if (node->data && node->data->class.init_state >= BASE_IFACE_INIT)
++      if (node->data && g_atomic_int_get (&node->data->class.init_state) >= BASE_IFACE_INIT)
+         {
+           entries->entry[i].init_state = INITIALIZED;
+           entries->entry[i].vtable = parent_entry->vtable;
+@@ -1481,7 +1481,7 @@ type_add_interface_Wm (TypeNode             *node,
+    */
+   if (node->data)
+     {
+-      InitState class_state = node->data->class.init_state;
++      InitState class_state = g_atomic_int_get (&node->data->class.init_state);
+       
+       if (class_state >= BASE_IFACE_INIT)
+         type_iface_vtable_base_init_Wm (iface, node);
+@@ -2175,7 +2175,7 @@ type_class_init_Wm (TypeNode   *node,
+   g_assert (node->is_classed && node->data &&
+ 	    node->data->class.class_size &&
+ 	    !node->data->class.class &&
+-	    node->data->class.init_state == UNINITIALIZED);
++	    g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED);
+   if (node->data->class.class_private_size)
+     class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size);
+   else
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch
new file mode 100644
index 0000000..e03fac1
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch
@@ -0,0 +1,29 @@
+From 7d417f8406b8fa32a25659120738d22be6a1b482 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 17:17:21 +0000
+Subject: [PATCH 28/29] gresource: Fix a pointer mismatch with an atomic load
+
+This squashes a warning when compiling with Clang.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+---
+ gio/gresource.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/gresource.c b/gio/gresource.c
+index 79a49d33d..b495d12ac 100644
+--- a/gio/gresource.c
++++ b/gio/gresource.c
+@@ -1398,7 +1398,7 @@ register_lazy_static_resources (void)
+ void
+ g_static_resource_init (GStaticResource *static_resource)
+ {
+-  gpointer next;
++  GStaticResource *next;
+ 
+   do
+     {
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch
new file mode 100644
index 0000000..3311ad6
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch
@@ -0,0 +1,258 @@
+From 83e48d8ac1fee98059e2305d8909dca26190bddc Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Tue, 17 Nov 2020 10:15:15 +0000
+Subject: [PATCH 29/29] docs: Document not to use `volatile` qualifiers
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Fixes: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusconnection.c | 12 ++++++++---
+ gio/gdbuserror.c      |  3 +++
+ glib/gatomic.c        | 48 +++++++++++++++++++++++++++++++++++++++++++
+ glib/gthread.c        |  6 ++++++
+ 4 files changed, 66 insertions(+), 3 deletions(-)
+
+diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
+index 91c365e80..65939a4d2 100644
+--- a/gio/gdbusconnection.c
++++ b/gio/gdbusconnection.c
+@@ -1708,7 +1708,9 @@ g_dbus_connection_send_message_unlocked (GDBusConnection   *connection,
+  * will be assigned by @connection and set on @message via
+  * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+  * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+  *
+  * If @connection is closed then the operation will fail with
+  * %G_IO_ERROR_CLOSED. If @message is not well-formed,
+@@ -1979,7 +1981,9 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection     *connect
+  * will be assigned by @connection and set on @message via
+  * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+  * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+  *
+  * If @connection is closed then the operation will fail with
+  * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+@@ -2105,7 +2109,9 @@ send_message_with_reply_sync_cb (GDBusConnection *connection,
+  * will be assigned by @connection and set on @message via
+  * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+  * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+  *
+  * If @connection is closed then the operation will fail with
+  * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c
+index b03a33f27..4ad97bb6e 100644
+--- a/gio/gdbuserror.c
++++ b/gio/gdbuserror.c
+@@ -177,6 +177,9 @@ g_dbus_error_quark (void)
+  *
+  * Helper function for associating a #GError error domain with D-Bus error names.
+  *
++ * While @quark_volatile has a `volatile` qualifier, this is a historical
++ * artifact and the argument passed to it should not be `volatile`.
++ *
+  * Since: 2.26
+  */
+ void
+diff --git a/glib/gatomic.c b/glib/gatomic.c
+index 67f5ba6b4..0bc67aa35 100644
+--- a/glib/gatomic.c
++++ b/glib/gatomic.c
+@@ -105,6 +105,9 @@
+  * This call acts as a full compiler and hardware
+  * memory barrier (before the get).
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of the integer
+  *
+  * Since: 2.4
+@@ -125,6 +128,9 @@ gint
+  * This call acts as a full compiler and hardware
+  * memory barrier (after the set).
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Since: 2.4
+  */
+ void
+@@ -144,6 +150,9 @@ void
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Since: 2.4
+  **/
+ void
+@@ -163,6 +172,9 @@ void
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: %TRUE if the resultant value is zero
+  *
+  * Since: 2.4
+@@ -189,6 +201,9 @@ gboolean
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: %TRUE if the exchange took place
+  *
+  * Since: 2.4
+@@ -216,6 +231,9 @@ gboolean
+  * Before version 2.30, this function did not return a value
+  * (but g_atomic_int_exchange_and_add() did, and had the same meaning).
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the add, signed
+  *
+  * Since: 2.4
+@@ -240,6 +258,9 @@ gint
+  * Think of this operation as an atomic version of
+  * `{ tmp = *atomic; *atomic &= val; return tmp; }`.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+@@ -264,6 +285,9 @@ guint
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+@@ -288,6 +312,9 @@ guint
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+@@ -309,6 +336,9 @@ guint
+  * This call acts as a full compiler and hardware
+  * memory barrier (before the get).
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of the pointer
+  *
+  * Since: 2.4
+@@ -329,6 +359,9 @@ gpointer
+  * This call acts as a full compiler and hardware
+  * memory barrier (after the set).
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Since: 2.4
+  **/
+ void
+@@ -354,6 +387,9 @@ void
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: %TRUE if the exchange took place
+  *
+  * Since: 2.4
+@@ -379,6 +415,9 @@ gboolean
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the add, signed
+  *
+  * Since: 2.30
+@@ -403,6 +442,9 @@ gssize
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+@@ -427,6 +469,9 @@ gsize
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+@@ -451,6 +496,9 @@ gsize
+  *
+  * This call acts as a full compiler and hardware memory barrier.
+  *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: the value of @atomic before the operation, unsigned
+  *
+  * Since: 2.30
+diff --git a/glib/gthread.c b/glib/gthread.c
+index 612a9739f..29216d7fd 100644
+--- a/glib/gthread.c
++++ b/glib/gthread.c
+@@ -686,6 +686,9 @@ g_once_impl (GOnce       *once,
+  *   // use initialization_value here
+  * ]|
+  *
++ * While @location has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Returns: %TRUE if the initialization section should be entered,
+  *     %FALSE and blocks otherwise
+  *
+@@ -725,6 +728,9 @@ gboolean
+  * releases concurrent threads blocking in g_once_init_enter() on this
+  * initialization variable.
+  *
++ * While @location has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+  * Since: 2.14
+  */
+ void
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
index 882a89d..3909b76 100644
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
@@ -19,7 +19,37 @@
            file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \
            file://0001-tests-codegen.py-removing-unecessary-print-statement.patch \
            "
-
+SRC_URI += "\
+           file://0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch \
+           file://0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch \
+           file://0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch \
+           file://0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+           file://0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch \
+           file://0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+           file://0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch \
+           file://0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch \
+           file://0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch \
+           file://0010-kqueue-Fix-unlocked-access-to-shared-variable.patch \
+           file://0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+           file://0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch \
+           file://0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch \
+           file://0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch \
+           file://0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch \
+           file://0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch \
+           file://0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch \
+           file://0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch \
+           file://0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch \
+           file://0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch \
+           file://0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+           file://0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch \
+           file://0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch \
+           file://0024-tests-Add-comment-to-volatile-atomic-tests.patch \
+           file://0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch \
+           file://0026-gtype-Fix-some-typos-in-comments.patch \
+           file://0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch \
+           file://0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch \
+           file://0029-docs-Document-not-to-use-volatile-qualifiers.patch \
+"
 SRC_URI_append_class-native = " file://relocate-modules.patch"
 
 SRC_URI[sha256sum] = "09f158769f6f26b31074e15b1ac80ec39b13b53102dfae66cfe826fb2cc65502"
@@ -31,7 +61,7 @@
     if bb.data.inherits_class('native', d):
         return ""
 
-    thisdir = d.getVar("THISDIR")
+    thisdir = os.path.normpath(d.getVar("THISDIR"))
     import collections
     sitedata = siteinfo_data(d)
     # filename -> found
@@ -41,7 +71,8 @@
             filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
             sanitized_path = filename.replace(thisdir, "${THISDIR}")
             if sanitized_path == filename:
-                bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
+                if os.path.exists(filename):
+                    bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
                 continue
             files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename)
 
diff --git a/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch
new file mode 100644
index 0000000..39fde5b
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch
@@ -0,0 +1,49 @@
+From c4ad832276f4dadfa40904109b26a521468f66bc Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Thu, 4 Feb 2021 15:00:20 +0100
+Subject: [PATCH] nptl: Remove private futex optimization [BZ #27304]
+
+It is effectively used, unexcept for pthread_cond_destroy, where we do
+not want it; see bug 27304.  The internal locks do not support a
+process-shared mode.
+
+This fixes commit dc6cfdc934db9997c33728082d63552b9eee4563 ("nptl:
+Move pthread_cond_destroy implementation into libc").
+
+Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27304]
+Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
+---
+ sysdeps/nptl/lowlevellock-futex.h | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h
+index ecb729da6b..ca96397a4a 100644
+--- a/sysdeps/nptl/lowlevellock-futex.h
++++ b/sysdeps/nptl/lowlevellock-futex.h
+@@ -50,20 +50,8 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ #ifndef __ASSEMBLER__
+-
+-# if IS_IN (libc) || IS_IN (rtld)
+-/* In libc.so or ld.so all futexes are private.  */
+-#  define __lll_private_flag(fl, private)			\
+-  ({								\
+-    /* Prevent warnings in callers of this macro.  */		\
+-    int __lll_private_flag_priv __attribute__ ((unused));	\
+-    __lll_private_flag_priv = (private);			\
+-    ((fl) | FUTEX_PRIVATE_FLAG);				\
+-  })
+-# else
+-#  define __lll_private_flag(fl, private) \
++# define __lll_private_flag(fl, private) \
+   (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
+-# endif
+ 
+ # define lll_futex_syscall(nargs, futexp, op, ...)                      \
+   ({                                                                    \
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch
new file mode 100644
index 0000000..3a004e2
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch
@@ -0,0 +1,185 @@
+From 750b00a1ddae220403fd892a6fd4e0791ffd154a Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 18 Sep 2020 07:55:14 -0700
+Subject: [PATCH] x86: Handle _SC_LEVEL1_ICACHE_LINESIZE [BZ #27444]
+
+    x86: Move x86 processor cache info to cpu_features
+
+missed _SC_LEVEL1_ICACHE_LINESIZE.
+
+1. Add level1_icache_linesize to struct cpu_features.
+2. Initialize level1_icache_linesize by calling handle_intel,
+handle_zhaoxin and handle_amd with _SC_LEVEL1_ICACHE_LINESIZE.
+3. Return level1_icache_linesize for _SC_LEVEL1_ICACHE_LINESIZE.
+
+Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27444]
+Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
+---
+ sysdeps/x86/Makefile                          |  8 +++
+ sysdeps/x86/cacheinfo.c                       |  3 +
+ sysdeps/x86/dl-cacheinfo.h                    |  6 ++
+ sysdeps/x86/include/cpu-features.h            |  2 +
+ .../x86/tst-sysconf-cache-linesize-static.c   |  1 +
+ sysdeps/x86/tst-sysconf-cache-linesize.c      | 57 +++++++++++++++++++
+ 6 files changed, 77 insertions(+)
+ create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize-static.c
+ create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize.c
+
+diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
+index dd82674342..d231263051 100644
+--- a/sysdeps/x86/Makefile
++++ b/sysdeps/x86/Makefile
+@@ -208,3 +208,11 @@ $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \
+ generated += check-cet.out
+ endif
+ endif
++
++ifeq ($(subdir),posix)
++tests += \
++  tst-sysconf-cache-linesize \
++  tst-sysconf-cache-linesize-static
++tests-static += \
++  tst-sysconf-cache-linesize-static
++endif
+diff --git a/sysdeps/x86/cacheinfo.c b/sysdeps/x86/cacheinfo.c
+index 7b8df45e3b..5ea4723ca6 100644
+--- a/sysdeps/x86/cacheinfo.c
++++ b/sysdeps/x86/cacheinfo.c
+@@ -32,6 +32,9 @@ __cache_sysconf (int name)
+     case _SC_LEVEL1_ICACHE_SIZE:
+       return cpu_features->level1_icache_size;
+ 
++    case _SC_LEVEL1_ICACHE_LINESIZE:
++      return cpu_features->level1_icache_linesize;
++
+     case _SC_LEVEL1_DCACHE_SIZE:
+       return cpu_features->level1_dcache_size;
+ 
+diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
+index a31fa0783a..7cd00b92f1 100644
+--- a/sysdeps/x86/dl-cacheinfo.h
++++ b/sysdeps/x86/dl-cacheinfo.h
+@@ -707,6 +707,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+   long int core;
+   unsigned int threads = 0;
+   unsigned long int level1_icache_size = -1;
++  unsigned long int level1_icache_linesize = -1;
+   unsigned long int level1_dcache_size = -1;
+   unsigned long int level1_dcache_assoc = -1;
+   unsigned long int level1_dcache_linesize = -1;
+@@ -726,6 +727,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ 
+       level1_icache_size
+ 	= handle_intel (_SC_LEVEL1_ICACHE_SIZE, cpu_features);
++      level1_icache_linesize
++	= handle_intel (_SC_LEVEL1_ICACHE_LINESIZE, cpu_features);
+       level1_dcache_size = data;
+       level1_dcache_assoc
+ 	= handle_intel (_SC_LEVEL1_DCACHE_ASSOC, cpu_features);
+@@ -753,6 +756,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       shared = handle_zhaoxin (_SC_LEVEL3_CACHE_SIZE);
+ 
+       level1_icache_size = handle_zhaoxin (_SC_LEVEL1_ICACHE_SIZE);
++      level1_icache_linesize = handle_zhaoxin (_SC_LEVEL1_ICACHE_LINESIZE);
+       level1_dcache_size = data;
+       level1_dcache_assoc = handle_zhaoxin (_SC_LEVEL1_DCACHE_ASSOC);
+       level1_dcache_linesize = handle_zhaoxin (_SC_LEVEL1_DCACHE_LINESIZE);
+@@ -772,6 +776,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       shared = handle_amd (_SC_LEVEL3_CACHE_SIZE);
+ 
+       level1_icache_size = handle_amd (_SC_LEVEL1_ICACHE_SIZE);
++      level1_icache_linesize = handle_amd (_SC_LEVEL1_ICACHE_LINESIZE);
+       level1_dcache_size = data;
+       level1_dcache_assoc = handle_amd (_SC_LEVEL1_DCACHE_ASSOC);
+       level1_dcache_linesize = handle_amd (_SC_LEVEL1_DCACHE_LINESIZE);
+@@ -833,6 +838,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+     }
+ 
+   cpu_features->level1_icache_size = level1_icache_size;
++  cpu_features->level1_icache_linesize = level1_icache_linesize;
+   cpu_features->level1_dcache_size = level1_dcache_size;
+   cpu_features->level1_dcache_assoc = level1_dcache_assoc;
+   cpu_features->level1_dcache_linesize = level1_dcache_linesize;
+diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h
+index 624736b40e..39a3f4f311 100644
+--- a/sysdeps/x86/include/cpu-features.h
++++ b/sysdeps/x86/include/cpu-features.h
+@@ -874,6 +874,8 @@ struct cpu_features
+   unsigned long int rep_stosb_threshold;
+   /* _SC_LEVEL1_ICACHE_SIZE.  */
+   unsigned long int level1_icache_size;
++  /* _SC_LEVEL1_ICACHE_LINESIZE.  */
++  unsigned long int level1_icache_linesize;
+   /* _SC_LEVEL1_DCACHE_SIZE.  */
+   unsigned long int level1_dcache_size;
+   /* _SC_LEVEL1_DCACHE_ASSOC.  */
+diff --git a/sysdeps/x86/tst-sysconf-cache-linesize-static.c b/sysdeps/x86/tst-sysconf-cache-linesize-static.c
+new file mode 100644
+index 0000000000..152ae68821
+--- /dev/null
++++ b/sysdeps/x86/tst-sysconf-cache-linesize-static.c
+@@ -0,0 +1 @@
++#include "tst-sysconf-cache-linesize.c"
+diff --git a/sysdeps/x86/tst-sysconf-cache-linesize.c b/sysdeps/x86/tst-sysconf-cache-linesize.c
+new file mode 100644
+index 0000000000..642dbde5d2
+--- /dev/null
++++ b/sysdeps/x86/tst-sysconf-cache-linesize.c
+@@ -0,0 +1,57 @@
++/* Test system cache line sizes.
++   Copyright (C) 2021 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <https://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <array_length.h>
++
++static struct
++{
++  const char *name;
++  int _SC_val;
++} sc_options[] =
++  {
++#define N(name) { "_SC_"#name, _SC_##name }
++    N (LEVEL1_ICACHE_LINESIZE),
++    N (LEVEL1_DCACHE_LINESIZE),
++    N (LEVEL2_CACHE_LINESIZE)
++  };
++
++static int
++do_test (void)
++{
++  int result = EXIT_SUCCESS;
++
++  for (int i = 0; i < array_length (sc_options); ++i)
++    {
++      long int scret = sysconf (sc_options[i]._SC_val);
++      if (scret < 0)
++	{
++	  printf ("sysconf (%s) returned < 0 (%ld)\n",
++		  sc_options[i].name, scret);
++	  result = EXIT_FAILURE;
++	}
++      else
++	printf ("sysconf (%s): %ld\n", sc_options[i].name, scret);
++    }
++
++  return result;
++}
++
++#include <support/test-driver.c>
diff --git a/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch
new file mode 100644
index 0000000..26c5c0d
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch
@@ -0,0 +1,51 @@
+From dca565886b5e8bd7966e15f0ca42ee5cff686673 Mon Sep 17 00:00:00 2001
+From: DJ Delorie <dj@redhat.com>
+Date: Thu, 25 Feb 2021 16:08:21 -0500
+Subject: [PATCH] nscd: Fix double free in netgroupcache [BZ #27462]
+
+In commit 745664bd798ec8fd50438605948eea594179fba1 a use-after-free
+was fixed, but this led to an occasional double-free.  This patch
+tracks the "live" allocation better.
+
+Tested manually by a third party.
+
+Related: RHBZ 1927877
+
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=dca565886b5e8bd7966e15f0ca42ee5cff686673]
+
+CVE: CVE-2021-27645
+
+Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
+---
+ nscd/netgroupcache.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index dba6ceec1b..ad2daddafd 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -248,7 +248,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 					     : NULL);
+ 				    ndomain = (ndomain ? newbuf + ndomaindiff
+ 					       : NULL);
+-				    buffer = newbuf;
++				    *tofreep = buffer = newbuf;
+ 				  }
+ 
+ 				nhost = memcpy (buffer + bufused,
+@@ -319,7 +319,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 		    else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE)
+ 		      {
+ 			buflen *= 2;
+-			buffer = xrealloc (buffer, buflen);
++			*tofreep = buffer = xrealloc (buffer, buflen);
+ 		      }
+ 		    else if (status == NSS_STATUS_RETURN
+ 			     || status == NSS_STATUS_NOTFOUND
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-core/glibc/glibc_2.33.bb b/poky/meta/recipes-core/glibc/glibc_2.33.bb
index c47826a..5e0baa5 100644
--- a/poky/meta/recipes-core/glibc/glibc_2.33.bb
+++ b/poky/meta/recipes-core/glibc/glibc_2.33.bb
@@ -45,6 +45,9 @@
            file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \
            file://0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch \
            file://0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch \
+           file://0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch \
+           file://CVE-2021-27645.patch \
+           file://0001-nptl-Remove-private-futex-optimization-BZ-27304.patch \
            "
 S = "${WORKDIR}/git"
 B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 705ff63..925235d 100644
--- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -22,9 +22,9 @@
 DEPENDS = "zip-native python3-pip-native"
 IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
 
-inherit core-image module-base setuptools3
+inherit core-image setuptools3
 
-SRCREV ?= "e56305dd709ae2af2da7a7599984b3ad18c4970f"
+SRCREV ?= "c6483187f96c6d21b7129ad78de3ff976fbe5970"
 SRC_URI = "git://git.yoctoproject.org/poky \
            file://Yocto_Build_Appliance.vmx \
            file://Yocto_Build_Appliance.vmxf \
@@ -61,12 +61,6 @@
 	# Place the README_VirtualBox_Toaster file in builders home folder.
 	cp ${WORKDIR}/README_VirtualBox_Toaster.txt ${IMAGE_ROOTFS}/home/builder/
 
-	# Create a symlink, needed for out-of-tree kernel modules build
-	if [ ! -e ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build ]; then
-		rm -f  ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
-		lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
-	fi
-
 	echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf
 	echo "export LC_ALL=en_US.utf8" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
 
diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
index ee24e82..10b9583 100644
--- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
+++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -24,24 +24,13 @@
 			if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
 				root_uuid=`echo $bootparam_root | cut -c6-`
 				bootparam_root="/dev/disk/by-uuid/$root_uuid"
-			fi
-
-			if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
+			elif [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
 				root_partuuid=`echo $bootparam_root | cut -c10-`
 				bootparam_root="/dev/disk/by-partuuid/$root_partuuid"
-			fi
-
-			if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
+			elif [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
 				root_partlabel=`echo $bootparam_root | cut -c11-`
 				bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
-			fi
-
-			if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
-				root_partlabel=`echo $bootparam_root | cut -c11-`
-				bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
-			fi
-
-			if [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
+			elif [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
 				root_label=`echo $bootparam_root | cut -c7-`
 				bootparam_root="/dev/disk/by-label/$root_label"
 			fi
diff --git a/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch
new file mode 100644
index 0000000..4e6b427
--- /dev/null
+++ b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch
@@ -0,0 +1,32 @@
+From b28bb856ccebe8fded51d11362bf5920699eed59 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 18 Mar 2021 10:52:13 +0000
+Subject: [PATCH] configure.ac: do not use compute-symver-floor
+
+This script (newly introduced in 4.4.18) sporadically fails, without
+failing configure(), which has been reported at
+https://github.com/besser82/libxcrypt/issues/123
+
+Upstream-Status: Inappropriate
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 45b91b4..f3ba945 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -426,11 +426,7 @@ if test x$enable_shared != xyes; then enable_obsolete_api=0; fi
+ # need to be binary backward compatible with.
+ if test $enable_obsolete_api = 1; then
+   AC_MSG_CHECKING([minimum symbol version to use for compatibility symbols])
+-  SYMVER_FLOOR=$(
+-    $PERL ${srcdir}/build-aux/compute-symver-floor \
+-      ${srcdir}/lib/libcrypt.minver $host_os $host_cpu \
+-    2>&AS_MESSAGE_LOG_FD
+-  )
++  SYMVER_FLOOR=GLIBC_2.0
+   AC_MSG_RESULT([$SYMVER_FLOOR])
+   case "$SYMVER_FLOOR" in
+     ERROR)
diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
index e9f968b..b5ca863 100644
--- a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
+++ b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
@@ -9,7 +9,9 @@
 
 inherit autotools pkgconfig
 
-SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
+SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH} \
+           file://0001-configure.ac-do-not-use-compute-symver-floor.patch \
+           "
 SRCREV = "94d84f92ca123d851586016c4678eb1f21c19029"
 SRCBRANCH ?= "develop"
 
diff --git a/poky/meta/recipes-core/meta/cve-update-db-native.bb b/poky/meta/recipes-core/meta/cve-update-db-native.bb
index cf62e1e..25ec6ba 100644
--- a/poky/meta/recipes-core/meta/cve-update-db-native.bb
+++ b/poky/meta/recipes-core/meta/cve-update-db-native.bb
@@ -12,6 +12,8 @@
 deltask do_install
 deltask do_populate_sysroot
 
+NVDCVE_URL ?= "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
+
 python () {
     if not bb.data.inherits_class("cve-check", d):
         raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
@@ -28,7 +30,6 @@
 
     bb.utils.export_proxies(d)
 
-    BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
     YEAR_START = 2002
 
     db_file = d.getVar("CVE_CHECK_DB_FILE")
@@ -64,7 +65,7 @@
         for i, year in enumerate(range(YEAR_START, date.today().year + 1)):
             bb.debug(2, "Updating %d" % year)
             ph.update((float(i + 1) / total_years) * 100)
-            year_url = BASE_URL + str(year)
+            year_url = (d.getVar('NVDCVE_URL')) + str(year)
             meta_url = year_url + ".meta"
             json_url = year_url + ".json.gz"
 
@@ -143,9 +144,14 @@
             product = cpe23[4]
             version = cpe23[5]
 
+            if cpe23[6] == '*' or cpe23[6] == '-':
+                version_suffix = ""
+            else:
+                version_suffix = "_" + cpe23[6]
+
             if version != '*' and version != '-':
                 # Version is defined, this is a '=' match
-                yield [cveId, vendor, product, version, '=', '', '']
+                yield [cveId, vendor, product, version + version_suffix, '=', '', '']
             elif version == '-':
                 # no version information is available
                 yield [cveId, vendor, product, version, '', '', '']
diff --git a/poky/meta/recipes-core/meta/uninative-tarball.bb b/poky/meta/recipes-core/meta/uninative-tarball.bb
index c4a6c96..bbdaeba 100644
--- a/poky/meta/recipes-core/meta/uninative-tarball.bb
+++ b/poky/meta/recipes-core/meta/uninative-tarball.bb
@@ -8,6 +8,7 @@
 # utf-16, cp1252 - binutils-windres
 TOOLCHAIN_HOST_TASK = "\
     nativesdk-glibc \
+    nativesdk-glibc-dbg \
     nativesdk-glibc-gconv-ibm850 \
     nativesdk-glibc-gconv-iso8859-1 \
     nativesdk-glibc-gconv-utf-16 \
diff --git a/poky/meta/recipes-core/musl/libucontext_git.bb b/poky/meta/recipes-core/musl/libucontext_git.bb
index 734ad9c..11affeb 100644
--- a/poky/meta/recipes-core/musl/libucontext_git.bb
+++ b/poky/meta/recipes-core/musl/libucontext_git.bb
@@ -40,8 +40,8 @@
     elif re.match('aarch64_be_ilp32$', a):          return 'aarch64'
     elif re.match('mips(isa|)(32|)(r6|)(el|)$', a): return 'mips'
     elif re.match('mips(isa|)64(r6|)(el|)$', a):    return 'mips64'
+    elif re.match('p(pc64|owerpc64)(le)', a):       return 'ppc64'
     elif re.match('p(pc|owerpc)', a):               return 'ppc'
-    elif re.match('p(pc64|owerpc64)', a):           return 'ppc64'
     elif re.match('riscv64$', a):                   return 'riscv64'
     elif re.match('riscv32$', a):                   return 'riscv32'
     else:
diff --git a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch b/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
deleted file mode 100644
index df1d159..0000000
--- a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e19481e5a64f8915ac118899b10c40d12c0f9daa Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Mon, 11 Sep 2017 02:21:55 -0400
-Subject: [PATCH 3/4] ovmf: enable long path file
-
-Upstream-Status: Pending
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
-
----
- BaseTools/Source/C/Common/CommonLib.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/BaseTools/Source/C/Common/CommonLib.h b/BaseTools/Source/C/Common/CommonLib.h
-index e1cce985f7..d67d03c70c 100644
---- a/BaseTools/Source/C/Common/CommonLib.h
-+++ b/BaseTools/Source/C/Common/CommonLib.h
-@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
- #include <assert.h>
- #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination
- 
--#define MAX_LONG_FILE_PATH 500
-+#define MAX_LONG_FILE_PATH 1023
- 
- #define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
- #define MAX_UINT32 ((UINT32)0xFFFFFFFF)
--- 
-2.28.0
-
diff --git a/poky/meta/recipes-core/ovmf/ovmf/zero.patch b/poky/meta/recipes-core/ovmf/ovmf/zero.patch
new file mode 100644
index 0000000..af7a9d3
--- /dev/null
+++ b/poky/meta/recipes-core/ovmf/ovmf/zero.patch
@@ -0,0 +1,84 @@
+Pass --zero to GenFw in release builds so that the sections that link back to
+the intermediate binaries (containing build paths) are removed.
+
+Upstream-Status: Pending (discussion at https://bugzilla.tianocore.org/show_bug.cgi?id=3256)
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 6303b065802c9427c718fda129360189b79316e7 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 16 Mar 2021 16:49:49 +0000
+Subject: [PATCH] Strip build paths
+
+---
+ OvmfPkg/AmdSev/AmdSevX64.dsc | 1 +
+ OvmfPkg/Bhyve/BhyveX64.dsc   | 1 +
+ OvmfPkg/OvmfPkgIa32.dsc      | 2 ++
+ OvmfPkg/OvmfPkgIa32X64.dsc   | 1 +
+ OvmfPkg/OvmfPkgX64.dsc       | 1 +
+ OvmfPkg/OvmfXen.dsc          | 1 +
+ 6 files changed, 7 insertions(+)
+
+diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc
+index 4a1cdf5aca..132f55cf69 100644
+--- a/OvmfPkg/Bhyve/BhyveX64.dsc
++++ b/OvmfPkg/Bhyve/BhyveX64.dsc
+@@ -76,6 +76,7 @@
+   GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
+   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++  RELEASE_*_*_GENFW_FLAGS = --zero
+ 
+   #
+   # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
+index 1eaf3e99c6..ce20f09df8 100644
+--- a/OvmfPkg/OvmfPkgIa32.dsc
++++ b/OvmfPkg/OvmfPkgIa32.dsc
+@@ -90,6 +90,8 @@
+ 
+ !include NetworkPkg/NetworkBuildOptions.dsc.inc
+ 
++  RELEASE_*_*_GENFW_FLAGS = --zero
++
+ [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+   GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+   XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
+diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
+index 4a5a430147..97cc438250 100644
+--- a/OvmfPkg/OvmfPkgIa32X64.dsc
++++ b/OvmfPkg/OvmfPkgIa32X64.dsc
+@@ -84,6 +84,7 @@
+   GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
+   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++  RELEASE_*_*_GENFW_FLAGS = --zero
+ 
+   #
+   # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
+index d4d601b444..f544fb04bf 100644
+--- a/OvmfPkg/OvmfPkgX64.dsc
++++ b/OvmfPkg/OvmfPkgX64.dsc
+@@ -84,6 +84,7 @@
+   GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
+   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++  RELEASE_*_*_GENFW_FLAGS = --zero
+ 
+   #
+   # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc
+index 507029404f..fcaa35acf1 100644
+--- a/OvmfPkg/OvmfXen.dsc
++++ b/OvmfPkg/OvmfXen.dsc
+@@ -74,6 +74,7 @@
+   GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
+   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++  RELEASE_*_*_GENFW_FLAGS = --zero
+ 
+   #
+   # Disable deprecated APIs.
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb
index d785ff6..896b3b6 100644
--- a/poky/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb
@@ -15,12 +15,12 @@
 SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
            file://0001-ovmf-update-path-to-native-BaseTools.patch \
            file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \
-           file://0003-ovmf-enable-long-path-file.patch \
            file://0004-ovmf-Update-to-latest.patch \
+           file://zero.patch \
            "
 
-PV = "edk2-stable202011"
-SRCREV = "872f953262d68a11da7bc2fb3ded16df234b8700"
+PV = "edk2-stable202102"
+SRCREV = "ef91b07388e1c0a50c604e5350eeda98428ccea6"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
 
 inherit deploy
diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
index c882e15..6d4d7e6 100644
--- a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -8,7 +8,6 @@
 
 inherit packagegroup
 
-PROVIDES = "${PACKAGES}"
 PACKAGES = ' \
             packagegroup-base \
             packagegroup-base-extended \
diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
index b345e31..20fe6fc 100644
--- a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
+++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
@@ -7,7 +7,6 @@
 
 inherit packagegroup
 
-PROVIDES = "${PACKAGES}"
 PACKAGES = "${PN}-server ${PN}-client"
 
 SUMMARY_${PN}-client = "NFS client"
diff --git a/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb b/poky/meta/recipes-core/systemd/systemd-boot_247.4.bb
similarity index 100%
rename from poky/meta/recipes-core/systemd/systemd-boot_247.3.bb
rename to poky/meta/recipes-core/systemd/systemd-boot_247.4.bb
diff --git a/poky/meta/recipes-core/systemd/systemd-conf/wired.network b/poky/meta/recipes-core/systemd/systemd-conf/wired.network
index 09367ed..e7b6997 100644
--- a/poky/meta/recipes-core/systemd/systemd-conf/wired.network
+++ b/poky/meta/recipes-core/systemd/systemd-conf/wired.network
@@ -1,6 +1,7 @@
 [Match]
 Type=ether
 KernelCommandLine=!nfsroot
+KernelCommandLine=!ip
 
 [Network]
 DHCP=yes
diff --git a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb b/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
index 944b56f..ea35e83 100644
--- a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
+++ b/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
@@ -29,9 +29,6 @@
 # Based on change from YP bug 8141, OE commit 5196d7bacaef1076c361adaa2867be31759c1b52
 do_install_append_qemuall() {
 	install -D -m0644 ${WORKDIR}/system.conf-qemuall ${D}${systemd_unitdir}/system.conf.d/01-${PN}.conf
-
-	# Do not install wired.network for qemu bsps
-	rm -rf ${D}${systemd_unitdir}/network
 }
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/poky/meta/recipes-core/systemd/systemd.inc b/poky/meta/recipes-core/systemd/systemd.inc
index ccff8c8..098bca9 100644
--- a/poky/meta/recipes-core/systemd/systemd.inc
+++ b/poky/meta/recipes-core/systemd/systemd.inc
@@ -14,7 +14,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
                     file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
 
-SRCREV = "551dd873b0bdfb9e7e47431b2933c8b910228f0c"
+SRCREV = "069525e84a67375e27429cb490e8d28af78e673a"
 SRCBRANCH = "v247-stable"
 SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
 
diff --git a/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch b/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
index e49e066..7528246 100644
--- a/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
@@ -12,10 +12,12 @@
  src/core/systemd.pc.in | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
+diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
+index b5cc8f9..21dbf30 100644
 --- a/src/core/systemd.pc.in
 +++ b/src/core/systemd.pc.in
 @@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir}
- tmpfiles_dir=/usr/lib/tmpfiles.d
+ tmpfiles_dir=${prefix}/lib/tmpfiles.d
  tmpfilesdir=${tmpfiles_dir}
  
 -sysusers_dir=${rootprefix}/lib/sysusers.d
@@ -34,4 +36,7 @@
 +modules_load_dir=${prefix}/lib/modules-load.d
  modulesloaddir=${modules_load_dir}
  
- catalog_dir=/usr/lib/systemd/catalog
+ catalog_dir=${prefix}/lib/systemd/catalog
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
index b689cf1..a978558 100644
--- a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
@@ -41,20 +41,22 @@
  src/network/netdev/netdev-gperf.gperf     | 1 +
  src/network/netdev/netdev.c               | 1 +
  src/network/networkd-brvlan.c             | 1 +
- src/network/networkd-dhcp-common.c        | 1 +
+ src/network/networkd-dhcp-common.c        | 4 +++-
+ src/network/networkd-dhcp-server.c        | 4 ++--
  src/network/networkd-dhcp4.c              | 2 +-
  src/network/networkd-dhcp6.c              | 2 +-
  src/network/networkd-link.c               | 2 +-
  src/network/networkd-network.c            | 1 +
+ src/network/networkd-route.c              | 5 ++++-
  src/network/test-network-tables.c         | 1 +
  src/shared/ethtool-util.c                 | 1 +
  src/shared/ethtool-util.h                 | 1 +
  src/udev/net/link-config.c                | 1 +
  src/udev/udev-builtin-net_setup_link.c    | 1 +
- 19 files changed, 18 insertions(+), 4 deletions(-)
+ 21 files changed, 26 insertions(+), 8 deletions(-)
 
 diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
-index 30ac526fc9..126077e13c 100644
+index 66f87c4b95..de1264ae46 100644
 --- a/src/libsystemd-network/sd-dhcp6-client.c
 +++ b/src/libsystemd-network/sd-dhcp6-client.c
 @@ -5,7 +5,6 @@
@@ -158,7 +160,7 @@
  #include <stdbool.h>
  
 diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
-index c338c775a7..ab35d65c53 100644
+index 9f58121350..554d006cb8 100644
 --- a/src/network/networkd-dhcp-common.c
 +++ b/src/network/networkd-dhcp-common.c
 @@ -1,7 +1,8 @@
@@ -171,7 +173,7 @@
  
  #include "dhcp-internal.h"
  #include "dhcp6-internal.h"
-@@ -10,6 +10,7 @@
+@@ -10,6 +11,7 @@
  #include "networkd-dhcp-common.h"
  #include "networkd-link.h"
  #include "networkd-manager.h"
@@ -195,7 +197,7 @@
  #include "sd-dhcp-server.h"
  
 diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
-index 02d33841b6..a30d8dd82c 100644
+index f3c1e5f609..e4ef6eca63 100644
 --- a/src/network/networkd-dhcp4.c
 +++ b/src/network/networkd-dhcp4.c
 @@ -1,9 +1,9 @@
@@ -210,7 +212,7 @@
  #include "escape.h"
  #include "alloc-util.h"
 diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
-index d4d4182ee5..635d08f7d5 100644
+index 5c077c1ec8..fa98042aa5 100644
 --- a/src/network/networkd-dhcp6.c
 +++ b/src/network/networkd-dhcp6.c
 @@ -3,9 +3,9 @@
@@ -225,7 +227,7 @@
  #include "sd-dhcp6-client.h"
  
 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index ced18de425..07b43770de 100644
+index 3bfe636691..e0c68c8ad3 100644
 --- a/src/network/networkd-link.c
 +++ b/src/network/networkd-link.c
 @@ -1,8 +1,8 @@
@@ -250,7 +252,7 @@
  #include <netinet/in.h>
  #include <linux/netdevice.h>
 diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
-index 10f30c1a7e..579885726c 100644
+index 0ed89584ef..e7e157c201 100644
 --- a/src/network/networkd-route.c
 +++ b/src/network/networkd-route.c
 @@ -1,7 +1,10 @@
@@ -311,16 +313,16 @@
  #include <netinet/ether.h>
  #include <unistd.h>
 diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
-index cb12b943fe..5a28c8b563 100644
+index 87e1fb133e..13876029d0 100644
 --- a/src/udev/udev-builtin-net_setup_link.c
 +++ b/src/udev/udev-builtin-net_setup_link.c
 @@ -1,5 +1,6 @@
  /* SPDX-License-Identifier: LGPL-2.1-or-later */
  
 +#include <netinet/if_ether.h>
- #include "device-util.h"
  #include "alloc-util.h"
- #include "link-config.h"
+ #include "device-util.h"
+ #include "errno-util.h"
 -- 
-2.27.0
+2.25.1
 
diff --git a/poky/meta/recipes-core/systemd/systemd_247.3.bb b/poky/meta/recipes-core/systemd/systemd_247.4.bb
similarity index 98%
rename from poky/meta/recipes-core/systemd/systemd_247.3.bb
rename to poky/meta/recipes-core/systemd/systemd_247.4.bb
index c0073ad..cd67e65 100644
--- a/poky/meta/recipes-core/systemd/systemd_247.3.bb
+++ b/poky/meta/recipes-core/systemd/systemd_247.4.bb
@@ -484,10 +484,15 @@
                          ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
                         "
 
+# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
 RRECOMMENDS_${PN}-container += "\
-                         ${PN}-journal-upload \
-                         ${PN}-journal-remote \
                          ${PN}-journal-gatewayd \
+                         ${PN}-journal-remote \
+                         ${PN}-journal-upload \
+                         kernel-module-dm-mod \
+                         kernel-module-loop \
+                         kernel-module-tun \
+                         tar \
                         "
 
 FILES_${PN}-extra-utils = "\
diff --git a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
index d95d1a6..0af116f 100644
--- a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
+++ b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
@@ -53,6 +53,10 @@
     fi
 }
 
+do_install_append_qemuppc64 () {
+            echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab
+}
+
 pkg_postinst_${PN} () {
 # run this on host and on target
 if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then
diff --git a/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb
new file mode 100644
index 0000000..9612c49
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb
@@ -0,0 +1,16 @@
+# To allow util-linux to optionally build-depend on cryptsetup, libuuid is
+# split out of the main recipe, as it's needed by cryptsetup
+
+require util-linux.inc
+
+inherit autotools gettext pkgconfig
+
+S = "${WORKDIR}/util-linux-${PV}"
+EXTRA_OECONF += "--disable-all-programs --enable-libuuid"
+LICENSE = "BSD-3-Clause"
+
+do_install_append() {
+	rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} ${D}${base_sbindir} ${D}${exec_prefix}/sbin
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-core/util-linux/util-linux.inc b/poky/meta/recipes-core/util-linux/util-linux.inc
new file mode 100644
index 0000000..cbf6102
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux.inc
@@ -0,0 +1,41 @@
+SUMMARY = "A suite of basic system administration utilities"
+HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
+DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
+commonly found on most Linux systems.  Some of the more important utilities include \
+disk partitioning, kernel message management, filesystem creation, and system login."
+
+SECTION = "base"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
+LICENSE_${PN}-libblkid = "LGPLv2.1+"
+LICENSE_${PN}-libfdisk = "LGPLv2.1+"
+LICENSE_${PN}-libmount = "LGPLv2.1+"
+LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
+
+LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
+                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
+                    file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
+                    file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
+                    file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
+                    file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
+                    file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+                    file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+                    file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/util-linux:"
+MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
+BPN = "util-linux"
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
+           file://configure-sbindir.patch \
+           file://runuser.pamd \
+           file://runuser-l.pamd \
+           file://ptest.patch \
+           file://run-ptest \
+           file://display_testname_for_subtest.patch \
+           file://avoid_parallel_tests.patch \
+           file://Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch \
+           "
+SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
diff --git a/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch
new file mode 100644
index 0000000..2725189
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch
@@ -0,0 +1,49 @@
+Author: Luca Boccassi <luca.boccassi@microsoft.com>
+Description: Automake: use EXTRA_LTLIBRARIES instead of noinst_LTLIBRARIES
+ noinst_LTLIBRARIES causes the libraries to be always built
+ unconditionally. EXTRA_LTLIBRARIES causes them to be built
+ only if other build target needs them.
+ In other words, avoid building libcommon.a and libtcolors.a
+ unless they are needed by another library/executable and
+ save some build time.
+Upstream-Status: backport, commit:c65953d72bbc7412f32e566d9fa6e780d84f0696
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -39,7 +39,7 @@ bashcompletiondir = @bashcompletiondir@
+ 
+ dist_noinst_HEADERS =
+ noinst_PROGRAMS =
+-noinst_LTLIBRARIES =
++EXTRA_LTLIBRARIES =
+ usrbin_exec_PROGRAMS =
+ usrsbin_exec_PROGRAMS =
+ dist_man_MANS =
+@@ -169,7 +169,7 @@ else
+ edit_cmd += -e 's|@vendordir[@]||g'
+ endif
+ 
+-CLEANFILES += $(PATHFILES)
++CLEANFILES += $(PATHFILES) $(EXTRA_LTLIBRARIES)
+ EXTRA_DIST += $(PATHFILES:=.in)
+ 
+ $(PATHFILES): Makefile
+--- a/lib/Makemodule.am
++++ b/lib/Makemodule.am
+@@ -9,7 +9,7 @@
+ # Note that you need "make install-strip" (or proper rpm / Debian build)
+ # to generate binaries with only relevant stuff.
+ #
+-noinst_LTLIBRARIES += libcommon.la
++EXTRA_LTLIBRARIES += libcommon.la
+ libcommon_la_CFLAGS = $(AM_CFLAGS)
+ libcommon_la_SOURCES = \
+ 	lib/blkdev.c \
+@@ -59,7 +59,7 @@ libcommon_la_SOURCES += lib/sysfs.c
+ endif
+ endif
+ 
+-noinst_LTLIBRARIES += libtcolors.la
++EXTRA_LTLIBRARIES += libtcolors.la
+ libtcolors_la_CFLAGS = $(AM_CFLAGS)
+ libtcolors_la_SOURCES = lib/colors.c lib/color-names.c include/colors.h include/color-names.h
+ libtcolors_la_LIBADD =
diff --git a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
index 19950a2..c79cf78 100644
--- a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
+++ b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
@@ -1,46 +1,8 @@
-SUMMARY = "A suite of basic system administration utilities"
-HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
-DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
-commonly found on most Linux systems.  Some of the more important utilities include \
-disk partitioning, kernel message management, filesystem creation, and system login."
-
-SECTION = "base"
-
-LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
-LICENSE_${PN}-libblkid = "LGPLv2.1+"
-LICENSE_${PN}-libfdisk = "LGPLv2.1+"
-LICENSE_${PN}-libmount = "LGPLv2.1+"
-LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
-LICENSE_${PN}-libuuid = "BSD-3-Clause"
-
-LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
-                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
-                    file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
-                    file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
-                    file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
-                    file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
-                    file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
-                    file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
-                    file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
-"
+require util-linux.inc
 
 #gtk-doc is not enabled as it requires xmlto which requires util-linux
 inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest
-DEPENDS = "libcap-ng ncurses virtual/crypt zlib"
-
-MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
-           file://configure-sbindir.patch \
-           file://runuser.pamd \
-           file://runuser-l.pamd \
-           file://ptest.patch \
-           file://run-ptest \
-           file://display_testname_for_subtest.patch \
-           file://avoid_parallel_tests.patch \
-           "
-SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
+DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid"
 
 PACKAGES =+ "${PN}-swaponoff"
 PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}"
@@ -87,8 +49,9 @@
 # we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
 PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
 
+# skip libuuid as it will be packaged by the util-linux-libuuid recipe
 python util_linux_libpackages() {
-    do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(.*)\.so\..*$',
+    do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(?!uuid)(.*)\.so\..*$',
                       output_pattern='${PN}-lib%s',
                       description='${PN} lib%s',
                       extra_depends='', prepend=True, allow_links=True)
@@ -141,6 +104,7 @@
 PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
 # PCRE support in hardlink
 PACKAGECONFIG[pcre2] = ",,libpcre2"
+PACKAGECONFIG[cryptsetup] = "--with-cryptsetup,--without-cryptsetup,cryptsetup"
 
 EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
 
@@ -165,7 +129,10 @@
 RDEPENDS_${PN}_class-native = ""
 RDEPENDS_${PN}_class-nativesdk = ""
 
-RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev ${PN}-libuuid-dev"
+RDEPENDS_${PN} += " util-linux-libuuid"
+RDEPENDS_${PN}-dev += " util-linux-libuuid-dev"
+
+RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev"
 
 RDEPENDS_${PN}-bash-completion += "${PN}-lsblk"
 RDEPENDS_${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs grep iproute2 kmod mdadm procps sed socat which xz"
@@ -234,6 +201,12 @@
 	rm -f ${D}${base_bindir}/kill
 }
 
+# dm-verity support introduces a circular build dependency, so util-linux-libuuid is split out for target builds
+# Need to build libuuid for uuidgen, but then delete it and let the other recipe ship it
+do_install_append () {
+	rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/libuuid* ${D}${base_libdir}/libuuid*
+}
+
 ALTERNATIVE_PRIORITY = "80"
 
 ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch b/poky/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
index cc422b7..8b28ede 100644
--- a/poky/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
+++ b/poky/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
@@ -1,4 +1,4 @@
-From cd164b353ba7958d51b2f33f4079fb9787c983e2 Mon Sep 17 00:00:00 2001
+From f629d1c3fcfb560ed24efc3e73d4e4999b1eab33 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 10 May 2019 14:16:47 +0200
 Subject: [PATCH] Disable documentation directory altogether
@@ -13,11 +13,11 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 83334ba..2cd4f8e 100644
+index 9745c13..7cfc9ee 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -232,7 +232,7 @@ add_subdirectory(apt-private)
- add_subdirectory(apt-inst)
+@@ -239,7 +239,7 @@ add_subdirectory(apt-pkg)
+ add_subdirectory(apt-private)
  add_subdirectory(cmdline)
  add_subdirectory(completions)
 -add_subdirectory(doc)
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
deleted file mode 100644
index 81b328a..0000000
--- a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 96d23fc57d1ff9c851d563d6d6a6c4752dc4f1b6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 21 May 2020 20:28:12 +0000
-Subject: [PATCH] Do not configure packages on installation
-
-This is done separately in do_rootfs().
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- apt-pkg/packagemanager.cc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
-index 156f7ad..0f6a87c 100644
---- a/apt-pkg/packagemanager.cc
-+++ b/apt-pkg/packagemanager.cc
-@@ -1013,10 +1013,12 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
-       return false;
- 
-    if (Immediate == true) {
-+#if 0
-       // Perform immediate configuration of the package. 
-          if (SmartConfigure(Pkg, Depth + 1) == false)
-             _error->Error(_("Could not perform immediate configuration on '%s'. "
-                "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
-+#endif
-    }
-    
-    return true;
-@@ -1111,6 +1113,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
-       }
-    }
- 
-+#if 0
-    // Final run through the configure phase
-    if (ConfigureAll() == false)
-       return Failed;
-@@ -1125,7 +1128,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
- 	 return Failed;
-       }
-    }
--	 
-+#endif	 
-    return Completed;
- }
- // PM::DoInstallPostFork - compat /*{{{*/
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
index 1417153..e0e7e0c 100644
--- a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
+++ b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
@@ -1,4 +1,4 @@
-From bf45c314867e5fb12141803fba06f3e45679d628 Mon Sep 17 00:00:00 2001
+From 382f8381ef8baf754057e376a6d9bf840ca6d543 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 10 May 2019 16:47:38 +0200
 Subject: [PATCH] Do not init tables from dpkg configuration
@@ -13,7 +13,7 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
-index a619368..6e5a6cf 100644
+index b9d9b15..1725c59 100644
 --- a/apt-pkg/init.cc
 +++ b/apt-pkg/init.cc
 @@ -281,8 +281,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
index 37f9696..c14dc2a 100644
--- a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
+++ b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
@@ -1,4 +1,4 @@
-From 34700bebc52659e7e3eecd252f65bd36e669eee8 Mon Sep 17 00:00:00 2001
+From a603b3281f3f60a87531c8cec4843f970170d409 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Thu, 21 May 2020 20:13:25 +0000
 Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our
@@ -20,10 +20,10 @@
  1 file changed, 2 insertions(+), 7 deletions(-)
 
 diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
-index ffa880d..5875e86 100644
+index 46a6dee..8617a9e 100644
 --- a/apt-pkg/deb/dpkgpm.cc
 +++ b/apt-pkg/deb/dpkgpm.cc
-@@ -1215,12 +1215,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
+@@ -1211,12 +1211,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
  	 }
        }
     }
@@ -35,8 +35,8 @@
 -   ++PackagesTotal;
  }
                                                                          /*}}}*/
- bool pkgDPkgPM::Go(int StatusFd)					/*{{{*/
-@@ -1716,7 +1710,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
+ void pkgDPkgPM::StartPtyMagic()						/*{{{*/
+@@ -1710,7 +1704,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
  
        // support subpressing of triggers processing for special
        // cases like d-i that runs the triggers handling manually
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch b/poky/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch
new file mode 100644
index 0000000..2837b7f
--- /dev/null
+++ b/poky/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch
@@ -0,0 +1,37 @@
+From 33347f9f8301633b01af4e208b7be5fdfcb0df0c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 20 Mar 2021 14:45:18 -0700
+Subject: [PATCH] cmake: Do not build po files
+
+Fixes
+| CMake Error at CMakeLists.txt:252 (add_dependencies):
+|   The dependency target "update-po4a" of target "update-po" does not exist.
+|
+
+Upstream-Status: Inappropriate [Cross-compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3c8ec3f..821a24f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -245,13 +245,6 @@ add_subdirectory(ftparchive)
+ add_subdirectory(methods)
+ add_subdirectory(test)
+ 
+-if (USE_NLS)
+-add_subdirectory(po)
+-
+-# Link update-po4a into the update-po target
+-add_dependencies(update-po update-po4a)
+-endif()
+-
+ # Create our directories.
+ install_empty_directories(
+   ${CONF_DIR}/apt.conf.d
+-- 
+2.31.0
+
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch b/poky/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch
new file mode 100644
index 0000000..94d67a8
--- /dev/null
+++ b/poky/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch
@@ -0,0 +1,44 @@
+From f98c12b9f04ef3a9daec822c210044095b41a0ac Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 20 Mar 2021 12:33:34 -0700
+Subject: [PATCH] srvrec: Keep support for older resolver
+
+Some C libraries e.g. musl do not implement the new res_n* APIs
+therefore keep the old implementation as fallback and check __RES
+version macro to determine the API level
+
+Upstream-Status: Submitted [https://github.com/Debian/apt/pull/129]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Julian Andres Klode <julian.klode@canonical.com>
+---
+ apt-pkg/contrib/srvrec.cc | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc
+index 4ca208273..3eb5f1d4c 100644
+--- a/apt-pkg/contrib/srvrec.cc
++++ b/apt-pkg/contrib/srvrec.cc
+@@ -62,6 +62,7 @@ bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
+    unsigned char answer[PACKETSZ];
+    int answer_len, compressed_name_len;
+    int answer_count;
++#if __RES >= 19991006
+    struct __res_state res;
+ 
+    if (res_ninit(&res) != 0)
+@@ -71,6 +72,12 @@ bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
+    std::shared_ptr<void> guard(&res, res_nclose);
+ 
+    answer_len = res_nquery(&res, name.c_str(), C_IN, T_SRV, answer, sizeof(answer));
++#else
++   if (res_init() != 0)
++      return _error->Errno("res_init", "Failed to init resolver");
++
++   answer_len = res_query(name.c_str(), C_IN, T_SRV, answer, sizeof(answer));
++#endif //__RES >= 19991006
+    if (answer_len == -1)
+       return false;
+    if (answer_len < (int)sizeof(HEADER))
+-- 
+2.31.0
+
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch b/poky/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch
deleted file mode 100644
index 503b5a5..0000000
--- a/poky/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 28e389a0d1275e7693df84a7d4a58b28364be1a9 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 22 Oct 2020 17:33:38 +0200
-Subject: [PATCH] test/libapt: do not use gtest from the host
-
-This really does not work when cross-compiling.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- test/libapt/CMakeLists.txt | 16 ----------------
- 1 file changed, 16 deletions(-)
-
-diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
-index 035ff07..280b83c 100644
---- a/test/libapt/CMakeLists.txt
-+++ b/test/libapt/CMakeLists.txt
-@@ -6,22 +6,6 @@ find_path(GTEST_ROOT src/gtest.cc
- find_package(GTest)
- set(GTEST_DEPENDENCIES)
- 
--if(NOT GTEST_FOUND AND EXISTS ${GTEST_ROOT})
--   include(ExternalProject)
--   ExternalProject_Add(gtest PREFIX ./gtest
--                             SOURCE_DIR ${GTEST_ROOT}
--                             INSTALL_COMMAND true)
--
--   link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
--
--   set(GTEST_LIBRARIES "-lgtest")
--   set(GTEST_DEPENDENCIES "gtest")
--   set(GTEST_FOUND TRUE)
--   find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_ROOT}/include)
--
--   message(STATUS "Found GTest at ${GTEST_ROOT}, headers at ${GTEST_INCLUDE_DIRS}")
--endif()
--
- if(GTEST_FOUND)
-    # gtest produces some warnings with the set of warnings we activate,
-    # so disable the offending warnings while compiling tests for now
diff --git a/poky/meta/recipes-devtools/apt/apt_1.8.2.2.bb b/poky/meta/recipes-devtools/apt/apt_2.2.2.bb
similarity index 87%
rename from poky/meta/recipes-devtools/apt/apt_1.8.2.2.bb
rename to poky/meta/recipes-devtools/apt/apt_2.2.2.bb
index 6cda61a..d1aa5de 100644
--- a/poky/meta/recipes-devtools/apt/apt_1.8.2.2.bb
+++ b/poky/meta/recipes-devtools/apt/apt_2.2.2.bb
@@ -10,22 +10,21 @@
            file://0001-Disable-documentation-directory-altogether.patch \
            file://0001-Fix-musl-build.patch \
            file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \
-           file://0001-test-libapt-do-not-use-gtest-from-the-host.patch \
+           file://0001-srvrec-Keep-support-for-older-resolver.patch \
+           file://0001-cmake-Do-not-build-po-files.patch \
            "
-     
+
 SRC_URI_append_class-native = " \
            file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
            file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
-           file://0001-Do-not-configure-packages-on-installation.patch \
            "
 
 SRC_URI_append_class-nativesdk = " \
            file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
            file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
-           file://0001-Do-not-configure-packages-on-installation.patch \
            "
 
-SRC_URI[sha256sum] = "f5030de22a5cc80db6fe0d42373b5df25d7dc56e94d9155f2eaa80dbd65e82fa"
+SRC_URI[sha256sum] = "c5449a4c2126a12497a9949cd10209926005d329f6ce7942a3781fa2fcf50487"
 LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 # the package is taken from snapshots.debian.org; that source is static and goes stale
@@ -40,12 +39,12 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-DEPENDS += "virtual/libiconv virtual/libintl db gnutls lz4 zlib bzip2 xz"
+DEPENDS += "db gnutls lz4 zlib bzip2 xz libgcrypt xxhash"
 
 EXTRA_OECMAKE_append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \
-    -DUSE_NLS=False -DDPKG_DATADIR=${datadir}/dpkg \
+    -DDPKG_DATADIR=${datadir}/dpkg \
     -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash \
-    -DCMAKE_DISABLE_FIND_PACKAGE_Zstd=True \
+    -DWITH_TESTS=False \
 "
 
 do_configure_prepend () {
diff --git a/poky/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch b/poky/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
deleted file mode 100644
index 0e84c4b..0000000
--- a/poky/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 857c843d4bcf576467b505eb05a47f3e7d32caaa Mon Sep 17 00:00:00 2001
-From: Serhii Popovych <spopovyc@cisco.com>
-Date: Wed, 10 Feb 2016 17:07:32 +0000
-Subject: [PATCH] perl: Replace -w option in shebangs with modern "use
- warnings" In some builds we might provide ac_cv_path_PERL as /usr/bin/env
- perl to use newer version of the perl from users PATH rather than older from
- standard system path.
-
-However using /usr/bin/env perl -w from shebang line isn't
-possible because it translates to something like
-/usr/bin/env -w perl and env complains about illegal option.
-
-To address this we can remove -w option from perl shebang
-line and add "use warnings" statement.
-
-Upstream-Status: Pending
-Signed-off-by: Serhii Popovych <spopovyc@cisco.com>
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
----
- bin/aclocal.in  | 3 ++-
- bin/automake.in | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/bin/aclocal.in b/bin/aclocal.in
-index 9a20325..bd185d4 100644
---- a/bin/aclocal.in
-+++ b/bin/aclocal.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # aclocal - create aclocal.m4 by scanning configure.ac      -*- perl -*-
- # @configure_input@
- # Copyright (C) 1996-2020 Free Software Foundation, Inc.
-@@ -26,6 +26,7 @@ BEGIN
- }
- 
- use strict;
-+use warnings;
- 
- use Automake::Config;
- use Automake::General;
-diff --git a/bin/automake.in b/bin/automake.in
-index 5ed404a..d387b8e 100644
---- a/bin/automake.in
-+++ b/bin/automake.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # automake - create Makefile.in from Makefile.am            -*- perl -*-
- # @configure_input@
- # Copyright (C) 1994-2020 Free Software Foundation, Inc.
-@@ -23,6 +23,7 @@
- package Automake;
- 
- use strict;
-+use warnings;
- 
- BEGIN
- {
diff --git a/poky/meta/recipes-devtools/automake/automake/python-libdir.patch b/poky/meta/recipes-devtools/automake/automake/python-libdir.patch
index ee1f725..f319fc0 100644
--- a/poky/meta/recipes-devtools/automake/automake/python-libdir.patch
+++ b/poky/meta/recipes-devtools/automake/automake/python-libdir.patch
@@ -1,4 +1,4 @@
-From a80dacd5124d0713cf2c986b28d736e78dc6b0ca Mon Sep 17 00:00:00 2001
+From 61bd143910001aaf610416d7ca56c52c0b081318 Mon Sep 17 00:00:00 2001
 From: Kumar Gala <galak@kernel.crashing.org>
 Date: Thu, 11 Aug 2011 01:26:33 -0500
 Subject: [PATCH] automake: Update for python.m4 to respect libdir
@@ -17,11 +17,11 @@
  1 file changed, 7 insertions(+), 20 deletions(-)
 
 diff --git a/m4/python.m4 b/m4/python.m4
-index 63c0a0e..7bbd2d2 100644
+index b2302ba..dbc6954 100644
 --- a/m4/python.m4
 +++ b/m4/python.m4
-@@ -94,12 +94,13 @@ AC_DEFUN([AM_PATH_PYTHON],
-     [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+@@ -96,12 +96,13 @@ AC_DEFUN([AM_PATH_PYTHON],
+     [am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[[:2]])"`])
    AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
  
 -  dnl Use the values of $prefix and $exec_prefix for the corresponding
@@ -36,7 +36,7 @@
    AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
  
    dnl At times (like when building shared libraries) you may want
-@@ -144,14 +145,7 @@ except ImportError:
+@@ -146,14 +147,7 @@ except ImportError:
       else
         am_py_prefix=$prefix
       fi
@@ -52,7 +52,7 @@
       case $am_cv_python_pythondir in
       $am_py_prefix*)
         am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-@@ -161,7 +155,7 @@ sys.stdout.write(sitedir)"`
+@@ -163,7 +157,7 @@ sys.stdout.write(sitedir)"`
         case $am_py_prefix in
           /usr|/System*) ;;
           *)
@@ -61,7 +61,7 @@
  	  ;;
         esac
         ;;
-@@ -186,14 +180,7 @@ sys.stdout.write(sitedir)"`
+@@ -188,14 +182,7 @@ sys.stdout.write(sitedir)"`
       else
         am_py_exec_prefix=$exec_prefix
       fi
@@ -77,7 +77,7 @@
       case $am_cv_python_pyexecdir in
       $am_py_exec_prefix*)
         am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-@@ -203,7 +190,7 @@ sys.stdout.write(sitedir)"`
+@@ -205,7 +192,7 @@ sys.stdout.write(sitedir)"`
         case $am_py_exec_prefix in
           /usr|/System*) ;;
           *)
diff --git a/poky/meta/recipes-devtools/automake/automake_1.16.2.bb b/poky/meta/recipes-devtools/automake/automake_1.16.3.bb
similarity index 61%
rename from poky/meta/recipes-devtools/automake/automake_1.16.2.bb
rename to poky/meta/recipes-devtools/automake/automake_1.16.3.bb
index 08ec034..7dc59d9 100644
--- a/poky/meta/recipes-devtools/automake/automake_1.16.2.bb
+++ b/poky/meta/recipes-devtools/automake/automake_1.16.3.bb
@@ -19,16 +19,14 @@
 RDEPENDS_${PN}_class-native = "autoconf-native hostperl-runtime-native"
 
 SRC_URI += "file://python-libdir.patch \
-            file://buildtest.patch \
-            file://performance.patch \
-            file://new_rt_path_for_test-driver.patch \
-            file://automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch \
-            file://0001-automake-Add-default-libtool_tag-to-cppasm.patch \
-            file://0001-build-fix-race-in-parallel-builds.patch \
-            "
+           file://buildtest.patch \
+           file://performance.patch \
+           file://new_rt_path_for_test-driver.patch \
+           file://0001-automake-Add-default-libtool_tag-to-cppasm.patch \
+           file://0001-build-fix-race-in-parallel-builds.patch \
+           "
 
-SRC_URI[md5sum] = "f1a14f2ab2b0fb861a011e1d94e589e0"
-SRC_URI[sha256sum] = "b2f361094b410b4acbf4efba7337bdb786335ca09eb2518635a09fb7319ca5c1"
+SRC_URI[sha256sum] = "ce010788b51f64511a1e9bb2a1ec626037c6d0e7ede32c1c103611b9d3cba65f"
 
 PERL = "${USRBINPATH}/perl"
 PERL_class-native = "${USRBINPATH}/env perl"
diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.5.2.bb b/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb
similarity index 98%
rename from poky/meta/recipes-devtools/dnf/dnf_4.5.2.bb
rename to poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb
index c746dc3..6651e64 100644
--- a/poky/meta/recipes-devtools/dnf/dnf_4.5.2.bb
+++ b/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb
@@ -18,7 +18,7 @@
            file://0001-dnf-write-the-log-lock-to-root.patch \
            "
 
-SRCREV = "36a3ffaee4db76a7efe7d40f4e42ce679b6a6920"
+SRCREV = "c826d7db401ebf9b59b2fa74570a919e4af2673e"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb b/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb
index 16ed7c9..c083368 100644
--- a/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb
+++ b/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb
@@ -14,7 +14,6 @@
            file://0001-dso-link-change.patch \
            file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
            file://0003-fixheadercheck.patch \
-           file://0004-Disable-the-test-to-convert-euc-jp.patch \
            file://0006-Fix-build-on-aarch64-musl.patch \
            file://0001-libasm-may-link-with-libbz2-if-found.patch \
            file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
diff --git a/poky/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch b/poky/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index f407bdd..0000000
--- a/poky/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From cd36f34c722dd0babd7beb13c968aa0780c9f726 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 17:24:06 +0800
-Subject: [PATCH] Disable the test to convert euc-jp
-
-Remove the test "Test against HP-UX 11.11 bug:
-No converter from EUC-JP to UTF-8 is provided"
-since we don't support HP-UX and if the euc-jp is not
-installed on the host, the dependence will be built without
-iconv support and will cause guild-native building fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
-Rebase to 0.170
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- m4/iconv.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/m4/iconv.m4 b/m4/iconv.m4
-index aa159c5..d16312b 100644
---- a/m4/iconv.m4
-+++ b/m4/iconv.m4
-@@ -165,6 +165,7 @@ AC_DEFUN([AM_ICONV_LINK],
-       }
-   }
- #endif
-+#if 0
-   /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
-      provided.  */
-   if (/* Try standardized names.  */
-@@ -176,6 +177,7 @@ AC_DEFUN([AM_ICONV_LINK],
-       /* Try HP-UX names.  */
-       && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
-     result |= 16;
-+#endif
-   return result;
- ]])],
-           [am_cv_func_iconv_works=yes], ,
diff --git a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.6.bb b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.7.bb
similarity index 92%
rename from poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.6.bb
rename to poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.7.bb
index 5112deb..a697b74 100644
--- a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.6.bb
+++ b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.7.bb
@@ -10,7 +10,7 @@
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \
            file://0001-gptcurses-correctly-include-curses.h.patch \
            "
-SRC_URI[sha256sum] = "ddc551d643a53f0bd4440345d3ae32c49b04a797e9c01036ea460b6bb4168ca8"
+SRC_URI[sha256sum] = "754004b7f85b279287c7ac3c0469b1d7e0eae043a97a2e587b0560ca5f3828c0"
 
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/gptfdisk/files/gptfdisk/"
 UPSTREAM_CHECK_REGEX = "/gptfdisk/(?P<pver>(\d+[\.\-_]*)+)/"
diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross.inc b/poky/meta/recipes-devtools/gcc/gcc-cross.inc
index 6fa8c27..e08807a 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -21,7 +21,7 @@
 # gnu) will hit a QA failure.
 LINKER_HASH_STYLE ?= "sysv"
 
-EXTRA_OECONF += "--enable-poison-system-directories"
+EXTRA_OECONF += "--enable-poison-system-directories=error"
 EXTRA_OECONF_append_sh4 = " \
     --with-multilib-list= \
     --enable-incomplete-targets \
diff --git a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
index 9e643ee..d0348c4 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
@@ -83,10 +83,11 @@
 # musl is currently broken entirely
 COMPATIBLE_HOST_libc-musl = 'null'
 
-FILES_libasan += "${libdir}/libasan.so.*"
+FILES_libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
 FILES_libasan-dev += "\
     ${libdir}/libasan_preinit.o \
     ${libdir}/libasan.so \
+    ${libdir}/libhwasan.so \
     ${libdir}/libasan.la \
 "
 FILES_libasan-staticdev += "${libdir}/libasan.a"
diff --git a/poky/meta/recipes-devtools/gcc/gcc-target.inc b/poky/meta/recipes-devtools/gcc/gcc-target.inc
index 1e25dad..164a669 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-target.inc
@@ -45,6 +45,7 @@
     ${bindir}/${TARGET_PREFIX}lto* \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2* \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
+    ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/g++-mapper-server \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lto* \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lib*${SOLIBS} \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto*${SOLIBSDEV} \
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch b/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
index 30a8486..697bdc8 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
@@ -13,20 +13,21 @@
 
 Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
 
 Upstream-Status: Pending
 ---
  gcc/common.opt      |  4 ++++
- gcc/config.in       |  6 ++++++
- gcc/configure       | 16 ++++++++++++++++
- gcc/configure.ac    | 10 ++++++++++
+ gcc/config.in       | 10 ++++++++++
+ gcc/configure       | 19 +++++++++++++++++++
+ gcc/configure.ac    | 16 ++++++++++++++++
  gcc/doc/invoke.texi |  9 +++++++++
- gcc/gcc.c           |  2 ++
+ gcc/gcc.c           |  9 +++++++--
  gcc/incpath.c       | 21 +++++++++++++++++++++
- 7 files changed, 68 insertions(+)
+ 7 files changed, 86 insertions(+), 2 deletions(-)
 
 diff --git a/gcc/common.opt b/gcc/common.opt
-index 65a82410abc..415f38fa1f4 100644
+index 3ec7743ea..d3c3e51dc 100644
 --- a/gcc/common.opt
 +++ b/gcc/common.opt
 @@ -682,6 +682,10 @@ Wreturn-local-addr
@@ -41,10 +42,10 @@
  Common Var(warn_shadow) Warning
  Warn when one variable shadows another.  Same as -Wshadow=global.
 diff --git a/gcc/config.in b/gcc/config.in
-index 809e7b26823..5adeaeed36b 100644
+index 364eba477..7d2c3bbf1 100644
 --- a/gcc/config.in
 +++ b/gcc/config.in
-@@ -224,6 +224,12 @@
+@@ -224,6 +224,16 @@
  #endif
  
  
@@ -52,13 +53,17 @@
 +#ifndef USED_FOR_TARGET
 +#undef ENABLE_POISON_SYSTEM_DIRECTORIES
 +#endif
++/* Define to warn for use of native system header directories */
++#ifndef USED_FOR_TARGET
++#undef POISON_BY_DEFAULT
++#endif
 +
 +
  /* Define if you want all operations on RTL (the basic data structure of the
     optimizer and back end) to be checked for dynamic type safety at runtime.
     This is quite expensive. */
 diff --git a/gcc/configure b/gcc/configure
-index cd3d9516fce..8de766a942c 100755
+index 2a9d646b4..a848792f2 100755
 --- a/gcc/configure
 +++ b/gcc/configure
 @@ -1010,6 +1010,7 @@ with_system_zlib
@@ -78,7 +83,7 @@
    --enable-plugin         enable plugin support
    --enable-host-shared    build host code as shared libraries
    --disable-libquadmath-support
-@@ -30235,6 +30238,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
+@@ -30280,6 +30283,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
  fi
  
  
@@ -89,9 +94,12 @@
 +  enable_poison_system_directories=no
 +fi
 +
-+if test "x${enable_poison_system_directories}" = "xyes"; then
++if test "x${enable_poison_system_directories}" != "xno"; then
 +
 +$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++if test "$enable_poison_system_directories" = "error"; then
++$as_echo "#define POISON_BY_DEFAULT 1" >>confdefs.h
++fi
 +
 +fi
 +
@@ -99,31 +107,37 @@
  
  
 diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 0de3b4bf97b..8bfd6feb780 100644
+index 51cce36ce..66ffde305 100644
 --- a/gcc/configure.ac
 +++ b/gcc/configure.ac
-@@ -6595,6 +6595,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
+@@ -6614,6 +6614,22 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
                  [specify that runtime libraries should be
                   installed in a compiler-specific directory])])
  
 +AC_ARG_ENABLE([poison-system-directories],
 +             AS_HELP_STRING([--enable-poison-system-directories],
-+                            [warn for use of native system header directories]),,
++			    [warn for use of native system header directories (no/yes/error)]),,
 +             [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
++AC_MSG_NOTICE([poisoned directories $enable_poison_system_directories])
++if test "x${enable_poison_system_directories}" != "xno"; then
++  AC_MSG_NOTICE([poisoned directories enabled])
 +  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
 +           [1],
 +           [Define to warn for use of native system header directories])
++  if test $enable_poison_system_directories = "error"; then
++   AC_MSG_NOTICE([poisoned directories are fatal])
++   AC_DEFINE([POISON_BY_DEFAULT], [1], [Define to make poison warnings errors])
++  fi
 +fi
 +
  # Substitute configuration variables
  AC_SUBST(subdirs)
  AC_SUBST(srcdir)
 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index f98161391a0..f12d8d12150 100644
+index d929eb109..aa5ff88b1 100644
 --- a/gcc/doc/invoke.texi
 +++ b/gcc/doc/invoke.texi
-@@ -348,6 +348,7 @@ Objective-C and Objective-C++ Dialects}.
+@@ -351,6 +351,7 @@ Objective-C and Objective-C++ Dialects}.
  -Wpacked  -Wno-packed-bitfield-compat  -Wpacked-not-aligned  -Wpadded @gol
  -Wparentheses  -Wno-pedantic-ms-format @gol
  -Wpointer-arith  -Wno-pointer-compare  -Wno-pointer-to-int-cast @gol
@@ -131,7 +145,7 @@
  -Wno-pragmas  -Wno-prio-ctor-dtor  -Wredundant-decls @gol
  -Wrestrict  -Wno-return-local-addr  -Wreturn-type @gol
  -Wno-scalar-storage-order  -Wsequence-point @gol
-@@ -6924,6 +6925,14 @@ made up of data only and thus requires no special treatment.  But, for
+@@ -6928,6 +6929,14 @@ made up of data only and thus requires no special treatment.  But, for
  most targets, it is made up of code and thus requires the stack to be
  made executable in order for the program to work properly.
  
@@ -147,10 +161,10 @@
  @opindex Wfloat-equal
  @opindex Wno-float-equal
 diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 9f790db0daf..b2200c5185a 100644
+index 49c9c6c17..24a92bf27 100644
 --- a/gcc/gcc.c
 +++ b/gcc/gcc.c
-@@ -1041,6 +1041,8 @@ proper position among the other output files.  */
+@@ -1044,6 +1044,8 @@ proper position among the other output files.  */
     "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
     "%X %{o*} %{e*} %{N} %{n} %{r}\
      %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \
@@ -159,8 +173,22 @@
      %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \
      VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \
      %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+@@ -1138,8 +1140,11 @@ static const char *cpp_unique_options =
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{%:debug-level-gt(0):%{g*}\
+- %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{!fno-working-directory:-fworking-directory}}} %{O*}"
++#ifdef POISON_BY_DEFAULT
++ " -Werror=poison-system-directories"
++#endif
++ " %{undef} %{save-temps*:-fpch-preprocess}";
+ 
+ /* This contains cpp options which are not passed when the preprocessor
+    output will be used by another program.  */
 diff --git a/gcc/incpath.c b/gcc/incpath.c
-index 8a2bda00f80..9098ab044ab 100644
+index 94eaba7b1..bfad4ebe3 100644
 --- a/gcc/incpath.c
 +++ b/gcc/incpath.c
 @@ -26,6 +26,7 @@
@@ -198,3 +226,6 @@
  }
  
  /* Use given -I paths for #include "..." but not #include <...>, and
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-devtools/git/git.inc b/poky/meta/recipes-devtools/git/git.inc
index 0cc40b9..146983a 100644
--- a/poky/meta/recipes-devtools/git/git.inc
+++ b/poky/meta/recipes-devtools/git/git.inc
@@ -9,7 +9,8 @@
 
 SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
            ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages \
-           file://fixsort.patch"
+           file://fixsort.patch \
+"
 
 S = "${WORKDIR}/git-${PV}"
 
diff --git a/poky/meta/recipes-devtools/git/git_2.30.1.bb b/poky/meta/recipes-devtools/git/git_2.30.1.bb
deleted file mode 100644
index bc1635a..0000000
--- a/poky/meta/recipes-devtools/git/git_2.30.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
-                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
-                 "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.sha256sum] = "23a3e53f0d2dd3e62a8147b24a1a91d6ffe95b92123ef4dbae04e9a6205e71c0"
-SRC_URI[manpages.sha256sum] = "db323e1b242e9d0337363b1e538c8b879e4c46eedbf94d3bee9e65dab6d49138"
diff --git a/poky/meta/recipes-devtools/git/git_2.31.1.bb b/poky/meta/recipes-devtools/git/git_2.31.1.bb
new file mode 100644
index 0000000..6bfa1f7
--- /dev/null
+++ b/poky/meta/recipes-devtools/git/git_2.31.1.bb
@@ -0,0 +1,9 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+                 "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.sha256sum] = "46d37c229e9d786510e0c53b60065704ce92d5aedc16f2c5111e3ed35093bfa7"
+SRC_URI[manpages.sha256sum] = "d330498aaaea6928b0abbbbb896f6f605efd8d35f23cbbb2de38c87a737d4543"
diff --git a/poky/meta/recipes-devtools/go/go-1.16.inc b/poky/meta/recipes-devtools/go/go-1.16.2.inc
similarity index 88%
rename from poky/meta/recipes-devtools/go/go-1.16.inc
rename to poky/meta/recipes-devtools/go/go-1.16.2.inc
index 1ebbbef..e65caf8 100644
--- a/poky/meta/recipes-devtools/go/go-1.16.inc
+++ b/poky/meta/recipes-devtools/go/go-1.16.2.inc
@@ -1,7 +1,7 @@
 require go-common.inc
 
 GO_BASEVERSION = "1.16"
-PV = "1.16"
+PV = "1.16.2"
 FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
@@ -17,4 +17,4 @@
     file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
     file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
 "
-SRC_URI[main.sha256sum] = "7688063d55656105898f323d90a79a39c378d86fe89ae192eb3b7fc46347c95a"
+SRC_URI[main.sha256sum] = "37ca14287a23cb8ba2ac3f5c3dd8adbc1f7a54b9701a57824bf19a0b271f83ea"
diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.16.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.16.2.bb
similarity index 83%
rename from poky/meta/recipes-devtools/go/go-binary-native_1.16.bb
rename to poky/meta/recipes-devtools/go/go-binary-native_1.16.2.bb
index 155a475..4fb0601 100644
--- a/poky/meta/recipes-devtools/go/go-binary-native_1.16.bb
+++ b/poky/meta/recipes-devtools/go/go-binary-native_1.16.2.bb
@@ -8,8 +8,8 @@
 PROVIDES = "go-native"
 
 SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
-SRC_URI[go_linux_amd64.sha256sum] = "013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2"
-SRC_URI[go_linux_arm64.sha256sum] = "3770f7eb22d05e25fbee8fb53c2a4e897da043eb83c69b9a14f8d98562cd8098"
+SRC_URI[go_linux_amd64.sha256sum] = "542e936b19542e62679766194364f45141fde55169db2d8d01046555ca9eb4b8"
+SRC_URI[go_linux_arm64.sha256sum] = "6924601d998a0917694fd14261347e3798bd2ad6b13c4d7f2edd70c9d57f62ab"
 
 UPSTREAM_CHECK_URI = "https://golang.org/dl/"
 UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
diff --git a/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.bb b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross-canadian_1.16.bb
rename to poky/meta/recipes-devtools/go/go-cross-canadian_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-cross_1.16.bb b/poky/meta/recipes-devtools/go/go-cross_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross_1.16.bb
rename to poky/meta/recipes-devtools/go/go-cross_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.bb b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-crosssdk_1.16.bb
rename to poky/meta/recipes-devtools/go/go-crosssdk_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch b/poky/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch
deleted file mode 100644
index 34ec987..0000000
--- a/poky/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f0fb80604385ae3266a472601ef685896b4cc0af Mon Sep 17 00:00:00 2001
-From: Vladimir Stefanovic <vladimir.stefanovic@imgtec.com>
-Date: Fri, 17 Feb 2017 20:44:43 +0100
-Subject: [PATCH] Add support for mips, mips64
-
----
-Upstream-Status: Submitted
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- vendor/github.com/boltdb/bolt/bolt_mips64x.go | 12 ++++++++++++
- vendor/github.com/boltdb/bolt/bolt_mipsx.go   | 12 ++++++++++++
- 2 files changed, 24 insertions(+)
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_mips64x.go
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_mipsx.go
-
-diff --git a/vendor/github.com/boltdb/bolt/bolt_mips64x.go b/vendor/github.com/boltdb/bolt/bolt_mips64x.go
-new file mode 100644
-index 00000000..134b578b
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_mips64x.go
-@@ -0,0 +1,12 @@
-+// +build mips64 mips64le
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0x8000000000 // 512GB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0x7FFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
-diff --git a/vendor/github.com/boltdb/bolt/bolt_mipsx.go b/vendor/github.com/boltdb/bolt/bolt_mipsx.go
-new file mode 100644
-index 00000000..d5ecb059
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_mipsx.go
-@@ -0,0 +1,12 @@
-+// +build mips mipsle
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0x40000000 // 1GB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0xFFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
--- 
-2.14.1
-
diff --git a/poky/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch b/poky/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch
deleted file mode 100644
index b13bb9e..0000000
--- a/poky/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch
+++ /dev/null
@@ -1,145574 +0,0 @@
-From f7904cb91a1b18e893ffbd25b450926d145d0e0a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 22 Apr 2020 18:44:48 -0700
-Subject: [PATCH] Update sys module to latest
-
-Gets us riscv support
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Gopkg.lock                                    |    4 +-
- .../golang.org/x/sys/unix/affinity_linux.go   |   86 +
- vendor/golang.org/x/sys/unix/aliases.go       |   14 +
- vendor/golang.org/x/sys/unix/asm_aix_ppc64.s  |   17 +
- .../x/sys/unix/asm_dragonfly_amd64.s          |   10 +-
- ...sm_linux_mips64x.s => asm_freebsd_arm64.s} |   11 +-
- vendor/golang.org/x/sys/unix/asm_linux_386.s  |   36 +-
- .../golang.org/x/sys/unix/asm_linux_amd64.s   |   30 +-
- vendor/golang.org/x/sys/unix/asm_linux_arm.s  |   35 +-
- .../golang.org/x/sys/unix/asm_linux_arm64.s   |   30 +-
- .../golang.org/x/sys/unix/asm_linux_mips64x.s |   36 +-
- .../golang.org/x/sys/unix/asm_linux_mipsx.s   |   33 +-
- .../golang.org/x/sys/unix/asm_linux_ppc64x.s  |   38 +-
- .../golang.org/x/sys/unix/asm_linux_riscv64.s |   47 +
- .../golang.org/x/sys/unix/asm_linux_s390x.s   |   28 +
- ...asm_linux_mips64x.s => asm_netbsd_arm64.s} |   17 +-
- ...sm_linux_mips64x.s => asm_openbsd_arm64.s} |    9 +-
- .../golang.org/x/sys/unix/bluetooth_linux.go  |    1 +
- vendor/golang.org/x/sys/unix/cap_freebsd.go   |   30 +-
- vendor/golang.org/x/sys/unix/constants.go     |    2 +-
- vendor/golang.org/x/sys/unix/dev_aix_ppc.go   |   27 +
- vendor/golang.org/x/sys/unix/dev_aix_ppc64.go |   29 +
- vendor/golang.org/x/sys/unix/dev_darwin.go    |   24 +
- vendor/golang.org/x/sys/unix/dev_dragonfly.go |   30 +
- vendor/golang.org/x/sys/unix/dev_freebsd.go   |   30 +
- vendor/golang.org/x/sys/unix/dev_linux.go     |    8 +-
- vendor/golang.org/x/sys/unix/dev_netbsd.go    |   29 +
- vendor/golang.org/x/sys/unix/dev_openbsd.go   |   29 +
- vendor/golang.org/x/sys/unix/dirent.go        |    2 +-
- vendor/golang.org/x/sys/unix/endian_little.go |    2 +-
- vendor/golang.org/x/sys/unix/env_unix.go      |    8 +-
- vendor/golang.org/x/sys/unix/env_unset.go     |   14 -
- .../x/sys/unix/errors_freebsd_386.go          |    6 +
- .../x/sys/unix/errors_freebsd_amd64.go        |    6 +
- .../x/sys/unix/errors_freebsd_arm64.go        |   17 +
- .../x/sys/unix/{flock.go => fcntl.go}         |   18 +-
- vendor/golang.org/x/sys/unix/fcntl_darwin.go  |   18 +
- ...ck_linux_32bit.go => fcntl_linux_32bit.go} |    0
- vendor/golang.org/x/sys/unix/fdset.go         |   29 +
- vendor/golang.org/x/sys/unix/file_unix.go     |   27 -
- vendor/golang.org/x/sys/unix/gccgo.go         |   20 +-
- vendor/golang.org/x/sys/unix/gccgo_c.c        |   12 +-
- .../x/sys/unix/gccgo_linux_amd64.go           |    2 +-
- .../x/sys/unix/gccgo_linux_sparc64.go         |   20 -
- vendor/golang.org/x/sys/unix/ioctl.go         |   65 +
- vendor/golang.org/x/sys/unix/mkasm_darwin.go  |   78 +
- vendor/golang.org/x/sys/unix/mkmerge.go       |  521 +++
- vendor/golang.org/x/sys/unix/mkpost.go        |   63 +-
- vendor/golang.org/x/sys/unix/mksyscall.go     |  402 +++
- .../x/sys/unix/mksyscall_aix_ppc.go           |  415 +++
- .../x/sys/unix/mksyscall_aix_ppc64.go         |  614 ++++
- .../x/sys/unix/mksyscall_solaris.go           |  341 ++
- .../golang.org/x/sys/unix/mksysctl_openbsd.go |  355 +++
- vendor/golang.org/x/sys/unix/mksysnum.go      |  190 ++
- .../golang.org/x/sys/unix/openbsd_pledge.go   |   38 -
- vendor/golang.org/x/sys/unix/pagesize_unix.go |   15 +
- .../golang.org/x/sys/unix/pledge_openbsd.go   |  163 +
- vendor/golang.org/x/sys/unix/race.go          |    2 +-
- vendor/golang.org/x/sys/unix/race0.go         |    4 +-
- .../x/sys/unix/readdirent_getdents.go         |   12 +
- .../x/sys/unix/readdirent_getdirentries.go    |   19 +
- .../x/sys/unix/sockcmsg_dragonfly.go          |   16 +
- .../golang.org/x/sys/unix/sockcmsg_linux.go   |    4 +-
- vendor/golang.org/x/sys/unix/sockcmsg_unix.go |   28 +-
- .../x/sys/unix/sockcmsg_unix_other.go         |   38 +
- vendor/golang.org/x/sys/unix/str.go           |    2 +-
- vendor/golang.org/x/sys/unix/syscall.go       |   38 +-
- vendor/golang.org/x/sys/unix/syscall_aix.go   |  536 ++++
- .../golang.org/x/sys/unix/syscall_aix_ppc.go  |   54 +
- .../x/sys/unix/syscall_aix_ppc64.go           |   85 +
- vendor/golang.org/x/sys/unix/syscall_bsd.go   |  112 +-
- .../x/sys/unix/syscall_darwin.1_12.go         |   29 +
- .../x/sys/unix/syscall_darwin.1_13.go         |  101 +
- .../golang.org/x/sys/unix/syscall_darwin.go   |  263 +-
- .../x/sys/unix/syscall_darwin_386.1_11.go     |    9 +
- .../x/sys/unix/syscall_darwin_386.go          |   45 +-
- .../x/sys/unix/syscall_darwin_amd64.1_11.go   |    9 +
- .../x/sys/unix/syscall_darwin_amd64.go        |   45 +-
- .../x/sys/unix/syscall_darwin_arm.1_11.go     |   11 +
- .../x/sys/unix/syscall_darwin_arm.go          |   51 +-
- .../x/sys/unix/syscall_darwin_arm64.1_11.go   |   11 +
- .../x/sys/unix/syscall_darwin_arm64.go        |   47 +-
- .../x/sys/unix/syscall_darwin_libSystem.go    |   33 +
- .../x/sys/unix/syscall_dragonfly.go           |  136 +-
- .../x/sys/unix/syscall_dragonfly_amd64.go     |   21 +-
- .../golang.org/x/sys/unix/syscall_freebsd.go  |  592 ++--
- .../x/sys/unix/syscall_freebsd_386.go         |   31 +-
- .../x/sys/unix/syscall_freebsd_amd64.go       |   31 +-
- .../x/sys/unix/syscall_freebsd_arm.go         |   27 +-
- ...nfly_amd64.go => syscall_freebsd_arm64.go} |   31 +-
- .../golang.org/x/sys/unix/syscall_illumos.go  |   57 +
- vendor/golang.org/x/sys/unix/syscall_linux.go | 1030 +++++-
- .../x/sys/unix/syscall_linux_386.go           |   47 +-
- .../x/sys/unix/syscall_linux_amd64.go         |   80 +-
- .../x/sys/unix/syscall_linux_arm.go           |   64 +-
- .../x/sys/unix/syscall_linux_arm64.go         |  111 +-
- .../golang.org/x/sys/unix/syscall_linux_gc.go |   14 +
- .../x/sys/unix/syscall_linux_gc_386.go        |   16 +
- .../x/sys/unix/syscall_linux_gccgo_386.go     |   30 +
- .../x/sys/unix/syscall_linux_gccgo_arm.go     |   20 +
- .../x/sys/unix/syscall_linux_mips64x.go       |   53 +-
- .../x/sys/unix/syscall_linux_mipsx.go         |   47 +-
- .../x/sys/unix/syscall_linux_ppc64x.go        |   59 +-
- ...inux_arm64.go => syscall_linux_riscv64.go} |  118 +-
- .../x/sys/unix/syscall_linux_s390x.go         |   44 +-
- .../x/sys/unix/syscall_linux_sparc64.go       |   48 +-
- .../golang.org/x/sys/unix/syscall_netbsd.go   |  156 +-
- .../x/sys/unix/syscall_netbsd_386.go          |   21 +-
- .../x/sys/unix/syscall_netbsd_amd64.go        |   21 +-
- .../x/sys/unix/syscall_netbsd_arm.go          |   21 +-
- ...etbsd_amd64.go => syscall_netbsd_arm64.go} |   25 +-
- .../golang.org/x/sys/unix/syscall_no_getwd.go |   11 -
- .../golang.org/x/sys/unix/syscall_openbsd.go  |  199 +-
- .../x/sys/unix/syscall_openbsd_386.go         |   25 +-
- .../x/sys/unix/syscall_openbsd_amd64.go       |   25 +-
- .../x/sys/unix/syscall_openbsd_arm.go         |   27 +-
- .../x/sys/unix/syscall_openbsd_arm64.go       |   41 +
- .../golang.org/x/sys/unix/syscall_solaris.go  |  128 +-
- .../x/sys/unix/syscall_solaris_amd64.go       |   24 +-
- vendor/golang.org/x/sys/unix/syscall_unix.go  |  176 +-
- .../golang.org/x/sys/unix/syscall_unix_gc.go  |    2 +-
- ...l_unix_gc.go => syscall_unix_gc_ppc64x.go} |   21 +-
- vendor/golang.org/x/sys/unix/timestruct.go    |   82 +
- .../unix/{types_netbsd.go => types_aix.go}    |  196 +-
- vendor/golang.org/x/sys/unix/types_darwin.go  |   41 +-
- .../golang.org/x/sys/unix/types_dragonfly.go  |   66 +-
- vendor/golang.org/x/sys/unix/types_freebsd.go |  178 +-
- vendor/golang.org/x/sys/unix/types_netbsd.go  |   73 +-
- vendor/golang.org/x/sys/unix/types_openbsd.go |   78 +-
- vendor/golang.org/x/sys/unix/types_solaris.go |   54 +-
- .../golang.org/x/sys/unix/unveil_openbsd.go   |   42 +
- vendor/golang.org/x/sys/unix/xattr_bsd.go     |  240 ++
- .../golang.org/x/sys/unix/zerrors_aix_ppc.go  | 1384 ++++++++
- .../x/sys/unix/zerrors_aix_ppc64.go           | 1385 ++++++++
- .../x/sys/unix/zerrors_darwin_386.go          |  391 ++-
- .../x/sys/unix/zerrors_darwin_amd64.go        |  391 ++-
- .../x/sys/unix/zerrors_darwin_arm.go          |  391 ++-
- .../x/sys/unix/zerrors_darwin_arm64.go        |  391 ++-
- .../x/sys/unix/zerrors_dragonfly_amd64.go     |  355 ++-
- .../x/sys/unix/zerrors_freebsd_386.go         |  508 ++-
- .../x/sys/unix/zerrors_freebsd_amd64.go       |  506 ++-
- .../x/sys/unix/zerrors_freebsd_arm.go         |  368 ++-
- ...ebsd_amd64.go => zerrors_freebsd_arm64.go} |  509 ++-
- vendor/golang.org/x/sys/unix/zerrors_linux.go | 2469 +++++++++++++++
- .../x/sys/unix/zerrors_linux_386.go           | 2690 ++++------------
- .../x/sys/unix/zerrors_linux_amd64.go         | 2691 ++++------------
- .../x/sys/unix/zerrors_linux_arm.go           | 2701 ++++------------
- .../x/sys/unix/zerrors_linux_arm64.go         | 2673 ++++------------
- .../x/sys/unix/zerrors_linux_mips.go          | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mips64.go        | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mips64le.go      | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mipsle.go        | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_ppc64.go         | 2816 ++++-------------
- .../x/sys/unix/zerrors_linux_ppc64le.go       | 2816 ++++-------------
- .../x/sys/unix/zerrors_linux_riscv64.go       |  771 +++++
- .../x/sys/unix/zerrors_linux_s390x.go         | 2812 ++++------------
- .../x/sys/unix/zerrors_linux_sparc64.go       | 2013 +++---------
- .../x/sys/unix/zerrors_netbsd_386.go          |  325 +-
- .../x/sys/unix/zerrors_netbsd_amd64.go        |  325 +-
- .../x/sys/unix/zerrors_netbsd_arm.go          |  325 +-
- ...etbsd_amd64.go => zerrors_netbsd_arm64.go} |  327 +-
- .../x/sys/unix/zerrors_openbsd_386.go         |  339 +-
- .../x/sys/unix/zerrors_openbsd_amd64.go       |  576 ++--
- .../x/sys/unix/zerrors_openbsd_arm.go         |  333 +-
- ...nbsd_amd64.go => zerrors_openbsd_arm64.go} |  605 ++--
- .../x/sys/unix/zerrors_solaris_amd64.go       |  380 ++-
- .../x/sys/unix/zptrace_armnn_linux.go         |   41 +
- .../x/sys/unix/zptrace_linux_arm64.go         |   17 +
- .../x/sys/unix/zptrace_mipsnn_linux.go        |   50 +
- .../x/sys/unix/zptrace_mipsnnle_linux.go      |   50 +
- .../x/sys/unix/zptrace_x86_linux.go           |   80 +
- .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1484 +++++++++
- ..._netbsd_amd64.go => zsyscall_aix_ppc64.go} |  936 +++---
- .../x/sys/unix/zsyscall_aix_ppc64_gc.go       | 1192 +++++++
- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go    | 1070 +++++++
- ...win_arm.go => zsyscall_darwin_386.1_11.go} |  416 ++-
- .../x/sys/unix/zsyscall_darwin_386.1_13.go    |   41 +
- .../x/sys/unix/zsyscall_darwin_386.1_13.s     |   12 +
- .../x/sys/unix/zsyscall_darwin_386.go         | 1314 ++++++--
- .../x/sys/unix/zsyscall_darwin_386.s          |  284 ++
- ...arm64.go => zsyscall_darwin_amd64.1_11.go} |  416 ++-
- .../x/sys/unix/zsyscall_darwin_amd64.1_13.go  |   41 +
- .../x/sys/unix/zsyscall_darwin_amd64.1_13.s   |   12 +
- .../x/sys/unix/zsyscall_darwin_amd64.go       | 1314 ++++++--
- .../x/sys/unix/zsyscall_darwin_amd64.s        |  284 ++
- ...win_arm.go => zsyscall_darwin_arm.1_11.go} |  389 ++-
- .../x/sys/unix/zsyscall_darwin_arm.1_13.go    |   41 +
- .../x/sys/unix/zsyscall_darwin_arm.1_13.s     |   12 +
- .../x/sys/unix/zsyscall_darwin_arm.go         | 1301 ++++++--
- .../x/sys/unix/zsyscall_darwin_arm.s          |  282 ++
- ...arm64.go => zsyscall_darwin_arm64.1_11.go} |  389 ++-
- .../x/sys/unix/zsyscall_darwin_arm64.1_13.go  |   41 +
- .../x/sys/unix/zsyscall_darwin_arm64.1_13.s   |   12 +
- .../x/sys/unix/zsyscall_darwin_arm64.go       | 1301 ++++++--
- .../x/sys/unix/zsyscall_darwin_arm64.s        |  282 ++
- .../x/sys/unix/zsyscall_dragonfly_amd64.go    |  238 +-
- .../x/sys/unix/zsyscall_freebsd_386.go        |  204 +-
- .../x/sys/unix/zsyscall_freebsd_amd64.go      |  204 +-
- .../x/sys/unix/zsyscall_freebsd_arm.go        |  204 +-
- ...bsd_amd64.go => zsyscall_freebsd_arm64.go} |  206 +-
- .../x/sys/unix/zsyscall_illumos_amd64.go      |   87 +
- ...scall_linux_s390x.go => zsyscall_linux.go} |  774 ++---
- .../x/sys/unix/zsyscall_linux_386.go          | 1573 +--------
- .../x/sys/unix/zsyscall_linux_amd64.go        | 1607 +---------
- .../x/sys/unix/zsyscall_linux_arm.go          | 1626 +---------
- .../x/sys/unix/zsyscall_linux_arm64.go        | 1513 +--------
- .../x/sys/unix/zsyscall_linux_mips.go         | 1567 +--------
- .../x/sys/unix/zsyscall_linux_mips64.go       | 1552 +--------
- .../x/sys/unix/zsyscall_linux_mips64le.go     | 1552 +--------
- .../x/sys/unix/zsyscall_linux_mipsle.go       | 1567 +--------
- .../x/sys/unix/zsyscall_linux_ppc64.go        | 1586 +---------
- .../x/sys/unix/zsyscall_linux_ppc64le.go      | 1586 +---------
- .../x/sys/unix/zsyscall_linux_riscv64.go      |  582 ++++
- .../x/sys/unix/zsyscall_linux_s390x.go        | 1570 +--------
- .../x/sys/unix/zsyscall_linux_sparc64.go      | 1247 +-------
- .../x/sys/unix/zsyscall_netbsd_386.go         |  551 +++-
- .../x/sys/unix/zsyscall_netbsd_amd64.go       |  551 +++-
- .../x/sys/unix/zsyscall_netbsd_arm.go         |  551 +++-
- ...ebsd_amd64.go => zsyscall_netbsd_arm64.go} |  262 +-
- .../x/sys/unix/zsyscall_openbsd_386.go        |  338 +-
- .../x/sys/unix/zsyscall_openbsd_amd64.go      |  338 +-
- .../x/sys/unix/zsyscall_openbsd_arm.go        |  338 +-
- ...arwin_386.go => zsyscall_openbsd_arm64.go} |  289 +-
- .../x/sys/unix/zsyscall_solaris_amd64.go      |  382 ++-
- ...sctl_openbsd.go => zsysctl_openbsd_386.go} |    4 +-
- ...tl_openbsd.go => zsysctl_openbsd_amd64.go} |   42 +-
- ...sctl_openbsd.go => zsysctl_openbsd_arm.go} |    6 +-
- ...tl_openbsd.go => zsysctl_openbsd_arm64.go} |   47 +-
- .../x/sys/unix/zsysnum_darwin_386.go          |   60 +-
- .../x/sys/unix/zsysnum_darwin_amd64.go        |   62 +-
- .../x/sys/unix/zsysnum_darwin_arm.go          |   14 +-
- .../x/sys/unix/zsysnum_darwin_arm64.go        |   14 +-
- .../x/sys/unix/zsysnum_dragonfly_amd64.go     |  176 +-
- .../x/sys/unix/zsysnum_freebsd_386.go         |  731 +++--
- .../x/sys/unix/zsysnum_freebsd_amd64.go       |  731 +++--
- .../x/sys/unix/zsysnum_freebsd_arm.go         |  731 +++--
- .../x/sys/unix/zsysnum_freebsd_arm64.go       |  396 +++
- .../x/sys/unix/zsysnum_linux_386.go           |  808 ++---
- .../x/sys/unix/zsysnum_linux_amd64.go         |   19 +-
- .../x/sys/unix/zsysnum_linux_arm.go           |  745 ++---
- .../x/sys/unix/zsysnum_linux_arm64.go         |   20 +-
- .../x/sys/unix/zsysnum_linux_mips.go          |  779 ++---
- .../x/sys/unix/zsysnum_linux_mips64.go        |   19 +-
- .../x/sys/unix/zsysnum_linux_mips64le.go      |   19 +-
- .../x/sys/unix/zsysnum_linux_mipsle.go        |  779 ++---
- .../x/sys/unix/zsysnum_linux_ppc64.go         |   33 +-
- .../x/sys/unix/zsysnum_linux_ppc64le.go       |   33 +-
- ...inux_arm64.go => zsysnum_linux_riscv64.go} |   23 +-
- .../x/sys/unix/zsysnum_linux_s390x.go         |   80 +-
- .../x/sys/unix/zsysnum_linux_sparc64.go       |   35 +-
- .../x/sys/unix/zsysnum_netbsd_386.go          |    4 +-
- .../x/sys/unix/zsysnum_netbsd_amd64.go        |    4 +-
- .../x/sys/unix/zsysnum_netbsd_arm.go          |    4 +-
- ..._netbsd_386.go => zsysnum_netbsd_arm64.go} |    6 +-
- .../x/sys/unix/zsysnum_openbsd_386.go         |  223 +-
- .../x/sys/unix/zsysnum_openbsd_amd64.go       |  223 +-
- .../x/sys/unix/zsysnum_openbsd_arm.go         |  217 +-
- ...penbsd_arm.go => zsysnum_openbsd_arm64.go} |  218 +-
- .../x/sys/unix/zsysnum_solaris_amd64.go       |   13 -
- .../golang.org/x/sys/unix/ztypes_aix_ppc.go   |  352 +++
- .../golang.org/x/sys/unix/ztypes_aix_ppc64.go |  356 +++
- .../x/sys/unix/ztypes_darwin_386.go           |  195 +-
- .../x/sys/unix/ztypes_darwin_amd64.go         |  241 +-
- .../x/sys/unix/ztypes_darwin_arm.go           |  195 +-
- .../x/sys/unix/ztypes_darwin_arm64.go         |  246 +-
- .../x/sys/unix/ztypes_dragonfly_amd64.go      |  213 +-
- .../x/sys/unix/ztypes_freebsd_386.go          |  426 ++-
- .../x/sys/unix/ztypes_freebsd_amd64.go        |  448 ++-
- .../x/sys/unix/ztypes_freebsd_arm.go          |  427 ++-
- ...eebsd_amd64.go => ztypes_freebsd_arm64.go} |  430 ++-
- vendor/golang.org/x/sys/unix/ztypes_linux.go  | 2340 ++++++++++++++
- .../golang.org/x/sys/unix/ztypes_linux_386.go |  878 ++---
- .../x/sys/unix/ztypes_linux_amd64.go          |  881 ++----
- .../golang.org/x/sys/unix/ztypes_linux_arm.go |  899 +++---
- .../x/sys/unix/ztypes_linux_arm64.go          |  883 ++----
- .../x/sys/unix/ztypes_linux_mips.go           |  864 ++---
- .../x/sys/unix/ztypes_linux_mips64.go         |  880 ++----
- .../x/sys/unix/ztypes_linux_mips64le.go       |  880 ++----
- .../x/sys/unix/ztypes_linux_mipsle.go         |  864 ++---
- .../x/sys/unix/ztypes_linux_ppc64.go          |  889 ++----
- .../x/sys/unix/ztypes_linux_ppc64le.go        |  889 ++----
- .../x/sys/unix/ztypes_linux_riscv64.go        |  621 ++++
- .../x/sys/unix/ztypes_linux_s390x.go          |  842 ++---
- .../x/sys/unix/ztypes_linux_sparc64.go        |  910 +++---
- .../x/sys/unix/ztypes_netbsd_386.go           |  145 +-
- .../x/sys/unix/ztypes_netbsd_amd64.go         |  152 +-
- .../x/sys/unix/ztypes_netbsd_arm.go           |  151 +-
- ...netbsd_amd64.go => ztypes_netbsd_arm64.go} |  154 +-
- .../x/sys/unix/ztypes_openbsd_386.go          |  173 +-
- .../x/sys/unix/ztypes_openbsd_amd64.go        |  264 +-
- .../x/sys/unix/ztypes_openbsd_arm.go          |  255 +-
- ...enbsd_amd64.go => ztypes_openbsd_arm64.go} |  260 +-
- .../x/sys/unix/ztypes_solaris_amd64.go        |  239 +-
- 293 files changed, 60017 insertions(+), 59731 deletions(-)
- create mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/aliases.go
- create mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_freebsd_arm64.s} (71%)
- create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_netbsd_arm64.s} (60%)
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_openbsd_arm64.s} (76%)
- create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go
- delete mode 100644 vendor/golang.org/x/sys/unix/env_unset.go
- create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
- rename vendor/golang.org/x/sys/unix/{flock.go => fcntl.go} (54%)
- create mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go
- rename vendor/golang.org/x/sys/unix/{flock_linux_32bit.go => fcntl_linux_32bit.go} (100%)
- create mode 100644 vendor/golang.org/x/sys/unix/fdset.go
- delete mode 100644 vendor/golang.org/x/sys/unix/file_unix.go
- delete mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go
- create mode 100644 vendor/golang.org/x/sys/unix/mkasm_darwin.go
- create mode 100644 vendor/golang.org/x/sys/unix/mkmerge.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksysnum.go
- delete mode 100644 vendor/golang.org/x/sys/unix/openbsd_pledge.go
- create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go
- create mode 100644 vendor/golang.org/x/sys/unix/pledge_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdents.go
- create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
- create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
- create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
- copy vendor/golang.org/x/sys/unix/{syscall_dragonfly_amd64.go => syscall_freebsd_arm64.go} (59%)
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_illumos.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
- copy vendor/golang.org/x/sys/unix/{syscall_linux_arm64.go => syscall_linux_riscv64.go} (68%)
- copy vendor/golang.org/x/sys/unix/{syscall_netbsd_amd64.go => syscall_netbsd_arm64.go} (50%)
- delete mode 100644 vendor/golang.org/x/sys/unix/syscall_no_getwd.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
- copy vendor/golang.org/x/sys/unix/{syscall_unix_gc.go => syscall_unix_gc_ppc64x.go} (51%)
- create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go
- copy vendor/golang.org/x/sys/unix/{types_netbsd.go => types_aix.go} (53%)
- create mode 100644 vendor/golang.org/x/sys/unix/unveil_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
- copy vendor/golang.org/x/sys/unix/{zerrors_freebsd_amd64.go => zerrors_freebsd_arm64.go} (80%)
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{zerrors_netbsd_amd64.go => zerrors_netbsd_arm64.go} (89%)
- copy vendor/golang.org/x/sys/unix/{zerrors_openbsd_amd64.go => zerrors_openbsd_arm64.go} (76%)
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_netbsd_amd64.go => zsyscall_aix_ppc64.go} (57%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm.go => zsyscall_darwin_386.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm64.go => zsyscall_darwin_amd64.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm.go => zsyscall_darwin_arm.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm64.go => zsyscall_darwin_arm64.1_11.go} (84%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_freebsd_amd64.go => zsyscall_freebsd_arm64.go} (90%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_linux_s390x.go => zsyscall_linux.go} (79%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_freebsd_amd64.go => zsyscall_netbsd_arm64.go} (92%)
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_386.go => zsyscall_openbsd_arm64.go} (87%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_386.go} (99%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_amd64.go} (91%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_arm.go} (99%)
- rename vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_arm64.go} (91%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
- copy vendor/golang.org/x/sys/unix/{zsysnum_linux_arm64.go => zsysnum_linux_riscv64.go} (92%)
- copy vendor/golang.org/x/sys/unix/{zsysnum_netbsd_386.go => zsysnum_netbsd_arm64.go} (99%)
- copy vendor/golang.org/x/sys/unix/{zsysnum_openbsd_arm.go => zsysnum_openbsd_arm64.go} (67%)
- delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
- copy vendor/golang.org/x/sys/unix/{ztypes_freebsd_amd64.go => ztypes_freebsd_arm64.go} (54%)
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{ztypes_netbsd_amd64.go => ztypes_netbsd_arm64.go} (73%)
- copy vendor/golang.org/x/sys/unix/{ztypes_openbsd_amd64.go => ztypes_openbsd_arm64.go} (58%)
-
-diff --git a/Gopkg.lock b/Gopkg.lock
-index b4333103..01a867d5 100644
---- a/Gopkg.lock
-+++ b/Gopkg.lock
-@@ -112,11 +112,11 @@
- 
- [[projects]]
-   branch = "master"
--  digest = "1:51912e607c5e28a89fdc7e41d3377b92086ab7f76ded236765dbf98d0a704c5d"
-+  digest = "1:f8181d8aa1e268255316ec12ab5402d4f671b1da6d7ad40abdf2f92c0404b67d"
-   name = "golang.org/x/sys"
-   packages = ["unix"]
-   pruneopts = "NUT"
--  revision = "bb24a47a89eac6c1227fbcb2ae37a8b9ed323366"
-+  revision = "1957bb5e6d1f523308b49060df02171d06ddfc77"
- 
- [[projects]]
-   branch = "v2"
-diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go
-new file mode 100644
-index 00000000..6e5c81ac
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/affinity_linux.go
-@@ -0,0 +1,86 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// CPU affinity functions
-+
-+package unix
-+
-+import (
-+	"math/bits"
-+	"unsafe"
-+)
-+
-+const cpuSetSize = _CPU_SETSIZE / _NCPUBITS
-+
-+// CPUSet represents a CPU affinity mask.
-+type CPUSet [cpuSetSize]cpuMask
-+
-+func schedAffinity(trap uintptr, pid int, set *CPUSet) error {
-+	_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))
-+	if e != 0 {
-+		return errnoErr(e)
-+	}
-+	return nil
-+}
-+
-+// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.
-+// If pid is 0 the calling thread is used.
-+func SchedGetaffinity(pid int, set *CPUSet) error {
-+	return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)
-+}
-+
-+// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.
-+// If pid is 0 the calling thread is used.
-+func SchedSetaffinity(pid int, set *CPUSet) error {
-+	return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)
-+}
-+
-+// Zero clears the set s, so that it contains no CPUs.
-+func (s *CPUSet) Zero() {
-+	for i := range s {
-+		s[i] = 0
-+	}
-+}
-+
-+func cpuBitsIndex(cpu int) int {
-+	return cpu / _NCPUBITS
-+}
-+
-+func cpuBitsMask(cpu int) cpuMask {
-+	return cpuMask(1 << (uint(cpu) % _NCPUBITS))
-+}
-+
-+// Set adds cpu to the set s.
-+func (s *CPUSet) Set(cpu int) {
-+	i := cpuBitsIndex(cpu)
-+	if i < len(s) {
-+		s[i] |= cpuBitsMask(cpu)
-+	}
-+}
-+
-+// Clear removes cpu from the set s.
-+func (s *CPUSet) Clear(cpu int) {
-+	i := cpuBitsIndex(cpu)
-+	if i < len(s) {
-+		s[i] &^= cpuBitsMask(cpu)
-+	}
-+}
-+
-+// IsSet reports whether cpu is in the set s.
-+func (s *CPUSet) IsSet(cpu int) bool {
-+	i := cpuBitsIndex(cpu)
-+	if i < len(s) {
-+		return s[i]&cpuBitsMask(cpu) != 0
-+	}
-+	return false
-+}
-+
-+// Count returns the number of CPUs in the set s.
-+func (s *CPUSet) Count() int {
-+	c := 0
-+	for _, b := range s {
-+		c += bits.OnesCount64(uint64(b))
-+	}
-+	return c
-+}
-diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go
-new file mode 100644
-index 00000000..951fce4d
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/aliases.go
-@@ -0,0 +1,14 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build go1.9
-+
-+package unix
-+
-+import "syscall"
-+
-+type Signal = syscall.Signal
-+type Errno = syscall.Errno
-+type SysProcAttr = syscall.SysProcAttr
-diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
-new file mode 100644
-index 00000000..06f84b85
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
-@@ -0,0 +1,17 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build !gccgo
-+
-+#include "textflag.h"
-+
-+//
-+// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
-+//
-+
-+TEXT ·syscall6(SB),NOSPLIT,$0-88
-+	JMP	syscall·syscall6(SB)
-+
-+TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
-+	JMP	syscall·rawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-index d5ed6726..603dd572 100644
---- a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-@@ -13,17 +13,17 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-64
-+TEXT	·Syscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·Syscall(SB)
- 
--TEXT	·Syscall6(SB),NOSPLIT,$0-88
-+TEXT	·Syscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·Syscall6(SB)
- 
--TEXT	·Syscall9(SB),NOSPLIT,$0-112
-+TEXT	·Syscall9(SB),NOSPLIT,$0-104
- 	JMP	syscall·Syscall9(SB)
- 
--TEXT ·RawSyscall(SB),NOSPLIT,$0-64
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·RawSyscall(SB)
- 
--TEXT	·RawSyscall6(SB),NOSPLIT,$0-88
-+TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·RawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-similarity index 71%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-index 724e580c..d9318cbf 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-@@ -1,15 +1,13 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
- 
- #include "textflag.h"
- 
- //
--// System calls for mips64, Linux
-+// System call support for ARM64, FreeBSD
- //
- 
- // Just jump to package syscall's implementation for all these functions.
-@@ -21,7 +19,10 @@ TEXT	·Syscall(SB),NOSPLIT,$0-56
- TEXT	·Syscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·Syscall6(SB)
- 
--TEXT	·RawSyscall(SB),NOSPLIT,$0-56
-+TEXT	·Syscall9(SB),NOSPLIT,$0-104
-+	JMP	syscall·Syscall9(SB)
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·RawSyscall(SB)
- 
- TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s
-index 4db29093..448bebbb 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_386.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_386.s
-@@ -10,21 +10,51 @@
- // System calls for 386, Linux
- //
- 
-+// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
-+// instead of the glibc-specific "CALL 0x10(GS)".
-+#define INVOKE_SYSCALL	INT	$0x80
-+
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- 	JMP	syscall·Syscall(SB)
- 
--TEXT	·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- 	JMP	syscall·Syscall6(SB)
- 
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+	CALL	runtime·entersyscall(SB)
-+	MOVL	trap+0(FP), AX  // syscall entry
-+	MOVL	a1+4(FP), BX
-+	MOVL	a2+8(FP), CX
-+	MOVL	a3+12(FP), DX
-+	MOVL	$0, SI
-+	MOVL	$0, DI
-+	INVOKE_SYSCALL
-+	MOVL	AX, r1+16(FP)
-+	MOVL	DX, r2+20(FP)
-+	CALL	runtime·exitsyscall(SB)
-+	RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- 	JMP	syscall·RawSyscall(SB)
- 
--TEXT	·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- 	JMP	syscall·RawSyscall6(SB)
- 
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+	MOVL	trap+0(FP), AX  // syscall entry
-+	MOVL	a1+4(FP), BX
-+	MOVL	a2+8(FP), CX
-+	MOVL	a3+12(FP), DX
-+	MOVL	$0, SI
-+	MOVL	$0, DI
-+	INVOKE_SYSCALL
-+	MOVL	AX, r1+16(FP)
-+	MOVL	DX, r2+20(FP)
-+	RET
-+
- TEXT ·socketcall(SB),NOSPLIT,$0-36
- 	JMP	syscall·socketcall(SB)
- 
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-index 44e25c62..c6468a95 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-@@ -13,17 +13,45 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·Syscall(SB)
- 
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·Syscall6(SB)
- 
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	CALL	runtime·entersyscall(SB)
-+	MOVQ	a1+8(FP), DI
-+	MOVQ	a2+16(FP), SI
-+	MOVQ	a3+24(FP), DX
-+	MOVQ	$0, R10
-+	MOVQ	$0, R8
-+	MOVQ	$0, R9
-+	MOVQ	trap+0(FP), AX	// syscall entry
-+	SYSCALL
-+	MOVQ	AX, r1+32(FP)
-+	MOVQ	DX, r2+40(FP)
-+	CALL	runtime·exitsyscall(SB)
-+	RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·RawSyscall(SB)
- 
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·RawSyscall6(SB)
- 
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOVQ	a1+8(FP), DI
-+	MOVQ	a2+16(FP), SI
-+	MOVQ	a3+24(FP), DX
-+	MOVQ	$0, R10
-+	MOVQ	$0, R8
-+	MOVQ	$0, R9
-+	MOVQ	trap+0(FP), AX	// syscall entry
-+	SYSCALL
-+	MOVQ	AX, r1+32(FP)
-+	MOVQ	DX, r2+40(FP)
-+	RET
-+
- TEXT ·gettimeofday(SB),NOSPLIT,$0-16
- 	JMP	syscall·gettimeofday(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-index cf0b5746..cf0f3575 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-@@ -13,17 +13,44 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- 	B	syscall·Syscall(SB)
- 
--TEXT	·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- 	B	syscall·Syscall6(SB)
- 
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+	BL	runtime·entersyscall(SB)
-+	MOVW	trap+0(FP), R7
-+	MOVW	a1+4(FP), R0
-+	MOVW	a2+8(FP), R1
-+	MOVW	a3+12(FP), R2
-+	MOVW	$0, R3
-+	MOVW	$0, R4
-+	MOVW	$0, R5
-+	SWI	$0
-+	MOVW	R0, r1+16(FP)
-+	MOVW	$0, R0
-+	MOVW	R0, r2+20(FP)
-+	BL	runtime·exitsyscall(SB)
-+	RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- 	B	syscall·RawSyscall(SB)
- 
--TEXT	·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- 	B	syscall·RawSyscall6(SB)
- 
--TEXT ·seek(SB),NOSPLIT,$0-32
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+	MOVW	trap+0(FP), R7	// syscall entry
-+	MOVW	a1+4(FP), R0
-+	MOVW	a2+8(FP), R1
-+	MOVW	a3+12(FP), R2
-+	SWI	$0
-+	MOVW	R0, r1+16(FP)
-+	MOVW	$0, R0
-+	MOVW	R0, r2+20(FP)
-+	RET
-+
-+TEXT ·seek(SB),NOSPLIT,$0-28
- 	B	syscall·seek(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-index 4be9bfed..afe6fdf6 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-@@ -11,14 +11,42 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- 	B	syscall·Syscall(SB)
- 
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- 	B	syscall·Syscall6(SB)
- 
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	BL	runtime·entersyscall(SB)
-+	MOVD	a1+8(FP), R0
-+	MOVD	a2+16(FP), R1
-+	MOVD	a3+24(FP), R2
-+	MOVD	$0, R3
-+	MOVD	$0, R4
-+	MOVD	$0, R5
-+	MOVD	trap+0(FP), R8	// syscall entry
-+	SVC
-+	MOVD	R0, r1+32(FP)	// r1
-+	MOVD	R1, r2+40(FP)	// r2
-+	BL	runtime·exitsyscall(SB)
-+	RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	B	syscall·RawSyscall(SB)
- 
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- 	B	syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOVD	a1+8(FP), R0
-+	MOVD	a2+16(FP), R1
-+	MOVD	a3+24(FP), R2
-+	MOVD	$0, R3
-+	MOVD	$0, R4
-+	MOVD	$0, R5
-+	MOVD	trap+0(FP), R8	// syscall entry
-+	SVC
-+	MOVD	R0, r1+32(FP)
-+	MOVD	R1, r2+40(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-index 724e580c..ab9d6383 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-@@ -15,14 +15,42 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·Syscall(SB)
- 
--TEXT	·Syscall6(SB),NOSPLIT,$0-80
-+TEXT ·Syscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·Syscall6(SB)
- 
--TEXT	·RawSyscall(SB),NOSPLIT,$0-56
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	JAL	runtime·entersyscall(SB)
-+	MOVV	a1+8(FP), R4
-+	MOVV	a2+16(FP), R5
-+	MOVV	a3+24(FP), R6
-+	MOVV	R0, R7
-+	MOVV	R0, R8
-+	MOVV	R0, R9
-+	MOVV	trap+0(FP), R2	// syscall entry
-+	SYSCALL
-+	MOVV	R2, r1+32(FP)
-+	MOVV	R3, r2+40(FP)
-+	JAL	runtime·exitsyscall(SB)
-+	RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·RawSyscall(SB)
- 
--TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOVV	a1+8(FP), R4
-+	MOVV	a2+16(FP), R5
-+	MOVV	a3+24(FP), R6
-+	MOVV	R0, R7
-+	MOVV	R0, R8
-+	MOVV	R0, R9
-+	MOVV	trap+0(FP), R2	// syscall entry
-+	SYSCALL
-+	MOVV	R2, r1+32(FP)
-+	MOVV	R3, r2+40(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-index 2ea42575..99e53990 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-@@ -15,17 +15,40 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- 	JMP syscall·Syscall(SB)
- 
--TEXT	·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- 	JMP syscall·Syscall6(SB)
- 
--TEXT	·Syscall9(SB),NOSPLIT,$0-52
-+TEXT ·Syscall9(SB),NOSPLIT,$0-52
- 	JMP syscall·Syscall9(SB)
- 
--TEXT	·RawSyscall(SB),NOSPLIT,$0-28
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+	JAL	runtime·entersyscall(SB)
-+	MOVW	a1+4(FP), R4
-+	MOVW	a2+8(FP), R5
-+	MOVW	a3+12(FP), R6
-+	MOVW	R0, R7
-+	MOVW	trap+0(FP), R2	// syscall entry
-+	SYSCALL
-+	MOVW	R2, r1+16(FP)	// r1
-+	MOVW	R3, r2+20(FP)	// r2
-+	JAL	runtime·exitsyscall(SB)
-+	RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- 	JMP syscall·RawSyscall(SB)
- 
--TEXT	·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- 	JMP syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+	MOVW	a1+4(FP), R4
-+	MOVW	a2+8(FP), R5
-+	MOVW	a3+12(FP), R6
-+	MOVW	trap+0(FP), R2	// syscall entry
-+	SYSCALL
-+	MOVW	R2, r1+16(FP)
-+	MOVW	R3, r2+20(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-index 8d231feb..88f71255 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-@@ -15,14 +15,30 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
--TEXT	·Syscall(SB),NOSPLIT,$0-56
--	BR	syscall·Syscall(SB)
--
--TEXT ·Syscall6(SB),NOSPLIT,$0-80
--	BR	syscall·Syscall6(SB)
--
--TEXT ·RawSyscall(SB),NOSPLIT,$0-56
--	BR	syscall·RawSyscall(SB)
--
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
--	BR	syscall·RawSyscall6(SB)
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	BL	runtime·entersyscall(SB)
-+	MOVD	a1+8(FP), R3
-+	MOVD	a2+16(FP), R4
-+	MOVD	a3+24(FP), R5
-+	MOVD	R0, R6
-+	MOVD	R0, R7
-+	MOVD	R0, R8
-+	MOVD	trap+0(FP), R9	// syscall entry
-+	SYSCALL R9
-+	MOVD	R3, r1+32(FP)
-+	MOVD	R4, r2+40(FP)
-+	BL	runtime·exitsyscall(SB)
-+	RET
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOVD	a1+8(FP), R3
-+	MOVD	a2+16(FP), R4
-+	MOVD	a3+24(FP), R5
-+	MOVD	R0, R6
-+	MOVD	R0, R7
-+	MOVD	R0, R8
-+	MOVD	trap+0(FP), R9	// syscall entry
-+	SYSCALL R9
-+	MOVD	R3, r1+32(FP)
-+	MOVD	R4, r2+40(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
-new file mode 100644
-index 00000000..3cfefed2
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
-@@ -0,0 +1,47 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build riscv64,!gccgo
-+
-+#include "textflag.h"
-+
-+//
-+// System calls for linux/riscv64.
-+//
-+// Where available, just jump to package syscall's implementation of
-+// these functions.
-+
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
-+	JMP	syscall·Syscall(SB)
-+
-+TEXT ·Syscall6(SB),NOSPLIT,$0-80
-+	JMP	syscall·Syscall6(SB)
-+
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	CALL	runtime·entersyscall(SB)
-+	MOV	a1+8(FP), A0
-+	MOV	a2+16(FP), A1
-+	MOV	a3+24(FP), A2
-+	MOV	trap+0(FP), A7	// syscall entry
-+	ECALL
-+	MOV	A0, r1+32(FP)	// r1
-+	MOV	A1, r2+40(FP)	// r2
-+	CALL	runtime·exitsyscall(SB)
-+	RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-+	JMP	syscall·RawSyscall(SB)
-+
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-+	JMP	syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOV	a1+8(FP), A0
-+	MOV	a2+16(FP), A1
-+	MOV	a3+24(FP), A2
-+	MOV	trap+0(FP), A7	// syscall entry
-+	ECALL
-+	MOV	A0, r1+32(FP)
-+	MOV	A1, r2+40(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-index 11889859..a5a863c6 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-@@ -21,8 +21,36 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- 	BR	syscall·Syscall6(SB)
- 
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+	BL	runtime·entersyscall(SB)
-+	MOVD	a1+8(FP), R2
-+	MOVD	a2+16(FP), R3
-+	MOVD	a3+24(FP), R4
-+	MOVD	$0, R5
-+	MOVD	$0, R6
-+	MOVD	$0, R7
-+	MOVD	trap+0(FP), R1	// syscall entry
-+	SYSCALL
-+	MOVD	R2, r1+32(FP)
-+	MOVD	R3, r2+40(FP)
-+	BL	runtime·exitsyscall(SB)
-+	RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- 	BR	syscall·RawSyscall(SB)
- 
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- 	BR	syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+	MOVD	a1+8(FP), R2
-+	MOVD	a2+16(FP), R3
-+	MOVD	a3+24(FP), R4
-+	MOVD	$0, R5
-+	MOVD	$0, R6
-+	MOVD	$0, R7
-+	MOVD	trap+0(FP), R1	// syscall entry
-+	SYSCALL
-+	MOVD	R2, r1+32(FP)
-+	MOVD	R3, r2+40(FP)
-+	RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-similarity index 60%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-index 724e580c..6f98ba5a 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-@@ -1,28 +1,29 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
- 
- #include "textflag.h"
- 
- //
--// System calls for mips64, Linux
-+// System call support for ARM64, NetBSD
- //
- 
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
- 
- TEXT	·Syscall(SB),NOSPLIT,$0-56
--	JMP	syscall·Syscall(SB)
-+	B	syscall·Syscall(SB)
- 
- TEXT	·Syscall6(SB),NOSPLIT,$0-80
--	JMP	syscall·Syscall6(SB)
-+	B	syscall·Syscall6(SB)
-+
-+TEXT	·Syscall9(SB),NOSPLIT,$0-104
-+	B	syscall·Syscall9(SB)
- 
- TEXT	·RawSyscall(SB),NOSPLIT,$0-56
--	JMP	syscall·RawSyscall(SB)
-+	B	syscall·RawSyscall(SB)
- 
- TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
--	JMP	syscall·RawSyscall6(SB)
-+	B	syscall·RawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-similarity index 76%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-index 724e580c..0cedea3d 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-@@ -1,15 +1,13 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
- 
- #include "textflag.h"
- 
- //
--// System calls for mips64, Linux
-+// System call support for arm64, OpenBSD
- //
- 
- // Just jump to package syscall's implementation for all these functions.
-@@ -21,6 +19,9 @@ TEXT	·Syscall(SB),NOSPLIT,$0-56
- TEXT	·Syscall6(SB),NOSPLIT,$0-80
- 	JMP	syscall·Syscall6(SB)
- 
-+TEXT	·Syscall9(SB),NOSPLIT,$0-104
-+	JMP	syscall·Syscall9(SB)
-+
- TEXT	·RawSyscall(SB),NOSPLIT,$0-56
- 	JMP	syscall·RawSyscall(SB)
- 
-diff --git a/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-index 6e322969..a178a614 100644
---- a/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-+++ b/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-@@ -23,6 +23,7 @@ const (
- 	HCI_CHANNEL_USER    = 1
- 	HCI_CHANNEL_MONITOR = 2
- 	HCI_CHANNEL_CONTROL = 3
-+	HCI_CHANNEL_LOGGING = 4
- )
- 
- // Socketoption Level
-diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go
-index 83b6bcea..df520487 100644
---- a/vendor/golang.org/x/sys/unix/cap_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go
-@@ -7,7 +7,7 @@
- package unix
- 
- import (
--	errorspkg "errors"
-+	"errors"
- 	"fmt"
- )
- 
-@@ -60,26 +60,26 @@ func CapRightsSet(rights *CapRights, setrights []uint64) error {
- 
- 	n := caparsize(rights)
- 	if n < capArSizeMin || n > capArSizeMax {
--		return errorspkg.New("bad rights size")
-+		return errors.New("bad rights size")
- 	}
- 
- 	for _, right := range setrights {
- 		if caprver(right) != CAP_RIGHTS_VERSION_00 {
--			return errorspkg.New("bad right version")
-+			return errors.New("bad right version")
- 		}
- 		i, err := rightToIndex(right)
- 		if err != nil {
- 			return err
- 		}
- 		if i >= n {
--			return errorspkg.New("index overflow")
-+			return errors.New("index overflow")
- 		}
- 		if capidxbit(rights.Rights[i]) != capidxbit(right) {
--			return errorspkg.New("index mismatch")
-+			return errors.New("index mismatch")
- 		}
- 		rights.Rights[i] |= right
- 		if capidxbit(rights.Rights[i]) != capidxbit(right) {
--			return errorspkg.New("index mismatch (after assign)")
-+			return errors.New("index mismatch (after assign)")
- 		}
- 	}
- 
-@@ -95,26 +95,26 @@ func CapRightsClear(rights *CapRights, clearrights []uint64) error {
- 
- 	n := caparsize(rights)
- 	if n < capArSizeMin || n > capArSizeMax {
--		return errorspkg.New("bad rights size")
-+		return errors.New("bad rights size")
- 	}
- 
- 	for _, right := range clearrights {
- 		if caprver(right) != CAP_RIGHTS_VERSION_00 {
--			return errorspkg.New("bad right version")
-+			return errors.New("bad right version")
- 		}
- 		i, err := rightToIndex(right)
- 		if err != nil {
- 			return err
- 		}
- 		if i >= n {
--			return errorspkg.New("index overflow")
-+			return errors.New("index overflow")
- 		}
- 		if capidxbit(rights.Rights[i]) != capidxbit(right) {
--			return errorspkg.New("index mismatch")
-+			return errors.New("index mismatch")
- 		}
- 		rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)
- 		if capidxbit(rights.Rights[i]) != capidxbit(right) {
--			return errorspkg.New("index mismatch (after assign)")
-+			return errors.New("index mismatch (after assign)")
- 		}
- 	}
- 
-@@ -130,22 +130,22 @@ func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {
- 
- 	n := caparsize(rights)
- 	if n < capArSizeMin || n > capArSizeMax {
--		return false, errorspkg.New("bad rights size")
-+		return false, errors.New("bad rights size")
- 	}
- 
- 	for _, right := range setrights {
- 		if caprver(right) != CAP_RIGHTS_VERSION_00 {
--			return false, errorspkg.New("bad right version")
-+			return false, errors.New("bad right version")
- 		}
- 		i, err := rightToIndex(right)
- 		if err != nil {
- 			return false, err
- 		}
- 		if i >= n {
--			return false, errorspkg.New("index overflow")
-+			return false, errors.New("index overflow")
- 		}
- 		if capidxbit(rights.Rights[i]) != capidxbit(right) {
--			return false, errorspkg.New("index mismatch")
-+			return false, errors.New("index mismatch")
- 		}
- 		if (rights.Rights[i] & right) != right {
- 			return false, nil
-diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go
-index a96f0ebc..3a6ac648 100644
---- a/vendor/golang.org/x/sys/unix/constants.go
-+++ b/vendor/golang.org/x/sys/unix/constants.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go
-new file mode 100644
-index 00000000..5e5fb451
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go
-@@ -0,0 +1,27 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used by AIX.
-+
-+package unix
-+
-+// Major returns the major component of a Linux device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev >> 16) & 0xffff)
-+}
-+
-+// Minor returns the minor component of a Linux device number.
-+func Minor(dev uint64) uint32 {
-+	return uint32(dev & 0xffff)
-+}
-+
-+// Mkdev returns a Linux device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+	return uint64(((major) << 16) | (minor))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
-new file mode 100644
-index 00000000..8b401244
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
-@@ -0,0 +1,29 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc64
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used AIX.
-+
-+package unix
-+
-+// Major returns the major component of a Linux device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev & 0x3fffffff00000000) >> 32)
-+}
-+
-+// Minor returns the minor component of a Linux device number.
-+func Minor(dev uint64) uint32 {
-+	return uint32((dev & 0x00000000ffffffff) >> 0)
-+}
-+
-+// Mkdev returns a Linux device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+	var DEVNO64 uint64
-+	DEVNO64 = 0x8000000000000000
-+	return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go
-new file mode 100644
-index 00000000..8d1dc0fa
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_darwin.go
-@@ -0,0 +1,24 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in Darwin's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of a Darwin device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev >> 24) & 0xff)
-+}
-+
-+// Minor returns the minor component of a Darwin device number.
-+func Minor(dev uint64) uint32 {
-+	return uint32(dev & 0xffffff)
-+}
-+
-+// Mkdev returns a Darwin device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+	return (uint64(major) << 24) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/vendor/golang.org/x/sys/unix/dev_dragonfly.go
-new file mode 100644
-index 00000000..8502f202
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_dragonfly.go
-@@ -0,0 +1,30 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in Dragonfly's sys/types.h header.
-+//
-+// The information below is extracted and adapted from sys/types.h:
-+//
-+// Minor gives a cookie instead of an index since in order to avoid changing the
-+// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
-+// devices that don't use them.
-+
-+package unix
-+
-+// Major returns the major component of a DragonFlyBSD device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev >> 8) & 0xff)
-+}
-+
-+// Minor returns the minor component of a DragonFlyBSD device number.
-+func Minor(dev uint64) uint32 {
-+	return uint32(dev & 0xffff00ff)
-+}
-+
-+// Mkdev returns a DragonFlyBSD device number generated from the given major and
-+// minor components.
-+func Mkdev(major, minor uint32) uint64 {
-+	return (uint64(major) << 8) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_freebsd.go b/vendor/golang.org/x/sys/unix/dev_freebsd.go
-new file mode 100644
-index 00000000..eba3b4bd
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_freebsd.go
-@@ -0,0 +1,30 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in FreeBSD's sys/types.h header.
-+//
-+// The information below is extracted and adapted from sys/types.h:
-+//
-+// Minor gives a cookie instead of an index since in order to avoid changing the
-+// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
-+// devices that don't use them.
-+
-+package unix
-+
-+// Major returns the major component of a FreeBSD device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev >> 8) & 0xff)
-+}
-+
-+// Minor returns the minor component of a FreeBSD device number.
-+func Minor(dev uint64) uint32 {
-+	return uint32(dev & 0xffff00ff)
-+}
-+
-+// Mkdev returns a FreeBSD device number generated from the given major and
-+// minor components.
-+func Mkdev(major, minor uint32) uint64 {
-+	return (uint64(major) << 8) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go
-index c902c39e..d165d6f3 100644
---- a/vendor/golang.org/x/sys/unix/dev_linux.go
-+++ b/vendor/golang.org/x/sys/unix/dev_linux.go
-@@ -34,9 +34,9 @@ func Minor(dev uint64) uint32 {
- // Mkdev returns a Linux device number generated from the given major and minor
- // components.
- func Mkdev(major, minor uint32) uint64 {
--	dev := uint64((major & 0x00000fff) << 8)
--	dev |= uint64((major & 0xfffff000) << 32)
--	dev |= uint64((minor & 0x000000ff) << 0)
--	dev |= uint64((minor & 0xffffff00) << 12)
-+	dev := (uint64(major) & 0x00000fff) << 8
-+	dev |= (uint64(major) & 0xfffff000) << 32
-+	dev |= (uint64(minor) & 0x000000ff) << 0
-+	dev |= (uint64(minor) & 0xffffff00) << 12
- 	return dev
- }
-diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go
-new file mode 100644
-index 00000000..b4a203d0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_netbsd.go
-@@ -0,0 +1,29 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in NetBSD's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of a NetBSD device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev & 0x000fff00) >> 8)
-+}
-+
-+// Minor returns the minor component of a NetBSD device number.
-+func Minor(dev uint64) uint32 {
-+	minor := uint32((dev & 0x000000ff) >> 0)
-+	minor |= uint32((dev & 0xfff00000) >> 12)
-+	return minor
-+}
-+
-+// Mkdev returns a NetBSD device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+	dev := (uint64(major) << 8) & 0x000fff00
-+	dev |= (uint64(minor) << 12) & 0xfff00000
-+	dev |= (uint64(minor) << 0) & 0x000000ff
-+	return dev
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd.go b/vendor/golang.org/x/sys/unix/dev_openbsd.go
-new file mode 100644
-index 00000000..f3430c42
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_openbsd.go
-@@ -0,0 +1,29 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in OpenBSD's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of an OpenBSD device number.
-+func Major(dev uint64) uint32 {
-+	return uint32((dev & 0x0000ff00) >> 8)
-+}
-+
-+// Minor returns the minor component of an OpenBSD device number.
-+func Minor(dev uint64) uint32 {
-+	minor := uint32((dev & 0x000000ff) >> 0)
-+	minor |= uint32((dev & 0xffff0000) >> 8)
-+	return minor
-+}
-+
-+// Mkdev returns an OpenBSD device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+	dev := (uint64(major) << 8) & 0x0000ff00
-+	dev |= (uint64(minor) << 8) & 0xffff0000
-+	dev |= (uint64(minor) << 0) & 0x000000ff
-+	return dev
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go
-index bd475812..304016b6 100644
---- a/vendor/golang.org/x/sys/unix/dirent.go
-+++ b/vendor/golang.org/x/sys/unix/dirent.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go
-index 085df2d8..bcdb5d30 100644
---- a/vendor/golang.org/x/sys/unix/endian_little.go
-+++ b/vendor/golang.org/x/sys/unix/endian_little.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- //
--// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
-+// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go
-index 45e281a0..84178b0a 100644
---- a/vendor/golang.org/x/sys/unix/env_unix.go
-+++ b/vendor/golang.org/x/sys/unix/env_unix.go
-@@ -1,8 +1,8 @@
--// Copyright 2010 The Go Authors.  All rights reserved.
-+// Copyright 2010 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- // Unix environment variables.
- 
-@@ -25,3 +25,7 @@ func Clearenv() {
- func Environ() []string {
- 	return syscall.Environ()
- }
-+
-+func Unsetenv(key string) error {
-+	return syscall.Unsetenv(key)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/env_unset.go b/vendor/golang.org/x/sys/unix/env_unset.go
-deleted file mode 100644
-index 92222625..00000000
---- a/vendor/golang.org/x/sys/unix/env_unset.go
-+++ /dev/null
-@@ -1,14 +0,0 @@
--// Copyright 2014 The Go Authors.  All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build go1.4
--
--package unix
--
--import "syscall"
--
--func Unsetenv(key string) error {
--	// This was added in Go 1.4.
--	return syscall.Unsetenv(key)
--}
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-index c56bc8b0..761db66e 100644
---- a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-@@ -8,6 +8,7 @@
- package unix
- 
- const (
-+	DLT_HHDLC                         = 0x79
- 	IFF_SMART                         = 0x20
- 	IFT_1822                          = 0x2
- 	IFT_A12MPPSWITCH                  = 0x82
-@@ -210,13 +211,18 @@ const (
- 	IFT_XETHER                        = 0x1a
- 	IPPROTO_MAXID                     = 0x34
- 	IPV6_FAITH                        = 0x1d
-+	IPV6_MIN_MEMBERSHIPS              = 0x1f
- 	IP_FAITH                          = 0x16
-+	IP_MAX_SOURCE_FILTER              = 0x400
-+	IP_MIN_MEMBERSHIPS                = 0x1f
- 	MAP_NORESERVE                     = 0x40
- 	MAP_RENAME                        = 0x20
- 	NET_RT_MAXID                      = 0x6
- 	RTF_PRCLONING                     = 0x10000
- 	RTM_OLDADD                        = 0x9
- 	RTM_OLDDEL                        = 0xa
-+	RT_CACHING_CONTEXT                = 0x1
-+	RT_NORTREF                        = 0x2
- 	SIOCADDRT                         = 0x8030720a
- 	SIOCALIFADDR                      = 0x8118691b
- 	SIOCDELRT                         = 0x8030720b
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-index 3e977117..070f44b6 100644
---- a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-@@ -8,6 +8,7 @@
- package unix
- 
- const (
-+	DLT_HHDLC                         = 0x79
- 	IFF_SMART                         = 0x20
- 	IFT_1822                          = 0x2
- 	IFT_A12MPPSWITCH                  = 0x82
-@@ -210,13 +211,18 @@ const (
- 	IFT_XETHER                        = 0x1a
- 	IPPROTO_MAXID                     = 0x34
- 	IPV6_FAITH                        = 0x1d
-+	IPV6_MIN_MEMBERSHIPS              = 0x1f
- 	IP_FAITH                          = 0x16
-+	IP_MAX_SOURCE_FILTER              = 0x400
-+	IP_MIN_MEMBERSHIPS                = 0x1f
- 	MAP_NORESERVE                     = 0x40
- 	MAP_RENAME                        = 0x20
- 	NET_RT_MAXID                      = 0x6
- 	RTF_PRCLONING                     = 0x10000
- 	RTM_OLDADD                        = 0x9
- 	RTM_OLDDEL                        = 0xa
-+	RT_CACHING_CONTEXT                = 0x1
-+	RT_NORTREF                        = 0x2
- 	SIOCADDRT                         = 0x8040720a
- 	SIOCALIFADDR                      = 0x8118691b
- 	SIOCDELRT                         = 0x8040720b
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
-new file mode 100644
-index 00000000..946dcf3f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
-@@ -0,0 +1,17 @@
-+// Copyright 2020 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep
-+// them here for backwards compatibility.
-+
-+package unix
-+
-+const (
-+	DLT_HHDLC            = 0x79
-+	IPV6_MIN_MEMBERSHIPS = 0x1f
-+	IP_MAX_SOURCE_FILTER = 0x400
-+	IP_MIN_MEMBERSHIPS   = 0x1f
-+	RT_CACHING_CONTEXT   = 0x1
-+	RT_NORTREF           = 0x2
-+)
-diff --git a/vendor/golang.org/x/sys/unix/flock.go b/vendor/golang.org/x/sys/unix/fcntl.go
-similarity index 54%
-rename from vendor/golang.org/x/sys/unix/flock.go
-rename to vendor/golang.org/x/sys/unix/fcntl.go
-index 2994ce75..4dc53486 100644
---- a/vendor/golang.org/x/sys/unix/flock.go
-+++ b/vendor/golang.org/x/sys/unix/fcntl.go
-@@ -2,16 +2,30 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd
-+// +build dragonfly freebsd linux netbsd openbsd
- 
- package unix
- 
- import "unsafe"
- 
- // fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
--// systems by flock_linux_32bit.go to be SYS_FCNTL64.
-+// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.
- var fcntl64Syscall uintptr = SYS_FCNTL
- 
-+func fcntl(fd int, cmd, arg int) (int, error) {
-+	valptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))
-+	var err error
-+	if errno != 0 {
-+		err = errno
-+	}
-+	return int(valptr), err
-+}
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+	return fcntl(int(fd), cmd, arg)
-+}
-+
- // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
- func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
- 	_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
-diff --git a/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
-new file mode 100644
-index 00000000..5868a4a4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
-@@ -0,0 +1,18 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import "unsafe"
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+	return fcntl(int(fd), cmd, arg)
-+}
-+
-+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
-+	_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
-+	return err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/flock_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
-similarity index 100%
-rename from vendor/golang.org/x/sys/unix/flock_linux_32bit.go
-rename to vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
-diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go
-new file mode 100644
-index 00000000..b27be0a0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/fdset.go
-@@ -0,0 +1,29 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+// Set adds fd to the set fds.
-+func (fds *FdSet) Set(fd int) {
-+	fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))
-+}
-+
-+// Clear removes fd from the set fds.
-+func (fds *FdSet) Clear(fd int) {
-+	fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))
-+}
-+
-+// IsSet returns whether fd is in the set fds.
-+func (fds *FdSet) IsSet(fd int) bool {
-+	return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0
-+}
-+
-+// Zero clears the set fds.
-+func (fds *FdSet) Zero() {
-+	for i := range fds.Bits {
-+		fds.Bits[i] = 0
-+	}
-+}
-diff --git a/vendor/golang.org/x/sys/unix/file_unix.go b/vendor/golang.org/x/sys/unix/file_unix.go
-deleted file mode 100644
-index 47f6a83f..00000000
---- a/vendor/golang.org/x/sys/unix/file_unix.go
-+++ /dev/null
-@@ -1,27 +0,0 @@
--// Copyright 2017 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package unix
--
--import (
--	"os"
--	"syscall"
--)
--
--// FIXME: unexported function from os
--// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
--func syscallMode(i os.FileMode) (o uint32) {
--	o |= uint32(i.Perm())
--	if i&os.ModeSetuid != 0 {
--		o |= syscall.S_ISUID
--	}
--	if i&os.ModeSetgid != 0 {
--		o |= syscall.S_ISGID
--	}
--	if i&os.ModeSticky != 0 {
--		o |= syscall.S_ISVTX
--	}
--	// No mapping for Go's ModeTemporary (plan9 only).
--	return
--}
-diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go
-index 94c82321..cd6f5a61 100644
---- a/vendor/golang.org/x/sys/unix/gccgo.go
-+++ b/vendor/golang.org/x/sys/unix/gccgo.go
-@@ -1,19 +1,30 @@
--// Copyright 2015 The Go Authors.  All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
- // +build gccgo
-+// +build !aix
- 
- package unix
- 
- import "syscall"
- 
--// We can't use the gc-syntax .s files for gccgo.  On the plus side
-+// We can't use the gc-syntax .s files for gccgo. On the plus side
- // much of the functionality can be written directly in Go.
- 
-+//extern gccgoRealSyscallNoError
-+func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
-+
- //extern gccgoRealSyscall
- func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
- 
-+func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
-+	syscall.Entersyscall()
-+	r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-+	syscall.Exitsyscall()
-+	return r, 0
-+}
-+
- func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
- 	syscall.Entersyscall()
- 	r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-@@ -35,6 +46,11 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- 	return r, 0, syscall.Errno(errno)
- }
- 
-+func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
-+	r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-+	return r, 0
-+}
-+
- func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
- 	r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
- 	return r, 0, syscall.Errno(errno)
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c
-index 07f6be03..c44730c5 100644
---- a/vendor/golang.org/x/sys/unix/gccgo_c.c
-+++ b/vendor/golang.org/x/sys/unix/gccgo_c.c
-@@ -1,8 +1,9 @@
--// Copyright 2015 The Go Authors.  All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
- // +build gccgo
-+// +build !aix
- 
- #include <errno.h>
- #include <stdint.h>
-@@ -31,11 +32,8 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
- 	return r;
- }
- 
--// Define the use function in C so that it is not inlined.
--
--extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
--
--void
--use(void *p __attribute__ ((unused)))
-+uintptr_t
-+gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
- {
-+	return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
- }
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-index bffe1a77..251a977a 100644
---- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-@@ -1,4 +1,4 @@
--// Copyright 2015 The Go Authors.  All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
-deleted file mode 100644
-index 56332692..00000000
---- a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
-+++ /dev/null
-@@ -1,20 +0,0 @@
--// Copyright 2016 The Go Authors.  All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build gccgo,linux,sparc64
--
--package unix
--
--import "syscall"
--
--//extern sysconf
--func realSysconf(name int) int64
--
--func sysconf(name int) (n int64, err syscall.Errno) {
--	r := realSysconf(name)
--	if r < 0 {
--		return 0, syscall.GetErrno()
--	}
--	return r, 0
--}
-diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go
-new file mode 100644
-index 00000000..3559e5dc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ioctl.go
-@@ -0,0 +1,65 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import (
-+	"runtime"
-+	"unsafe"
-+)
-+
-+// ioctl itself should not be exposed directly, but additional get/set
-+// functions for specific types are permissible.
-+
-+// IoctlSetInt performs an ioctl operation which sets an integer value
-+// on fd, using the specified request number.
-+func IoctlSetInt(fd int, req uint, value int) error {
-+	return ioctl(fd, req, uintptr(value))
-+}
-+
-+// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
-+//
-+// To change fd's window size, the req argument should be TIOCSWINSZ.
-+func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
-+	// TODO: if we get the chance, remove the req parameter and
-+	// hardcode TIOCSWINSZ.
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+	runtime.KeepAlive(value)
-+	return err
-+}
-+
-+// IoctlSetTermios performs an ioctl on fd with a *Termios.
-+//
-+// The req value will usually be TCSETA or TIOCSETA.
-+func IoctlSetTermios(fd int, req uint, value *Termios) error {
-+	// TODO: if we get the chance, remove the req parameter.
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+	runtime.KeepAlive(value)
-+	return err
-+}
-+
-+// IoctlGetInt performs an ioctl operation which gets an integer value
-+// from fd, using the specified request number.
-+//
-+// A few ioctl requests use the return value as an output parameter;
-+// for those, IoctlRetInt should be used instead of this function.
-+func IoctlGetInt(fd int, req uint) (int, error) {
-+	var value int
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+	return value, err
-+}
-+
-+func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-+	var value Winsize
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+	return &value, err
-+}
-+
-+func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-+	var value Termios
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+	return &value, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkasm_darwin.go b/vendor/golang.org/x/sys/unix/mkasm_darwin.go
-new file mode 100644
-index 00000000..6f7bb6ed
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mkasm_darwin.go
-@@ -0,0 +1,78 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.
-+//This program must be run after mksyscall.go.
-+package main
-+
-+import (
-+	"bytes"
-+	"fmt"
-+	"io/ioutil"
-+	"log"
-+	"os"
-+	"strings"
-+)
-+
-+func writeASMFile(in string, fileName string, buildTags string) {
-+	trampolines := map[string]bool{}
-+
-+	var out bytes.Buffer
-+
-+	fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
-+	fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
-+	fmt.Fprintf(&out, "\n")
-+	fmt.Fprintf(&out, "// +build %s\n", buildTags)
-+	fmt.Fprintf(&out, "\n")
-+	fmt.Fprintf(&out, "#include \"textflag.h\"\n")
-+	for _, line := range strings.Split(in, "\n") {
-+		if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") {
-+			continue
-+		}
-+		fn := line[5 : len(line)-13]
-+		if !trampolines[fn] {
-+			trampolines[fn] = true
-+			fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn)
-+			fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
-+		}
-+	}
-+	err := ioutil.WriteFile(fileName, out.Bytes(), 0644)
-+	if err != nil {
-+		log.Fatalf("can't write %s: %s", fileName, err)
-+	}
-+}
-+
-+func main() {
-+	in1, err := ioutil.ReadFile("syscall_darwin.go")
-+	if err != nil {
-+		log.Fatalf("can't open syscall_darwin.go: %s", err)
-+	}
-+	arch := os.Args[1]
-+	in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
-+	if err != nil {
-+		log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
-+	}
-+	in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
-+	if err != nil {
-+		log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
-+	}
-+	in := string(in1) + string(in2) + string(in3)
-+
-+	writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.s", arch), "go1.12")
-+
-+	in1, err = ioutil.ReadFile("syscall_darwin.1_13.go")
-+	if err != nil {
-+		log.Fatalf("can't open syscall_darwin.1_13.go: %s", err)
-+	}
-+	in2, err = ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.1_13.go", arch))
-+	if err != nil {
-+		log.Fatalf("can't open zsyscall_darwin_%s.1_13.go: %s", arch, err)
-+	}
-+
-+	in = string(in1) + string(in2)
-+
-+	writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.1_13.s", arch), "go1.13")
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkmerge.go b/vendor/golang.org/x/sys/unix/mkmerge.go
-new file mode 100644
-index 00000000..8bde4501
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mkmerge.go
-@@ -0,0 +1,521 @@
-+// Copyright 2020 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// mkmerge.go parses generated source files and merges common
-+// consts, funcs, and types into a common source file, per GOOS.
-+//
-+// Usage:
-+//     $ go run mkmerge.go -out MERGED FILE [FILE ...]
-+//
-+// Example:
-+//     # Remove all common consts, funcs, and types from zerrors_linux_*.go
-+//     # and write the common code into zerrors_linux.go
-+//     $ go run mkmerge.go -out zerrors_linux.go zerrors_linux_*.go
-+//
-+// mkmerge.go performs the merge in the following steps:
-+// 1. Construct the set of common code that is idential in all
-+//    architecture-specific files.
-+// 2. Write this common code to the merged file.
-+// 3. Remove the common code from all architecture-specific files.
-+package main
-+
-+import (
-+	"bufio"
-+	"bytes"
-+	"flag"
-+	"fmt"
-+	"go/ast"
-+	"go/format"
-+	"go/parser"
-+	"go/token"
-+	"io"
-+	"io/ioutil"
-+	"log"
-+	"os"
-+	"path"
-+	"path/filepath"
-+	"regexp"
-+	"strconv"
-+	"strings"
-+)
-+
-+const validGOOS = "aix|darwin|dragonfly|freebsd|linux|netbsd|openbsd|solaris"
-+
-+// getValidGOOS returns GOOS, true if filename ends with a valid "_GOOS.go"
-+func getValidGOOS(filename string) (string, bool) {
-+	matches := regexp.MustCompile(`_(` + validGOOS + `)\.go$`).FindStringSubmatch(filename)
-+	if len(matches) != 2 {
-+		return "", false
-+	}
-+	return matches[1], true
-+}
-+
-+// codeElem represents an ast.Decl in a comparable way.
-+type codeElem struct {
-+	tok token.Token // e.g. token.CONST, token.TYPE, or token.FUNC
-+	src string      // the declaration formatted as source code
-+}
-+
-+// newCodeElem returns a codeElem based on tok and node, or an error is returned.
-+func newCodeElem(tok token.Token, node ast.Node) (codeElem, error) {
-+	var b strings.Builder
-+	err := format.Node(&b, token.NewFileSet(), node)
-+	if err != nil {
-+		return codeElem{}, err
-+	}
-+	return codeElem{tok, b.String()}, nil
-+}
-+
-+// codeSet is a set of codeElems
-+type codeSet struct {
-+	set map[codeElem]bool // true for all codeElems in the set
-+}
-+
-+// newCodeSet returns a new codeSet
-+func newCodeSet() *codeSet { return &codeSet{make(map[codeElem]bool)} }
-+
-+// add adds elem to c
-+func (c *codeSet) add(elem codeElem) { c.set[elem] = true }
-+
-+// has returns true if elem is in c
-+func (c *codeSet) has(elem codeElem) bool { return c.set[elem] }
-+
-+// isEmpty returns true if the set is empty
-+func (c *codeSet) isEmpty() bool { return len(c.set) == 0 }
-+
-+// intersection returns a new set which is the intersection of c and a
-+func (c *codeSet) intersection(a *codeSet) *codeSet {
-+	res := newCodeSet()
-+
-+	for elem := range c.set {
-+		if a.has(elem) {
-+			res.add(elem)
-+		}
-+	}
-+	return res
-+}
-+
-+// keepCommon is a filterFn for filtering the merged file with common declarations.
-+func (c *codeSet) keepCommon(elem codeElem) bool {
-+	switch elem.tok {
-+	case token.VAR:
-+		// Remove all vars from the merged file
-+		return false
-+	case token.CONST, token.TYPE, token.FUNC, token.COMMENT:
-+		// Remove arch-specific consts, types, functions, and file-level comments from the merged file
-+		return c.has(elem)
-+	case token.IMPORT:
-+		// Keep imports, they are handled by filterImports
-+		return true
-+	}
-+
-+	log.Fatalf("keepCommon: invalid elem %v", elem)
-+	return true
-+}
-+
-+// keepArchSpecific is a filterFn for filtering the GOARC-specific files.
-+func (c *codeSet) keepArchSpecific(elem codeElem) bool {
-+	switch elem.tok {
-+	case token.CONST, token.TYPE, token.FUNC:
-+		// Remove common consts, types, or functions from the arch-specific file
-+		return !c.has(elem)
-+	}
-+	return true
-+}
-+
-+// srcFile represents a source file
-+type srcFile struct {
-+	name string
-+	src  []byte
-+}
-+
-+// filterFn is a helper for filter
-+type filterFn func(codeElem) bool
-+
-+// filter parses and filters Go source code from src, removing top
-+// level declarations using keep as predicate.
-+// For src parameter, please see docs for parser.ParseFile.
-+func filter(src interface{}, keep filterFn) ([]byte, error) {
-+	// Parse the src into an ast
-+	fset := token.NewFileSet()
-+	f, err := parser.ParseFile(fset, "", src, parser.ParseComments)
-+	if err != nil {
-+		return nil, err
-+	}
-+	cmap := ast.NewCommentMap(fset, f, f.Comments)
-+
-+	// Group const/type specs on adjacent lines
-+	var groups specGroups = make(map[string]int)
-+	var groupID int
-+
-+	decls := f.Decls
-+	f.Decls = f.Decls[:0]
-+	for _, decl := range decls {
-+		switch decl := decl.(type) {
-+		case *ast.GenDecl:
-+			// Filter imports, consts, types, vars
-+			specs := decl.Specs
-+			decl.Specs = decl.Specs[:0]
-+			for i, spec := range specs {
-+				elem, err := newCodeElem(decl.Tok, spec)
-+				if err != nil {
-+					return nil, err
-+				}
-+
-+				// Create new group if there are empty lines between this and the previous spec
-+				if i > 0 && fset.Position(specs[i-1].End()).Line < fset.Position(spec.Pos()).Line-1 {
-+					groupID++
-+				}
-+
-+				// Check if we should keep this spec
-+				if keep(elem) {
-+					decl.Specs = append(decl.Specs, spec)
-+					groups.add(elem.src, groupID)
-+				}
-+			}
-+			// Check if we should keep this decl
-+			if len(decl.Specs) > 0 {
-+				f.Decls = append(f.Decls, decl)
-+			}
-+		case *ast.FuncDecl:
-+			// Filter funcs
-+			elem, err := newCodeElem(token.FUNC, decl)
-+			if err != nil {
-+				return nil, err
-+			}
-+			if keep(elem) {
-+				f.Decls = append(f.Decls, decl)
-+			}
-+		}
-+	}
-+
-+	// Filter file level comments
-+	if cmap[f] != nil {
-+		commentGroups := cmap[f]
-+		cmap[f] = cmap[f][:0]
-+		for _, cGrp := range commentGroups {
-+			if keep(codeElem{token.COMMENT, cGrp.Text()}) {
-+				cmap[f] = append(cmap[f], cGrp)
-+			}
-+		}
-+	}
-+	f.Comments = cmap.Filter(f).Comments()
-+
-+	// Generate code for the filtered ast
-+	var buf bytes.Buffer
-+	if err = format.Node(&buf, fset, f); err != nil {
-+		return nil, err
-+	}
-+
-+	groupedSrc, err := groups.filterEmptyLines(&buf)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	return filterImports(groupedSrc)
-+}
-+
-+// getCommonSet returns the set of consts, types, and funcs that are present in every file.
-+func getCommonSet(files []srcFile) (*codeSet, error) {
-+	if len(files) == 0 {
-+		return nil, fmt.Errorf("no files provided")
-+	}
-+	// Use the first architecture file as the baseline
-+	baseSet, err := getCodeSet(files[0].src)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	// Compare baseline set with other architecture files: discard any element,
-+	// that doesn't exist in other architecture files.
-+	for _, f := range files[1:] {
-+		set, err := getCodeSet(f.src)
-+		if err != nil {
-+			return nil, err
-+		}
-+
-+		baseSet = baseSet.intersection(set)
-+	}
-+	return baseSet, nil
-+}
-+
-+// getCodeSet returns the set of all top-level consts, types, and funcs from src.
-+// src must be string, []byte, or io.Reader (see go/parser.ParseFile docs)
-+func getCodeSet(src interface{}) (*codeSet, error) {
-+	set := newCodeSet()
-+
-+	fset := token.NewFileSet()
-+	f, err := parser.ParseFile(fset, "", src, parser.ParseComments)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	for _, decl := range f.Decls {
-+		switch decl := decl.(type) {
-+		case *ast.GenDecl:
-+			// Add const, and type declarations
-+			if !(decl.Tok == token.CONST || decl.Tok == token.TYPE) {
-+				break
-+			}
-+
-+			for _, spec := range decl.Specs {
-+				elem, err := newCodeElem(decl.Tok, spec)
-+				if err != nil {
-+					return nil, err
-+				}
-+
-+				set.add(elem)
-+			}
-+		case *ast.FuncDecl:
-+			// Add func declarations
-+			elem, err := newCodeElem(token.FUNC, decl)
-+			if err != nil {
-+				return nil, err
-+			}
-+
-+			set.add(elem)
-+		}
-+	}
-+
-+	// Add file level comments
-+	cmap := ast.NewCommentMap(fset, f, f.Comments)
-+	for _, cGrp := range cmap[f] {
-+		set.add(codeElem{token.COMMENT, cGrp.Text()})
-+	}
-+
-+	return set, nil
-+}
-+
-+// importName returns the identifier (PackageName) for an imported package
-+func importName(iSpec *ast.ImportSpec) (string, error) {
-+	if iSpec.Name == nil {
-+		name, err := strconv.Unquote(iSpec.Path.Value)
-+		if err != nil {
-+			return "", err
-+		}
-+		return path.Base(name), nil
-+	}
-+	return iSpec.Name.Name, nil
-+}
-+
-+// specGroups tracks grouped const/type specs with a map of line: groupID pairs
-+type specGroups map[string]int
-+
-+// add spec source to group
-+func (s specGroups) add(src string, groupID int) error {
-+	srcBytes, err := format.Source(bytes.TrimSpace([]byte(src)))
-+	if err != nil {
-+		return err
-+	}
-+	s[string(srcBytes)] = groupID
-+	return nil
-+}
-+
-+// filterEmptyLines removes empty lines within groups of const/type specs.
-+// Returns the filtered source.
-+func (s specGroups) filterEmptyLines(src io.Reader) ([]byte, error) {
-+	scanner := bufio.NewScanner(src)
-+	var out bytes.Buffer
-+
-+	var emptyLines bytes.Buffer
-+	prevGroupID := -1 // Initialize to invalid group
-+	for scanner.Scan() {
-+		line := bytes.TrimSpace(scanner.Bytes())
-+
-+		if len(line) == 0 {
-+			fmt.Fprintf(&emptyLines, "%s\n", scanner.Bytes())
-+			continue
-+		}
-+
-+		// Discard emptyLines if previous non-empty line belonged to the same
-+		// group as this line
-+		if src, err := format.Source(line); err == nil {
-+			groupID, ok := s[string(src)]
-+			if ok && groupID == prevGroupID {
-+				emptyLines.Reset()
-+			}
-+			prevGroupID = groupID
-+		}
-+
-+		emptyLines.WriteTo(&out)
-+		fmt.Fprintf(&out, "%s\n", scanner.Bytes())
-+	}
-+	if err := scanner.Err(); err != nil {
-+		return nil, err
-+	}
-+	return out.Bytes(), nil
-+}
-+
-+// filterImports removes unused imports from fileSrc, and returns a formatted src.
-+func filterImports(fileSrc []byte) ([]byte, error) {
-+	fset := token.NewFileSet()
-+	file, err := parser.ParseFile(fset, "", fileSrc, parser.ParseComments)
-+	if err != nil {
-+		return nil, err
-+	}
-+	cmap := ast.NewCommentMap(fset, file, file.Comments)
-+
-+	// create set of references to imported identifiers
-+	keepImport := make(map[string]bool)
-+	for _, u := range file.Unresolved {
-+		keepImport[u.Name] = true
-+	}
-+
-+	// filter import declarations
-+	decls := file.Decls
-+	file.Decls = file.Decls[:0]
-+	for _, decl := range decls {
-+		importDecl, ok := decl.(*ast.GenDecl)
-+
-+		// Keep non-import declarations
-+		if !ok || importDecl.Tok != token.IMPORT {
-+			file.Decls = append(file.Decls, decl)
-+			continue
-+		}
-+
-+		// Filter the import specs
-+		specs := importDecl.Specs
-+		importDecl.Specs = importDecl.Specs[:0]
-+		for _, spec := range specs {
-+			iSpec := spec.(*ast.ImportSpec)
-+			name, err := importName(iSpec)
-+			if err != nil {
-+				return nil, err
-+			}
-+
-+			if keepImport[name] {
-+				importDecl.Specs = append(importDecl.Specs, iSpec)
-+			}
-+		}
-+		if len(importDecl.Specs) > 0 {
-+			file.Decls = append(file.Decls, importDecl)
-+		}
-+	}
-+
-+	// filter file.Imports
-+	imports := file.Imports
-+	file.Imports = file.Imports[:0]
-+	for _, spec := range imports {
-+		name, err := importName(spec)
-+		if err != nil {
-+			return nil, err
-+		}
-+
-+		if keepImport[name] {
-+			file.Imports = append(file.Imports, spec)
-+		}
-+	}
-+	file.Comments = cmap.Filter(file).Comments()
-+
-+	var buf bytes.Buffer
-+	err = format.Node(&buf, fset, file)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	return buf.Bytes(), nil
-+}
-+
-+// merge extracts duplicate code from archFiles and merges it to mergeFile.
-+// 1. Construct commonSet: the set of code that is idential in all archFiles.
-+// 2. Write the code in commonSet to mergedFile.
-+// 3. Remove the commonSet code from all archFiles.
-+func merge(mergedFile string, archFiles ...string) error {
-+	// extract and validate the GOOS part of the merged filename
-+	goos, ok := getValidGOOS(mergedFile)
-+	if !ok {
-+		return fmt.Errorf("invalid GOOS in merged file name %s", mergedFile)
-+	}
-+
-+	// Read architecture files
-+	var inSrc []srcFile
-+	for _, file := range archFiles {
-+		src, err := ioutil.ReadFile(file)
-+		if err != nil {
-+			return fmt.Errorf("cannot read archfile %s: %w", file, err)
-+		}
-+
-+		inSrc = append(inSrc, srcFile{file, src})
-+	}
-+
-+	// 1. Construct the set of top-level declarations common for all files
-+	commonSet, err := getCommonSet(inSrc)
-+	if err != nil {
-+		return err
-+	}
-+	if commonSet.isEmpty() {
-+		// No common code => do not modify any files
-+		return nil
-+	}
-+
-+	// 2. Write the merged file
-+	mergedSrc, err := filter(inSrc[0].src, commonSet.keepCommon)
-+	if err != nil {
-+		return err
-+	}
-+
-+	f, err := os.Create(mergedFile)
-+	if err != nil {
-+		return err
-+	}
-+
-+	buf := bufio.NewWriter(f)
-+	fmt.Fprintln(buf, "// Code generated by mkmerge.go; DO NOT EDIT.")
-+	fmt.Fprintln(buf)
-+	fmt.Fprintf(buf, "// +build %s\n", goos)
-+	fmt.Fprintln(buf)
-+	buf.Write(mergedSrc)
-+
-+	err = buf.Flush()
-+	if err != nil {
-+		return err
-+	}
-+	err = f.Close()
-+	if err != nil {
-+		return err
-+	}
-+
-+	// 3. Remove duplicate declarations from the architecture files
-+	for _, inFile := range inSrc {
-+		src, err := filter(inFile.src, commonSet.keepArchSpecific)
-+		if err != nil {
-+			return err
-+		}
-+		err = ioutil.WriteFile(inFile.name, src, 0644)
-+		if err != nil {
-+			return err
-+		}
-+	}
-+	return nil
-+}
-+
-+func main() {
-+	var mergedFile string
-+	flag.StringVar(&mergedFile, "out", "", "Write merged code to `FILE`")
-+	flag.Parse()
-+
-+	// Expand wildcards
-+	var filenames []string
-+	for _, arg := range flag.Args() {
-+		matches, err := filepath.Glob(arg)
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, "Invalid command line argument %q: %v\n", arg, err)
-+			os.Exit(1)
-+		}
-+		filenames = append(filenames, matches...)
-+	}
-+
-+	if len(filenames) < 2 {
-+		// No need to merge
-+		return
-+	}
-+
-+	err := merge(mergedFile, filenames...)
-+	if err != nil {
-+		fmt.Fprintf(os.Stderr, "Merge failed with error: %v\n", err)
-+		os.Exit(1)
-+	}
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go
-index d3ff659b..5ee1a16b 100644
---- a/vendor/golang.org/x/sys/unix/mkpost.go
-+++ b/vendor/golang.org/x/sys/unix/mkpost.go
-@@ -28,10 +28,10 @@ func main() {
- 	if goarch == "" {
- 		goarch = os.Getenv("GOARCH")
- 	}
--	// Check that we are using the new build system if we should be.
--	if goos == "linux" && goarch != "sparc64" {
-+	// Check that we are using the Docker-based build system if we should be.
-+	if goos == "linux" {
- 		if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
--			os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n")
-+			os.Stderr.WriteString("In the Docker-based build system, mkpost should not be called directly.\n")
- 			os.Stderr.WriteString("See README.md\n")
- 			os.Exit(1)
- 		}
-@@ -42,6 +42,21 @@ func main() {
- 		log.Fatal(err)
- 	}
- 
-+	if goos == "aix" {
-+		// Replace type of Atim, Mtim and Ctim by Timespec in Stat_t
-+		// to avoid having both StTimespec and Timespec.
-+		sttimespec := regexp.MustCompile(`_Ctype_struct_st_timespec`)
-+		b = sttimespec.ReplaceAll(b, []byte("Timespec"))
-+	}
-+
-+	// Intentionally export __val fields in Fsid and Sigset_t
-+	valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__(bits|val)(\s+\S+\s+)}`)
-+	b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$4}"))
-+
-+	// Intentionally export __fds_bits field in FdSet
-+	fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`)
-+	b = fdSetRegex.ReplaceAll(b, []byte("type $1 struct {${2}Bits$3}"))
-+
- 	// If we have empty Ptrace structs, we should delete them. Only s390x emits
- 	// nonempty Ptrace structs.
- 	ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
-@@ -56,16 +71,31 @@ func main() {
- 	removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
- 	b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
- 
--	// We refuse to export private fields on s390x
--	if goarch == "s390x" && goos == "linux" {
--		// Remove cgo padding fields
--		removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
--		b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-+	// Convert [65]int8 to [65]byte in Utsname members to simplify
-+	// conversion to string; see golang.org/issue/20753
-+	convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
-+	b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
- 
--		// Remove padding, hidden, or unused fields
--		removeFieldsRegex = regexp.MustCompile(`X_\S+`)
--		b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
--	}
-+	// Convert [n]int8 to [n]byte in Statvfs_t members to simplify
-+	// conversion to string.
-+	convertStatvfsRegex := regexp.MustCompile(`((Fstype|Mnton|Mntfrom)name)(\s+)\[(\d+)\]int8`)
-+	b = convertStatvfsRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
-+
-+	// Convert [1024]int8 to [1024]byte in Ptmget members
-+	convertPtmget := regexp.MustCompile(`([SC]n)(\s+)\[(\d+)\]u?int8`)
-+	b = convertPtmget.ReplaceAll(b, []byte("$1[$3]byte"))
-+
-+	// Remove spare fields (e.g. in Statx_t)
-+	spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
-+	b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
-+
-+	// Remove cgo padding fields
-+	removePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
-+	b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_"))
-+
-+	// Remove padding, hidden, or unused fields
-+	removeFieldsRegex = regexp.MustCompile(`\b(X_\S+|Padding)`)
-+	b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
- 
- 	// Remove the first line of warning from cgo
- 	b = b[bytes.IndexByte(b, '\n')+1:]
-@@ -78,6 +108,15 @@ func main() {
- 	cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)
- 	b = cgoCommandRegex.ReplaceAll(b, []byte(replacement))
- 
-+	// Rename Stat_t time fields
-+	if goos == "freebsd" && goarch == "386" {
-+		// Hide Stat_t.[AMCB]tim_ext fields
-+		renameStatTimeExtFieldsRegex := regexp.MustCompile(`[AMCB]tim_ext`)
-+		b = renameStatTimeExtFieldsRegex.ReplaceAll(b, []byte("_"))
-+	}
-+	renameStatTimeFieldsRegex := regexp.MustCompile(`([AMCB])(?:irth)?time?(?:spec)?\s+(Timespec|StTimespec)`)
-+	b = renameStatTimeFieldsRegex.ReplaceAll(b, []byte("${1}tim ${2}"))
-+
- 	// gofmt
- 	b, err = format.Source(b)
- 	if err != nil {
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall.go b/vendor/golang.org/x/sys/unix/mksyscall.go
-new file mode 100644
-index 00000000..9e540cc8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall.go
-@@ -0,0 +1,402 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_darwin.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+	* The parameter lists must give a name for each argument.
-+	  This includes return parameters.
-+	* The parameter lists must give a type for each argument:
-+	  the (x, y, z int) shorthand is not allowed.
-+	* If the return parameter is an error number, it must be named errno.
-+
-+A line beginning with //sysnb is like //sys, except that the
-+goroutine will not be suspended during the execution of the system
-+call.  This must only be used for system calls which can never
-+block, as otherwise the system call could cause all goroutines to
-+hang.
-+*/
-+package main
-+
-+import (
-+	"bufio"
-+	"flag"
-+	"fmt"
-+	"os"
-+	"regexp"
-+	"strings"
-+)
-+
-+var (
-+	b32       = flag.Bool("b32", false, "32bit big-endian")
-+	l32       = flag.Bool("l32", false, "32bit little-endian")
-+	plan9     = flag.Bool("plan9", false, "plan9")
-+	openbsd   = flag.Bool("openbsd", false, "openbsd")
-+	netbsd    = flag.Bool("netbsd", false, "netbsd")
-+	dragonfly = flag.Bool("dragonfly", false, "dragonfly")
-+	arm       = flag.Bool("arm", false, "arm") // 64-bit value should use (even, odd)-pair
-+	tags      = flag.String("tags", "", "build tags")
-+	filename  = flag.String("output", "", "output file name (standard output if omitted)")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+	return "go run mksyscall.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+	return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+	Name string
-+	Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+	fmt.Fprintf(os.Stderr, "usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+	os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+	list = strings.TrimSpace(list)
-+	if list == "" {
-+		return []string{}
-+	}
-+	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+	if ps == nil {
-+		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+		os.Exit(1)
-+	}
-+	return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+	// Get the OS and architecture (using GOARCH_TARGET if it exists)
-+	goos := os.Getenv("GOOS")
-+	if goos == "" {
-+		fmt.Fprintln(os.Stderr, "GOOS not defined in environment")
-+		os.Exit(1)
-+	}
-+	goarch := os.Getenv("GOARCH_TARGET")
-+	if goarch == "" {
-+		goarch = os.Getenv("GOARCH")
-+	}
-+
-+	// Check that we are using the Docker-based build system if we should
-+	if goos == "linux" {
-+		if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
-+			fmt.Fprintf(os.Stderr, "In the Docker-based build system, mksyscall should not be called directly.\n")
-+			fmt.Fprintf(os.Stderr, "See README.md\n")
-+			os.Exit(1)
-+		}
-+	}
-+
-+	flag.Usage = usage
-+	flag.Parse()
-+	if len(flag.Args()) <= 0 {
-+		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+		usage()
-+	}
-+
-+	endianness := ""
-+	if *b32 {
-+		endianness = "big-endian"
-+	} else if *l32 {
-+		endianness = "little-endian"
-+	}
-+
-+	libc := false
-+	if goos == "darwin" && (strings.Contains(buildTags(), ",go1.12") || strings.Contains(buildTags(), ",go1.13")) {
-+		libc = true
-+	}
-+	trampolines := map[string]bool{}
-+
-+	text := ""
-+	for _, path := range flag.Args() {
-+		file, err := os.Open(path)
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		s := bufio.NewScanner(file)
-+		for s.Scan() {
-+			t := s.Text()
-+			t = strings.TrimSpace(t)
-+			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+				continue
-+			}
-+
-+			// Line must be of the form
-+			//	func Open(path string, mode int, perm int) (fd int, errno error)
-+			// Split into name, in params, out params.
-+			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t)
-+			if f == nil {
-+				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+				os.Exit(1)
-+			}
-+			funct, inps, outps, sysname := f[2], f[3], f[4], f[5]
-+
-+			// ClockGettime doesn't have a syscall number on Darwin, only generate libc wrappers.
-+			if goos == "darwin" && !libc && funct == "ClockGettime" {
-+				continue
-+			}
-+
-+			// Split argument lists on comma.
-+			in := parseParamList(inps)
-+			out := parseParamList(outps)
-+
-+			// Try in vain to keep people from editing this file.
-+			// The theory is that they jump into the middle of the file
-+			// without reading the header.
-+			text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+			// Go function header.
-+			outDecl := ""
-+			if len(out) > 0 {
-+				outDecl = fmt.Sprintf(" (%s)", strings.Join(out, ", "))
-+			}
-+			text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outDecl)
-+
-+			// Check if err return available
-+			errvar := ""
-+			for _, param := range out {
-+				p := parseParam(param)
-+				if p.Type == "error" {
-+					errvar = p.Name
-+					break
-+				}
-+			}
-+
-+			// Prepare arguments to Syscall.
-+			var args []string
-+			n := 0
-+			for _, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
-+				} else if p.Type == "string" && errvar != "" {
-+					text += fmt.Sprintf("\tvar _p%d *byte\n", n)
-+					text += fmt.Sprintf("\t_p%d, %s = BytePtrFromString(%s)\n", n, errvar, p.Name)
-+					text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					n++
-+				} else if p.Type == "string" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+					text += fmt.Sprintf("\tvar _p%d *byte\n", n)
-+					text += fmt.Sprintf("\t_p%d, _ = BytePtrFromString(%s)\n", n, p.Name)
-+					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					n++
-+				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+					// Convert slice into pointer, length.
-+					// Have to be careful not to take address of &a[0] if len == 0:
-+					// pass dummy pointer in that case.
-+					// Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
-+					text += fmt.Sprintf("\tvar _p%d unsafe.Pointer\n", n)
-+					text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = unsafe.Pointer(&%s[0])\n\t}", p.Name, n, p.Name)
-+					text += fmt.Sprintf(" else {\n\t\t_p%d = unsafe.Pointer(&_zero)\n\t}\n", n)
-+					args = append(args, fmt.Sprintf("uintptr(_p%d)", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
-+					n++
-+				} else if p.Type == "int64" && (*openbsd || *netbsd) {
-+					args = append(args, "0")
-+					if endianness == "big-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+					} else if endianness == "little-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+					}
-+				} else if p.Type == "int64" && *dragonfly {
-+					if regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil {
-+						args = append(args, "0")
-+					}
-+					if endianness == "big-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+					} else if endianness == "little-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+					}
-+				} else if (p.Type == "int64" || p.Type == "uint64") && endianness != "" {
-+					if len(args)%2 == 1 && *arm {
-+						// arm abi specifies 64-bit argument uses
-+						// (even, odd) pair
-+						args = append(args, "0")
-+					}
-+					if endianness == "big-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+					}
-+				} else {
-+					args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+				}
-+			}
-+
-+			// Determine which form to use; pad args with zeros.
-+			asm := "Syscall"
-+			if nonblock != nil {
-+				if errvar == "" && goos == "linux" {
-+					asm = "RawSyscallNoError"
-+				} else {
-+					asm = "RawSyscall"
-+				}
-+			} else {
-+				if errvar == "" && goos == "linux" {
-+					asm = "SyscallNoError"
-+				}
-+			}
-+			if len(args) <= 3 {
-+				for len(args) < 3 {
-+					args = append(args, "0")
-+				}
-+			} else if len(args) <= 6 {
-+				asm += "6"
-+				for len(args) < 6 {
-+					args = append(args, "0")
-+				}
-+			} else if len(args) <= 9 {
-+				asm += "9"
-+				for len(args) < 9 {
-+					args = append(args, "0")
-+				}
-+			} else {
-+				fmt.Fprintf(os.Stderr, "%s:%s too many arguments to system call\n", path, funct)
-+			}
-+
-+			// System call number.
-+			if sysname == "" {
-+				sysname = "SYS_" + funct
-+				sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+				sysname = strings.ToUpper(sysname)
-+			}
-+
-+			var libcFn string
-+			if libc {
-+				asm = "syscall_" + strings.ToLower(asm[:1]) + asm[1:] // internal syscall call
-+				sysname = strings.TrimPrefix(sysname, "SYS_")         // remove SYS_
-+				sysname = strings.ToLower(sysname)                    // lowercase
-+				libcFn = sysname
-+				sysname = "funcPC(libc_" + sysname + "_trampoline)"
-+			}
-+
-+			// Actual call.
-+			arglist := strings.Join(args, ", ")
-+			call := fmt.Sprintf("%s(%s, %s)", asm, sysname, arglist)
-+
-+			// Assign return values.
-+			body := ""
-+			ret := []string{"_", "_", "_"}
-+			doErrno := false
-+			for i := 0; i < len(out); i++ {
-+				p := parseParam(out[i])
-+				reg := ""
-+				if p.Name == "err" && !*plan9 {
-+					reg = "e1"
-+					ret[2] = reg
-+					doErrno = true
-+				} else if p.Name == "err" && *plan9 {
-+					ret[0] = "r0"
-+					ret[2] = "e1"
-+					break
-+				} else {
-+					reg = fmt.Sprintf("r%d", i)
-+					ret[i] = reg
-+				}
-+				if p.Type == "bool" {
-+					reg = fmt.Sprintf("%s != 0", reg)
-+				}
-+				if p.Type == "int64" && endianness != "" {
-+					// 64-bit number in r1:r0 or r0:r1.
-+					if i+2 > len(out) {
-+						fmt.Fprintf(os.Stderr, "%s:%s not enough registers for int64 return\n", path, funct)
-+					}
-+					if endianness == "big-endian" {
-+						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
-+					} else {
-+						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
-+					}
-+					ret[i] = fmt.Sprintf("r%d", i)
-+					ret[i+1] = fmt.Sprintf("r%d", i+1)
-+				}
-+				if reg != "e1" || *plan9 {
-+					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+				}
-+			}
-+			if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
-+				text += fmt.Sprintf("\t%s\n", call)
-+			} else {
-+				if errvar == "" && goos == "linux" {
-+					// raw syscall without error on Linux, see golang.org/issue/22924
-+					text += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], call)
-+				} else {
-+					text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
-+				}
-+			}
-+			text += body
-+
-+			if *plan9 && ret[2] == "e1" {
-+				text += "\tif int32(r0) == -1 {\n"
-+				text += "\t\terr = e1\n"
-+				text += "\t}\n"
-+			} else if doErrno {
-+				text += "\tif e1 != 0 {\n"
-+				text += "\t\terr = errnoErr(e1)\n"
-+				text += "\t}\n"
-+			}
-+			text += "\treturn\n"
-+			text += "}\n\n"
-+
-+			if libc && !trampolines[libcFn] {
-+				// some system calls share a trampoline, like read and readlen.
-+				trampolines[libcFn] = true
-+				// Declare assembly trampoline.
-+				text += fmt.Sprintf("func libc_%s_trampoline()\n", libcFn)
-+				// Assembly trampoline calls the libc_* function, which this magic
-+				// redirects to use the function from libSystem.
-+				text += fmt.Sprintf("//go:linkname libc_%s libc_%s\n", libcFn, libcFn)
-+				text += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"/usr/lib/libSystem.B.dylib\"\n", libcFn, libcFn)
-+				text += "\n"
-+			}
-+		}
-+		if err := s.Err(); err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		file.Close()
-+	}
-+	fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
-new file mode 100644
-index 00000000..3be3cdfc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
-@@ -0,0 +1,415 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_aix.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+	* The parameter lists must give a name for each argument.
-+	  This includes return parameters.
-+	* The parameter lists must give a type for each argument:
-+	  the (x, y, z int) shorthand is not allowed.
-+	* If the return parameter is an error number, it must be named err.
-+	* If go func name needs to be different than its libc name,
-+	* or the function is not in libc, name could be specified
-+	* at the end, after "=" sign, like
-+	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+*/
-+package main
-+
-+import (
-+	"bufio"
-+	"flag"
-+	"fmt"
-+	"os"
-+	"regexp"
-+	"strings"
-+)
-+
-+var (
-+	b32  = flag.Bool("b32", false, "32bit big-endian")
-+	l32  = flag.Bool("l32", false, "32bit little-endian")
-+	aix  = flag.Bool("aix", false, "aix")
-+	tags = flag.String("tags", "", "build tags")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+	return "go run mksyscall_aix_ppc.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+	return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+	Name string
-+	Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+	fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+	os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+	list = strings.TrimSpace(list)
-+	if list == "" {
-+		return []string{}
-+	}
-+	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+	if ps == nil {
-+		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+		os.Exit(1)
-+	}
-+	return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+	flag.Usage = usage
-+	flag.Parse()
-+	if len(flag.Args()) <= 0 {
-+		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+		usage()
-+	}
-+
-+	endianness := ""
-+	if *b32 {
-+		endianness = "big-endian"
-+	} else if *l32 {
-+		endianness = "little-endian"
-+	}
-+
-+	pack := ""
-+	text := ""
-+	cExtern := "/*\n#include <stdint.h>\n#include <stddef.h>\n"
-+	for _, path := range flag.Args() {
-+		file, err := os.Open(path)
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		s := bufio.NewScanner(file)
-+		for s.Scan() {
-+			t := s.Text()
-+			t = strings.TrimSpace(t)
-+			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+			if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+				pack = p[1]
-+			}
-+			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+				continue
-+			}
-+
-+			// Line must be of the form
-+			//	func Open(path string, mode int, perm int) (fd int, err error)
-+			// Split into name, in params, out params.
-+			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+			if f == nil {
-+				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+				os.Exit(1)
-+			}
-+			funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+			// Split argument lists on comma.
-+			in := parseParamList(inps)
-+			out := parseParamList(outps)
-+
-+			inps = strings.Join(in, ", ")
-+			outps = strings.Join(out, ", ")
-+
-+			// Try in vain to keep people from editing this file.
-+			// The theory is that they jump into the middle of the file
-+			// without reading the header.
-+			text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+			// Check if value return, err return available
-+			errvar := ""
-+			retvar := ""
-+			rettype := ""
-+			for _, param := range out {
-+				p := parseParam(param)
-+				if p.Type == "error" {
-+					errvar = p.Name
-+				} else {
-+					retvar = p.Name
-+					rettype = p.Type
-+				}
-+			}
-+
-+			// System call name.
-+			if sysname == "" {
-+				sysname = funct
-+			}
-+			sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+			sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+			cRettype := ""
-+			if rettype == "unsafe.Pointer" {
-+				cRettype = "uintptr_t"
-+			} else if rettype == "uintptr" {
-+				cRettype = "uintptr_t"
-+			} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
-+				cRettype = "uintptr_t"
-+			} else if rettype == "int" {
-+				cRettype = "int"
-+			} else if rettype == "int32" {
-+				cRettype = "int"
-+			} else if rettype == "int64" {
-+				cRettype = "long long"
-+			} else if rettype == "uint32" {
-+				cRettype = "unsigned int"
-+			} else if rettype == "uint64" {
-+				cRettype = "unsigned long long"
-+			} else {
-+				cRettype = "int"
-+			}
-+			if sysname == "exit" {
-+				cRettype = "void"
-+			}
-+
-+			// Change p.Types to c
-+			var cIn []string
-+			for _, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "string" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t", "size_t")
-+				} else if p.Type == "unsafe.Pointer" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "uintptr" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "int" {
-+					cIn = append(cIn, "int")
-+				} else if p.Type == "int32" {
-+					cIn = append(cIn, "int")
-+				} else if p.Type == "int64" {
-+					cIn = append(cIn, "long long")
-+				} else if p.Type == "uint32" {
-+					cIn = append(cIn, "unsigned int")
-+				} else if p.Type == "uint64" {
-+					cIn = append(cIn, "unsigned long long")
-+				} else {
-+					cIn = append(cIn, "int")
-+				}
-+			}
-+
-+			if funct != "fcntl" && funct != "FcntlInt" && funct != "readlen" && funct != "writelen" {
-+				if sysname == "select" {
-+					// select is a keyword of Go. Its name is
-+					// changed to c_select.
-+					cExtern += "#define c_select select\n"
-+				}
-+				// Imports of system calls from libc
-+				cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
-+				cIn := strings.Join(cIn, ", ")
-+				cExtern += fmt.Sprintf("(%s);\n", cIn)
-+			}
-+
-+			// So file name.
-+			if *aix {
-+				if modname == "" {
-+					modname = "libc.a/shr_64.o"
-+				} else {
-+					fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
-+					os.Exit(1)
-+				}
-+			}
-+
-+			strconvfunc := "C.CString"
-+
-+			// Go function header.
-+			if outps != "" {
-+				outps = fmt.Sprintf(" (%s)", outps)
-+			}
-+			if text != "" {
-+				text += "\n"
-+			}
-+
-+			text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
-+
-+			// Prepare arguments to Syscall.
-+			var args []string
-+			n := 0
-+			argN := 0
-+			for _, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					args = append(args, "C.uintptr_t(uintptr(unsafe.Pointer("+p.Name+")))")
-+				} else if p.Type == "string" && errvar != "" {
-+					text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
-+					args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+					n++
-+				} else if p.Type == "string" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+					text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
-+					args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+					n++
-+				} else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
-+					// Convert slice into pointer, length.
-+					// Have to be careful not to take address of &a[0] if len == 0:
-+					// pass nil in that case.
-+					text += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
-+					text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(unsafe.Pointer(_p%d)))", n))
-+					n++
-+					text += fmt.Sprintf("\tvar _p%d int\n", n)
-+					text += fmt.Sprintf("\t_p%d = len(%s)\n", n, p.Name)
-+					args = append(args, fmt.Sprintf("C.size_t(_p%d)", n))
-+					n++
-+				} else if p.Type == "int64" && endianness != "" {
-+					if endianness == "big-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+					}
-+					n++
-+				} else if p.Type == "bool" {
-+					text += fmt.Sprintf("\tvar _p%d uint32\n", n)
-+					text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n)
-+					args = append(args, fmt.Sprintf("_p%d", n))
-+				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
-+				} else if p.Type == "unsafe.Pointer" {
-+					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
-+				} else if p.Type == "int" {
-+					if (argN == 2) && ((funct == "readlen") || (funct == "writelen")) {
-+						args = append(args, fmt.Sprintf("C.size_t(%s)", p.Name))
-+					} else if argN == 0 && funct == "fcntl" {
-+						args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+					} else if (argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt")) {
-+						args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+					}
-+				} else if p.Type == "int32" {
-+					args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+				} else if p.Type == "int64" {
-+					args = append(args, fmt.Sprintf("C.longlong(%s)", p.Name))
-+				} else if p.Type == "uint32" {
-+					args = append(args, fmt.Sprintf("C.uint(%s)", p.Name))
-+				} else if p.Type == "uint64" {
-+					args = append(args, fmt.Sprintf("C.ulonglong(%s)", p.Name))
-+				} else if p.Type == "uintptr" {
-+					args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+				} else {
-+					args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+				}
-+				argN++
-+			}
-+
-+			// Actual call.
-+			arglist := strings.Join(args, ", ")
-+			call := ""
-+			if sysname == "exit" {
-+				if errvar != "" {
-+					call += "er :="
-+				} else {
-+					call += ""
-+				}
-+			} else if errvar != "" {
-+				call += "r0,er :="
-+			} else if retvar != "" {
-+				call += "r0,_ :="
-+			} else {
-+				call += ""
-+			}
-+			if sysname == "select" {
-+				// select is a keyword of Go. Its name is
-+				// changed to c_select.
-+				call += fmt.Sprintf("C.c_%s(%s)", sysname, arglist)
-+			} else {
-+				call += fmt.Sprintf("C.%s(%s)", sysname, arglist)
-+			}
-+
-+			// Assign return values.
-+			body := ""
-+			for i := 0; i < len(out); i++ {
-+				p := parseParam(out[i])
-+				reg := ""
-+				if p.Name == "err" {
-+					reg = "e1"
-+				} else {
-+					reg = "r0"
-+				}
-+				if reg != "e1" {
-+					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+				}
-+			}
-+
-+			// verify return
-+			if sysname != "exit" && errvar != "" {
-+				if regexp.MustCompile(`^uintptr`).FindStringSubmatch(cRettype) != nil {
-+					body += "\tif (uintptr(r0) ==^uintptr(0) && er != nil) {\n"
-+					body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+					body += "\t}\n"
-+				} else {
-+					body += "\tif (r0 ==-1 && er != nil) {\n"
-+					body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+					body += "\t}\n"
-+				}
-+			} else if errvar != "" {
-+				body += "\tif (er != nil) {\n"
-+				body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+				body += "\t}\n"
-+			}
-+
-+			text += fmt.Sprintf("\t%s\n", call)
-+			text += body
-+
-+			text += "\treturn\n"
-+			text += "}\n"
-+		}
-+		if err := s.Err(); err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		file.Close()
-+	}
-+	imp := ""
-+	if pack != "unix" {
-+		imp = "import \"golang.org/x/sys/unix\"\n"
-+
-+	}
-+	fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, cExtern, imp, text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+
-+%s
-+*/
-+import "C"
-+import (
-+	"unsafe"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
-new file mode 100644
-index 00000000..c9600995
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
-@@ -0,0 +1,614 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_aix.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+	* The parameter lists must give a name for each argument.
-+	  This includes return parameters.
-+	* The parameter lists must give a type for each argument:
-+	  the (x, y, z int) shorthand is not allowed.
-+	* If the return parameter is an error number, it must be named err.
-+	* If go func name needs to be different than its libc name,
-+	* or the function is not in libc, name could be specified
-+	* at the end, after "=" sign, like
-+	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+
-+
-+This program will generate three files and handle both gc and gccgo implementation:
-+  - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)
-+  - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6
-+  - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.
-+
-+ The generated code looks like this
-+
-+zsyscall_aix_ppc64.go
-+func asyscall(...) (n int, err error) {
-+	 // Pointer Creation
-+	 r1, e1 := callasyscall(...)
-+	 // Type Conversion
-+	 // Error Handler
-+	 return
-+}
-+
-+zsyscall_aix_ppc64_gc.go
-+//go:cgo_import_dynamic libc_asyscall asyscall "libc.a/shr_64.o"
-+//go:linkname libc_asyscall libc_asyscall
-+var asyscall syscallFunc
-+
-+func callasyscall(...) (r1 uintptr, e1 Errno) {
-+	 r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), "nb_args", ... )
-+	 return
-+}
-+
-+zsyscall_aix_ppc64_ggcgo.go
-+
-+// int asyscall(...)
-+
-+import "C"
-+
-+func callasyscall(...) (r1 uintptr, e1 Errno) {
-+	 r1 = uintptr(C.asyscall(...))
-+	 e1 = syscall.GetErrno()
-+	 return
-+}
-+*/
-+
-+package main
-+
-+import (
-+	"bufio"
-+	"flag"
-+	"fmt"
-+	"io/ioutil"
-+	"os"
-+	"regexp"
-+	"strings"
-+)
-+
-+var (
-+	b32  = flag.Bool("b32", false, "32bit big-endian")
-+	l32  = flag.Bool("l32", false, "32bit little-endian")
-+	aix  = flag.Bool("aix", false, "aix")
-+	tags = flag.String("tags", "", "build tags")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+	return "go run mksyscall_aix_ppc64.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+	return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+	Name string
-+	Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+	fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc64.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+	os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+	list = strings.TrimSpace(list)
-+	if list == "" {
-+		return []string{}
-+	}
-+	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+	if ps == nil {
-+		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+		os.Exit(1)
-+	}
-+	return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+	flag.Usage = usage
-+	flag.Parse()
-+	if len(flag.Args()) <= 0 {
-+		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+		usage()
-+	}
-+
-+	endianness := ""
-+	if *b32 {
-+		endianness = "big-endian"
-+	} else if *l32 {
-+		endianness = "little-endian"
-+	}
-+
-+	pack := ""
-+	// GCCGO
-+	textgccgo := ""
-+	cExtern := "/*\n#include <stdint.h>\n"
-+	// GC
-+	textgc := ""
-+	dynimports := ""
-+	linknames := ""
-+	var vars []string
-+	// COMMON
-+	textcommon := ""
-+	for _, path := range flag.Args() {
-+		file, err := os.Open(path)
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		s := bufio.NewScanner(file)
-+		for s.Scan() {
-+			t := s.Text()
-+			t = strings.TrimSpace(t)
-+			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+			if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+				pack = p[1]
-+			}
-+			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+				continue
-+			}
-+
-+			// Line must be of the form
-+			//	func Open(path string, mode int, perm int) (fd int, err error)
-+			// Split into name, in params, out params.
-+			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+			if f == nil {
-+				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+				os.Exit(1)
-+			}
-+			funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+			// Split argument lists on comma.
-+			in := parseParamList(inps)
-+			out := parseParamList(outps)
-+
-+			inps = strings.Join(in, ", ")
-+			outps = strings.Join(out, ", ")
-+
-+			if sysname == "" {
-+				sysname = funct
-+			}
-+
-+			onlyCommon := false
-+			if funct == "readlen" || funct == "writelen" || funct == "FcntlInt" || funct == "FcntlFlock" {
-+				// This function call another syscall which is already implemented.
-+				// Therefore, the gc and gccgo part must not be generated.
-+				onlyCommon = true
-+			}
-+
-+			// Try in vain to keep people from editing this file.
-+			// The theory is that they jump into the middle of the file
-+			// without reading the header.
-+
-+			textcommon += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+			if !onlyCommon {
-+				textgccgo += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+				textgc += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+			}
-+
-+			// Check if value return, err return available
-+			errvar := ""
-+			rettype := ""
-+			for _, param := range out {
-+				p := parseParam(param)
-+				if p.Type == "error" {
-+					errvar = p.Name
-+				} else {
-+					rettype = p.Type
-+				}
-+			}
-+
-+			sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+			sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+			// GCCGO Prototype return type
-+			cRettype := ""
-+			if rettype == "unsafe.Pointer" {
-+				cRettype = "uintptr_t"
-+			} else if rettype == "uintptr" {
-+				cRettype = "uintptr_t"
-+			} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
-+				cRettype = "uintptr_t"
-+			} else if rettype == "int" {
-+				cRettype = "int"
-+			} else if rettype == "int32" {
-+				cRettype = "int"
-+			} else if rettype == "int64" {
-+				cRettype = "long long"
-+			} else if rettype == "uint32" {
-+				cRettype = "unsigned int"
-+			} else if rettype == "uint64" {
-+				cRettype = "unsigned long long"
-+			} else {
-+				cRettype = "int"
-+			}
-+			if sysname == "exit" {
-+				cRettype = "void"
-+			}
-+
-+			// GCCGO Prototype arguments type
-+			var cIn []string
-+			for i, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "string" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t", "size_t")
-+				} else if p.Type == "unsafe.Pointer" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "uintptr" {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+					cIn = append(cIn, "uintptr_t")
-+				} else if p.Type == "int" {
-+					if (i == 0 || i == 2) && funct == "fcntl" {
-+						// These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock
-+						cIn = append(cIn, "uintptr_t")
-+					} else {
-+						cIn = append(cIn, "int")
-+					}
-+
-+				} else if p.Type == "int32" {
-+					cIn = append(cIn, "int")
-+				} else if p.Type == "int64" {
-+					cIn = append(cIn, "long long")
-+				} else if p.Type == "uint32" {
-+					cIn = append(cIn, "unsigned int")
-+				} else if p.Type == "uint64" {
-+					cIn = append(cIn, "unsigned long long")
-+				} else {
-+					cIn = append(cIn, "int")
-+				}
-+			}
-+
-+			if !onlyCommon {
-+				// GCCGO Prototype Generation
-+				// Imports of system calls from libc
-+				if sysname == "select" {
-+					// select is a keyword of Go. Its name is
-+					// changed to c_select.
-+					cExtern += "#define c_select select\n"
-+				}
-+				cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
-+				cIn := strings.Join(cIn, ", ")
-+				cExtern += fmt.Sprintf("(%s);\n", cIn)
-+			}
-+			// GC Library name
-+			if modname == "" {
-+				modname = "libc.a/shr_64.o"
-+			} else {
-+				fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
-+				os.Exit(1)
-+			}
-+			sysvarname := fmt.Sprintf("libc_%s", sysname)
-+
-+			if !onlyCommon {
-+				// GC Runtime import of function to allow cross-platform builds.
-+				dynimports += fmt.Sprintf("//go:cgo_import_dynamic %s %s \"%s\"\n", sysvarname, sysname, modname)
-+				// GC Link symbol to proc address variable.
-+				linknames += fmt.Sprintf("//go:linkname %s %s\n", sysvarname, sysvarname)
-+				// GC Library proc address variable.
-+				vars = append(vars, sysvarname)
-+			}
-+
-+			strconvfunc := "BytePtrFromString"
-+			strconvtype := "*byte"
-+
-+			// Go function header.
-+			if outps != "" {
-+				outps = fmt.Sprintf(" (%s)", outps)
-+			}
-+			if textcommon != "" {
-+				textcommon += "\n"
-+			}
-+
-+			textcommon += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
-+
-+			// Prepare arguments tocall.
-+			var argscommon []string // Arguments in the common part
-+			var argscall []string   // Arguments for call prototype
-+			var argsgc []string     // Arguments for gc call (with syscall6)
-+			var argsgccgo []string  // Arguments for gccgo call (with C.name_of_syscall)
-+			n := 0
-+			argN := 0
-+			for _, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(%s))", p.Name))
-+					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+					argsgc = append(argsgc, p.Name)
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+				} else if p.Type == "string" && errvar != "" {
-+					textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+					textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+					textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+
-+					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					argscall = append(argscall, fmt.Sprintf("_p%d uintptr ", n))
-+					argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+					n++
-+				} else if p.Type == "string" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+					textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+					textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+					textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+
-+					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n))
-+					argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+					n++
-+				} else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
-+					// Convert slice into pointer, length.
-+					// Have to be careful not to take address of &a[0] if len == 0:
-+					// pass nil in that case.
-+					textcommon += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
-+					textcommon += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("len(%s)", p.Name))
-+					argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n), fmt.Sprintf("_lenp%d int", n))
-+					argsgc = append(argsgc, fmt.Sprintf("_p%d", n), fmt.Sprintf("uintptr(_lenp%d)", n))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n), fmt.Sprintf("C.size_t(_lenp%d)", n))
-+					n++
-+				} else if p.Type == "int64" && endianness != "" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses int64 with 32 bits mode. Case not yet implemented\n")
-+				} else if p.Type == "bool" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses bool. Case not yet implemented\n")
-+				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil || p.Type == "unsafe.Pointer" {
-+					argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+					argsgc = append(argsgc, p.Name)
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+				} else if p.Type == "int" {
-+					if (argN == 0 || argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt") || (funct == "FcntlFlock")) {
-+						// These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock
-+						argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
-+						argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+						argsgc = append(argsgc, p.Name)
-+						argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+
-+					} else {
-+						argscommon = append(argscommon, p.Name)
-+						argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
-+						argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+						argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+					}
-+				} else if p.Type == "int32" {
-+					argscommon = append(argscommon, p.Name)
-+					argscall = append(argscall, fmt.Sprintf("%s int32", p.Name))
-+					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+				} else if p.Type == "int64" {
-+					argscommon = append(argscommon, p.Name)
-+					argscall = append(argscall, fmt.Sprintf("%s int64", p.Name))
-+					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.longlong(%s)", p.Name))
-+				} else if p.Type == "uint32" {
-+					argscommon = append(argscommon, p.Name)
-+					argscall = append(argscall, fmt.Sprintf("%s uint32", p.Name))
-+					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uint(%s)", p.Name))
-+				} else if p.Type == "uint64" {
-+					argscommon = append(argscommon, p.Name)
-+					argscall = append(argscall, fmt.Sprintf("%s uint64", p.Name))
-+					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.ulonglong(%s)", p.Name))
-+				} else if p.Type == "uintptr" {
-+					argscommon = append(argscommon, p.Name)
-+					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+					argsgc = append(argsgc, p.Name)
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+				} else {
-+					argscommon = append(argscommon, fmt.Sprintf("int(%s)", p.Name))
-+					argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
-+					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+					argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+				}
-+				argN++
-+			}
-+			nargs := len(argsgc)
-+
-+			// COMMON function generation
-+			argscommonlist := strings.Join(argscommon, ", ")
-+			callcommon := fmt.Sprintf("call%s(%s)", sysname, argscommonlist)
-+			ret := []string{"_", "_"}
-+			body := ""
-+			doErrno := false
-+			for i := 0; i < len(out); i++ {
-+				p := parseParam(out[i])
-+				reg := ""
-+				if p.Name == "err" {
-+					reg = "e1"
-+					ret[1] = reg
-+					doErrno = true
-+				} else {
-+					reg = "r0"
-+					ret[0] = reg
-+				}
-+				if p.Type == "bool" {
-+					reg = fmt.Sprintf("%s != 0", reg)
-+				}
-+				if reg != "e1" {
-+					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+				}
-+			}
-+			if ret[0] == "_" && ret[1] == "_" {
-+				textcommon += fmt.Sprintf("\t%s\n", callcommon)
-+			} else {
-+				textcommon += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], callcommon)
-+			}
-+			textcommon += body
-+
-+			if doErrno {
-+				textcommon += "\tif e1 != 0 {\n"
-+				textcommon += "\t\terr = errnoErr(e1)\n"
-+				textcommon += "\t}\n"
-+			}
-+			textcommon += "\treturn\n"
-+			textcommon += "}\n"
-+
-+			if onlyCommon {
-+				continue
-+			}
-+
-+			// CALL Prototype
-+			callProto := fmt.Sprintf("func call%s(%s) (r1 uintptr, e1 Errno) {\n", sysname, strings.Join(argscall, ", "))
-+
-+			// GC function generation
-+			asm := "syscall6"
-+			if nonblock != nil {
-+				asm = "rawSyscall6"
-+			}
-+
-+			if len(argsgc) <= 6 {
-+				for len(argsgc) < 6 {
-+					argsgc = append(argsgc, "0")
-+				}
-+			} else {
-+				fmt.Fprintf(os.Stderr, "%s: too many arguments to system call", funct)
-+				os.Exit(1)
-+			}
-+			argsgclist := strings.Join(argsgc, ", ")
-+			callgc := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, argsgclist)
-+
-+			textgc += callProto
-+			textgc += fmt.Sprintf("\tr1, _, e1 = %s\n", callgc)
-+			textgc += "\treturn\n}\n"
-+
-+			// GCCGO function generation
-+			argsgccgolist := strings.Join(argsgccgo, ", ")
-+			var callgccgo string
-+			if sysname == "select" {
-+				// select is a keyword of Go. Its name is
-+				// changed to c_select.
-+				callgccgo = fmt.Sprintf("C.c_%s(%s)", sysname, argsgccgolist)
-+			} else {
-+				callgccgo = fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist)
-+			}
-+			textgccgo += callProto
-+			textgccgo += fmt.Sprintf("\tr1 = uintptr(%s)\n", callgccgo)
-+			textgccgo += "\te1 = syscall.GetErrno()\n"
-+			textgccgo += "\treturn\n}\n"
-+		}
-+		if err := s.Err(); err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		file.Close()
-+	}
-+	imp := ""
-+	if pack != "unix" {
-+		imp = "import \"golang.org/x/sys/unix\"\n"
-+
-+	}
-+
-+	// Print zsyscall_aix_ppc64.go
-+	err := ioutil.WriteFile("zsyscall_aix_ppc64.go",
-+		[]byte(fmt.Sprintf(srcTemplate1, cmdLine(), buildTags(), pack, imp, textcommon)),
-+		0644)
-+	if err != nil {
-+		fmt.Fprintf(os.Stderr, err.Error())
-+		os.Exit(1)
-+	}
-+
-+	// Print zsyscall_aix_ppc64_gc.go
-+	vardecls := "\t" + strings.Join(vars, ",\n\t")
-+	vardecls += " syscallFunc"
-+	err = ioutil.WriteFile("zsyscall_aix_ppc64_gc.go",
-+		[]byte(fmt.Sprintf(srcTemplate2, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, textgc)),
-+		0644)
-+	if err != nil {
-+		fmt.Fprintf(os.Stderr, err.Error())
-+		os.Exit(1)
-+	}
-+
-+	// Print zsyscall_aix_ppc64_gccgo.go
-+	err = ioutil.WriteFile("zsyscall_aix_ppc64_gccgo.go",
-+		[]byte(fmt.Sprintf(srcTemplate3, cmdLine(), buildTags(), pack, cExtern, imp, textgccgo)),
-+		0644)
-+	if err != nil {
-+		fmt.Fprintf(os.Stderr, err.Error())
-+		os.Exit(1)
-+	}
-+}
-+
-+const srcTemplate1 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+import (
-+	"unsafe"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-+const srcTemplate2 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+// +build !gccgo
-+
-+package %s
-+
-+import (
-+	"unsafe"
-+)
-+%s
-+%s
-+%s
-+type syscallFunc uintptr
-+
-+var (
-+%s
-+)
-+
-+// Implemented in runtime/syscall_aix.go.
-+func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+
-+%s
-+`
-+const srcTemplate3 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+// +build gccgo
-+
-+package %s
-+
-+%s
-+*/
-+import "C"
-+import (
-+	"syscall"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_solaris.go b/vendor/golang.org/x/sys/unix/mksyscall_solaris.go
-new file mode 100644
-index 00000000..675597e4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_solaris.go
-@@ -0,0 +1,341 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+ This program reads a file containing function prototypes
-+ (like syscall_solaris.go) and generates system call bodies.
-+ The prototypes are marked by lines beginning with "//sys"
-+ and read like func declarations if //sys is replaced by func, but:
-+	* The parameter lists must give a name for each argument.
-+	  This includes return parameters.
-+	* The parameter lists must give a type for each argument:
-+	  the (x, y, z int) shorthand is not allowed.
-+	* If the return parameter is an error number, it must be named err.
-+	* If go func name needs to be different than its libc name,
-+	* or the function is not in libc, name could be specified
-+	* at the end, after "=" sign, like
-+	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+*/
-+
-+package main
-+
-+import (
-+	"bufio"
-+	"flag"
-+	"fmt"
-+	"os"
-+	"regexp"
-+	"strings"
-+)
-+
-+var (
-+	b32     = flag.Bool("b32", false, "32bit big-endian")
-+	l32     = flag.Bool("l32", false, "32bit little-endian")
-+	tags    = flag.String("tags", "", "build tags")
-+	illumos = flag.Bool("illumos", false, "illumos specific code generation")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+	return "go run mksyscall_solaris.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+	return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+	Name string
-+	Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+	fmt.Fprintf(os.Stderr, "usage: go run mksyscall_solaris.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+	os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+	list = strings.TrimSpace(list)
-+	if list == "" {
-+		return []string{}
-+	}
-+	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+	if ps == nil {
-+		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+		os.Exit(1)
-+	}
-+	return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+	flag.Usage = usage
-+	flag.Parse()
-+	if len(flag.Args()) <= 0 {
-+		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+		usage()
-+	}
-+
-+	endianness := ""
-+	if *b32 {
-+		endianness = "big-endian"
-+	} else if *l32 {
-+		endianness = "little-endian"
-+	}
-+
-+	pack := ""
-+	text := ""
-+	dynimports := ""
-+	linknames := ""
-+	var vars []string
-+	for _, path := range flag.Args() {
-+		file, err := os.Open(path)
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		s := bufio.NewScanner(file)
-+		for s.Scan() {
-+			t := s.Text()
-+			t = strings.TrimSpace(t)
-+			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+			if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+				pack = p[1]
-+			}
-+			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+				continue
-+			}
-+
-+			// Line must be of the form
-+			//	func Open(path string, mode int, perm int) (fd int, err error)
-+			// Split into name, in params, out params.
-+			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+			if f == nil {
-+				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+				os.Exit(1)
-+			}
-+			funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+			// Split argument lists on comma.
-+			in := parseParamList(inps)
-+			out := parseParamList(outps)
-+
-+			inps = strings.Join(in, ", ")
-+			outps = strings.Join(out, ", ")
-+
-+			// Try in vain to keep people from editing this file.
-+			// The theory is that they jump into the middle of the file
-+			// without reading the header.
-+			text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+			// So file name.
-+			if modname == "" {
-+				modname = "libc"
-+			}
-+
-+			// System call name.
-+			if sysname == "" {
-+				sysname = funct
-+			}
-+
-+			// System call pointer variable name.
-+			sysvarname := fmt.Sprintf("proc%s", sysname)
-+
-+			strconvfunc := "BytePtrFromString"
-+			strconvtype := "*byte"
-+
-+			sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+			// Runtime import of function to allow cross-platform builds.
-+			dynimports += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"%s.so\"\n", sysname, sysname, modname)
-+			// Link symbol to proc address variable.
-+			linknames += fmt.Sprintf("//go:linkname %s libc_%s\n", sysvarname, sysname)
-+			// Library proc address variable.
-+			vars = append(vars, sysvarname)
-+
-+			// Go function header.
-+			outlist := strings.Join(out, ", ")
-+			if outlist != "" {
-+				outlist = fmt.Sprintf(" (%s)", outlist)
-+			}
-+			if text != "" {
-+				text += "\n"
-+			}
-+			text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outlist)
-+
-+			// Check if err return available
-+			errvar := ""
-+			for _, param := range out {
-+				p := parseParam(param)
-+				if p.Type == "error" {
-+					errvar = p.Name
-+					continue
-+				}
-+			}
-+
-+			// Prepare arguments to Syscall.
-+			var args []string
-+			n := 0
-+			for _, param := range in {
-+				p := parseParam(param)
-+				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+					args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
-+				} else if p.Type == "string" && errvar != "" {
-+					text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+					text += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+					text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					n++
-+				} else if p.Type == "string" {
-+					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+					text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+					text += fmt.Sprintf("\t_p%d, _ = %s(%s)\n", n, strconvfunc, p.Name)
-+					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+					n++
-+				} else if s := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); s != nil {
-+					// Convert slice into pointer, length.
-+					// Have to be careful not to take address of &a[0] if len == 0:
-+					// pass nil in that case.
-+					text += fmt.Sprintf("\tvar _p%d *%s\n", n, s[1])
-+					text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
-+					n++
-+				} else if p.Type == "int64" && endianness != "" {
-+					if endianness == "big-endian" {
-+						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+					} else {
-+						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+					}
-+				} else if p.Type == "bool" {
-+					text += fmt.Sprintf("\tvar _p%d uint32\n", n)
-+					text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n)
-+					args = append(args, fmt.Sprintf("uintptr(_p%d)", n))
-+					n++
-+				} else {
-+					args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+				}
-+			}
-+			nargs := len(args)
-+
-+			// Determine which form to use; pad args with zeros.
-+			asm := "sysvicall6"
-+			if nonblock != nil {
-+				asm = "rawSysvicall6"
-+			}
-+			if len(args) <= 6 {
-+				for len(args) < 6 {
-+					args = append(args, "0")
-+				}
-+			} else {
-+				fmt.Fprintf(os.Stderr, "%s: too many arguments to system call\n", path)
-+				os.Exit(1)
-+			}
-+
-+			// Actual call.
-+			arglist := strings.Join(args, ", ")
-+			call := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, arglist)
-+
-+			// Assign return values.
-+			body := ""
-+			ret := []string{"_", "_", "_"}
-+			doErrno := false
-+			for i := 0; i < len(out); i++ {
-+				p := parseParam(out[i])
-+				reg := ""
-+				if p.Name == "err" {
-+					reg = "e1"
-+					ret[2] = reg
-+					doErrno = true
-+				} else {
-+					reg = fmt.Sprintf("r%d", i)
-+					ret[i] = reg
-+				}
-+				if p.Type == "bool" {
-+					reg = fmt.Sprintf("%d != 0", reg)
-+				}
-+				if p.Type == "int64" && endianness != "" {
-+					// 64-bit number in r1:r0 or r0:r1.
-+					if i+2 > len(out) {
-+						fmt.Fprintf(os.Stderr, "%s: not enough registers for int64 return\n", path)
-+						os.Exit(1)
-+					}
-+					if endianness == "big-endian" {
-+						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
-+					} else {
-+						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
-+					}
-+					ret[i] = fmt.Sprintf("r%d", i)
-+					ret[i+1] = fmt.Sprintf("r%d", i+1)
-+				}
-+				if reg != "e1" {
-+					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+				}
-+			}
-+			if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
-+				text += fmt.Sprintf("\t%s\n", call)
-+			} else {
-+				text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
-+			}
-+			text += body
-+
-+			if doErrno {
-+				text += "\tif e1 != 0 {\n"
-+				text += "\t\terr = e1\n"
-+				text += "\t}\n"
-+			}
-+			text += "\treturn\n"
-+			text += "}\n"
-+		}
-+		if err := s.Err(); err != nil {
-+			fmt.Fprintf(os.Stderr, err.Error())
-+			os.Exit(1)
-+		}
-+		file.Close()
-+	}
-+	imp := ""
-+	if pack != "unix" {
-+		imp = "import \"golang.org/x/sys/unix\"\n"
-+	}
-+
-+	syscallimp := ""
-+	if !*illumos {
-+		syscallimp = "\"syscall\""
-+	}
-+
-+	vardecls := "\t" + strings.Join(vars, ",\n\t")
-+	vardecls += " syscallFunc"
-+	fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, syscallimp, imp, dynimports, linknames, vardecls, text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+import (
-+        "unsafe"
-+        %s
-+)
-+%s
-+%s
-+%s
-+var (
-+%s	
-+)
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
-new file mode 100644
-index 00000000..b6b40990
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
-@@ -0,0 +1,355 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// Parse the header files for OpenBSD and generate a Go usable sysctl MIB.
-+//
-+// Build a MIB with each entry being an array containing the level, type and
-+// a hash that will contain additional entries if the current entry is a node.
-+// We then walk this MIB and create a flattened sysctl name to OID hash.
-+
-+package main
-+
-+import (
-+	"bufio"
-+	"fmt"
-+	"os"
-+	"path/filepath"
-+	"regexp"
-+	"sort"
-+	"strings"
-+)
-+
-+var (
-+	goos, goarch string
-+)
-+
-+// cmdLine returns this programs's commandline arguments.
-+func cmdLine() string {
-+	return "go run mksysctl_openbsd.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags.
-+func buildTags() string {
-+	return fmt.Sprintf("%s,%s", goarch, goos)
-+}
-+
-+// reMatch performs regular expression match and stores the substring slice to value pointed by m.
-+func reMatch(re *regexp.Regexp, str string, m *[]string) bool {
-+	*m = re.FindStringSubmatch(str)
-+	if *m != nil {
-+		return true
-+	}
-+	return false
-+}
-+
-+type nodeElement struct {
-+	n  int
-+	t  string
-+	pE *map[string]nodeElement
-+}
-+
-+var (
-+	debugEnabled bool
-+	mib          map[string]nodeElement
-+	node         *map[string]nodeElement
-+	nodeMap      map[string]string
-+	sysCtl       []string
-+)
-+
-+var (
-+	ctlNames1RE = regexp.MustCompile(`^#define\s+(CTL_NAMES)\s+{`)
-+	ctlNames2RE = regexp.MustCompile(`^#define\s+(CTL_(.*)_NAMES)\s+{`)
-+	ctlNames3RE = regexp.MustCompile(`^#define\s+((.*)CTL_NAMES)\s+{`)
-+	netInetRE   = regexp.MustCompile(`^netinet/`)
-+	netInet6RE  = regexp.MustCompile(`^netinet6/`)
-+	netRE       = regexp.MustCompile(`^net/`)
-+	bracesRE    = regexp.MustCompile(`{.*}`)
-+	ctlTypeRE   = regexp.MustCompile(`{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}`)
-+	fsNetKernRE = regexp.MustCompile(`^(fs|net|kern)_`)
-+)
-+
-+func debug(s string) {
-+	if debugEnabled {
-+		fmt.Fprintln(os.Stderr, s)
-+	}
-+}
-+
-+// Walk the MIB and build a sysctl name to OID mapping.
-+func buildSysctl(pNode *map[string]nodeElement, name string, oid []int) {
-+	lNode := pNode // local copy of pointer to node
-+	var keys []string
-+	for k := range *lNode {
-+		keys = append(keys, k)
-+	}
-+	sort.Strings(keys)
-+
-+	for _, key := range keys {
-+		nodename := name
-+		if name != "" {
-+			nodename += "."
-+		}
-+		nodename += key
-+
-+		nodeoid := append(oid, (*pNode)[key].n)
-+
-+		if (*pNode)[key].t == `CTLTYPE_NODE` {
-+			if _, ok := nodeMap[nodename]; ok {
-+				lNode = &mib
-+				ctlName := nodeMap[nodename]
-+				for _, part := range strings.Split(ctlName, ".") {
-+					lNode = ((*lNode)[part]).pE
-+				}
-+			} else {
-+				lNode = (*pNode)[key].pE
-+			}
-+			buildSysctl(lNode, nodename, nodeoid)
-+		} else if (*pNode)[key].t != "" {
-+			oidStr := []string{}
-+			for j := range nodeoid {
-+				oidStr = append(oidStr, fmt.Sprintf("%d", nodeoid[j]))
-+			}
-+			text := "\t{ \"" + nodename + "\", []_C_int{ " + strings.Join(oidStr, ", ") + " } }, \n"
-+			sysCtl = append(sysCtl, text)
-+		}
-+	}
-+}
-+
-+func main() {
-+	// Get the OS (using GOOS_TARGET if it exist)
-+	goos = os.Getenv("GOOS_TARGET")
-+	if goos == "" {
-+		goos = os.Getenv("GOOS")
-+	}
-+	// Get the architecture (using GOARCH_TARGET if it exists)
-+	goarch = os.Getenv("GOARCH_TARGET")
-+	if goarch == "" {
-+		goarch = os.Getenv("GOARCH")
-+	}
-+	// Check if GOOS and GOARCH environment variables are defined
-+	if goarch == "" || goos == "" {
-+		fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n")
-+		os.Exit(1)
-+	}
-+
-+	mib = make(map[string]nodeElement)
-+	headers := [...]string{
-+		`sys/sysctl.h`,
-+		`sys/socket.h`,
-+		`sys/tty.h`,
-+		`sys/malloc.h`,
-+		`sys/mount.h`,
-+		`sys/namei.h`,
-+		`sys/sem.h`,
-+		`sys/shm.h`,
-+		`sys/vmmeter.h`,
-+		`uvm/uvmexp.h`,
-+		`uvm/uvm_param.h`,
-+		`uvm/uvm_swap_encrypt.h`,
-+		`ddb/db_var.h`,
-+		`net/if.h`,
-+		`net/if_pfsync.h`,
-+		`net/pipex.h`,
-+		`netinet/in.h`,
-+		`netinet/icmp_var.h`,
-+		`netinet/igmp_var.h`,
-+		`netinet/ip_ah.h`,
-+		`netinet/ip_carp.h`,
-+		`netinet/ip_divert.h`,
-+		`netinet/ip_esp.h`,
-+		`netinet/ip_ether.h`,
-+		`netinet/ip_gre.h`,
-+		`netinet/ip_ipcomp.h`,
-+		`netinet/ip_ipip.h`,
-+		`netinet/pim_var.h`,
-+		`netinet/tcp_var.h`,
-+		`netinet/udp_var.h`,
-+		`netinet6/in6.h`,
-+		`netinet6/ip6_divert.h`,
-+		`netinet6/pim6_var.h`,
-+		`netinet/icmp6.h`,
-+		`netmpls/mpls.h`,
-+	}
-+
-+	ctls := [...]string{
-+		`kern`,
-+		`vm`,
-+		`fs`,
-+		`net`,
-+		//debug			/* Special handling required */
-+		`hw`,
-+		//machdep		/* Arch specific */
-+		`user`,
-+		`ddb`,
-+		//vfs			/* Special handling required */
-+		`fs.posix`,
-+		`kern.forkstat`,
-+		`kern.intrcnt`,
-+		`kern.malloc`,
-+		`kern.nchstats`,
-+		`kern.seminfo`,
-+		`kern.shminfo`,
-+		`kern.timecounter`,
-+		`kern.tty`,
-+		`kern.watchdog`,
-+		`net.bpf`,
-+		`net.ifq`,
-+		`net.inet`,
-+		`net.inet.ah`,
-+		`net.inet.carp`,
-+		`net.inet.divert`,
-+		`net.inet.esp`,
-+		`net.inet.etherip`,
-+		`net.inet.gre`,
-+		`net.inet.icmp`,
-+		`net.inet.igmp`,
-+		`net.inet.ip`,
-+		`net.inet.ip.ifq`,
-+		`net.inet.ipcomp`,
-+		`net.inet.ipip`,
-+		`net.inet.mobileip`,
-+		`net.inet.pfsync`,
-+		`net.inet.pim`,
-+		`net.inet.tcp`,
-+		`net.inet.udp`,
-+		`net.inet6`,
-+		`net.inet6.divert`,
-+		`net.inet6.ip6`,
-+		`net.inet6.icmp6`,
-+		`net.inet6.pim6`,
-+		`net.inet6.tcp6`,
-+		`net.inet6.udp6`,
-+		`net.mpls`,
-+		`net.mpls.ifq`,
-+		`net.key`,
-+		`net.pflow`,
-+		`net.pfsync`,
-+		`net.pipex`,
-+		`net.rt`,
-+		`vm.swapencrypt`,
-+		//vfsgenctl		/* Special handling required */
-+	}
-+
-+	// Node name "fixups"
-+	ctlMap := map[string]string{
-+		"ipproto":             "net.inet",
-+		"net.inet.ipproto":    "net.inet",
-+		"net.inet6.ipv6proto": "net.inet6",
-+		"net.inet6.ipv6":      "net.inet6.ip6",
-+		"net.inet.icmpv6":     "net.inet6.icmp6",
-+		"net.inet6.divert6":   "net.inet6.divert",
-+		"net.inet6.tcp6":      "net.inet.tcp",
-+		"net.inet6.udp6":      "net.inet.udp",
-+		"mpls":                "net.mpls",
-+		"swpenc":              "vm.swapencrypt",
-+	}
-+
-+	// Node mappings
-+	nodeMap = map[string]string{
-+		"net.inet.ip.ifq": "net.ifq",
-+		"net.inet.pfsync": "net.pfsync",
-+		"net.mpls.ifq":    "net.ifq",
-+	}
-+
-+	mCtls := make(map[string]bool)
-+	for _, ctl := range ctls {
-+		mCtls[ctl] = true
-+	}
-+
-+	for _, header := range headers {
-+		debug("Processing " + header)
-+		file, err := os.Open(filepath.Join("/usr/include", header))
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, "%v\n", err)
-+			os.Exit(1)
-+		}
-+		s := bufio.NewScanner(file)
-+		for s.Scan() {
-+			var sub []string
-+			if reMatch(ctlNames1RE, s.Text(), &sub) ||
-+				reMatch(ctlNames2RE, s.Text(), &sub) ||
-+				reMatch(ctlNames3RE, s.Text(), &sub) {
-+				if sub[1] == `CTL_NAMES` {
-+					// Top level.
-+					node = &mib
-+				} else {
-+					// Node.
-+					nodename := strings.ToLower(sub[2])
-+					ctlName := ""
-+					if reMatch(netInetRE, header, &sub) {
-+						ctlName = "net.inet." + nodename
-+					} else if reMatch(netInet6RE, header, &sub) {
-+						ctlName = "net.inet6." + nodename
-+					} else if reMatch(netRE, header, &sub) {
-+						ctlName = "net." + nodename
-+					} else {
-+						ctlName = nodename
-+						ctlName = fsNetKernRE.ReplaceAllString(ctlName, `$1.`)
-+					}
-+
-+					if val, ok := ctlMap[ctlName]; ok {
-+						ctlName = val
-+					}
-+					if _, ok := mCtls[ctlName]; !ok {
-+						debug("Ignoring " + ctlName + "...")
-+						continue
-+					}
-+
-+					// Walk down from the top of the MIB.
-+					node = &mib
-+					for _, part := range strings.Split(ctlName, ".") {
-+						if _, ok := (*node)[part]; !ok {
-+							debug("Missing node " + part)
-+							(*node)[part] = nodeElement{n: 0, t: "", pE: &map[string]nodeElement{}}
-+						}
-+						node = (*node)[part].pE
-+					}
-+				}
-+
-+				// Populate current node with entries.
-+				i := -1
-+				for !strings.HasPrefix(s.Text(), "}") {
-+					s.Scan()
-+					if reMatch(bracesRE, s.Text(), &sub) {
-+						i++
-+					}
-+					if !reMatch(ctlTypeRE, s.Text(), &sub) {
-+						continue
-+					}
-+					(*node)[sub[1]] = nodeElement{n: i, t: sub[2], pE: &map[string]nodeElement{}}
-+				}
-+			}
-+		}
-+		err = s.Err()
-+		if err != nil {
-+			fmt.Fprintf(os.Stderr, "%v\n", err)
-+			os.Exit(1)
-+		}
-+		file.Close()
-+	}
-+	buildSysctl(&mib, "", []int{})
-+
-+	sort.Strings(sysCtl)
-+	text := strings.Join(sysCtl, "")
-+
-+	fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+type mibentry struct {
-+	ctlname string
-+	ctloid []_C_int
-+}
-+
-+var sysctlMib = []mibentry {
-+%s
-+}
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksysnum.go b/vendor/golang.org/x/sys/unix/mksysnum.go
-new file mode 100644
-index 00000000..baa6ecd8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksysnum.go
-@@ -0,0 +1,190 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// Generate system call table for DragonFly, NetBSD,
-+// FreeBSD, OpenBSD or Darwin from master list
-+// (for example, /usr/src/sys/kern/syscalls.master or
-+// sys/syscall.h).
-+package main
-+
-+import (
-+	"bufio"
-+	"fmt"
-+	"io"
-+	"io/ioutil"
-+	"net/http"
-+	"os"
-+	"regexp"
-+	"strings"
-+)
-+
-+var (
-+	goos, goarch string
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+	return "go run mksysnum.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+	return fmt.Sprintf("%s,%s", goarch, goos)
-+}
-+
-+func checkErr(err error) {
-+	if err != nil {
-+		fmt.Fprintf(os.Stderr, "%v\n", err)
-+		os.Exit(1)
-+	}
-+}
-+
-+// source string and substring slice for regexp
-+type re struct {
-+	str string   // source string
-+	sub []string // matched sub-string
-+}
-+
-+// Match performs regular expression match
-+func (r *re) Match(exp string) bool {
-+	r.sub = regexp.MustCompile(exp).FindStringSubmatch(r.str)
-+	if r.sub != nil {
-+		return true
-+	}
-+	return false
-+}
-+
-+// fetchFile fetches a text file from URL
-+func fetchFile(URL string) io.Reader {
-+	resp, err := http.Get(URL)
-+	checkErr(err)
-+	defer resp.Body.Close()
-+	body, err := ioutil.ReadAll(resp.Body)
-+	checkErr(err)
-+	return strings.NewReader(string(body))
-+}
-+
-+// readFile reads a text file from path
-+func readFile(path string) io.Reader {
-+	file, err := os.Open(os.Args[1])
-+	checkErr(err)
-+	return file
-+}
-+
-+func format(name, num, proto string) string {
-+	name = strings.ToUpper(name)
-+	// There are multiple entries for enosys and nosys, so comment them out.
-+	nm := re{str: name}
-+	if nm.Match(`^SYS_E?NOSYS$`) {
-+		name = fmt.Sprintf("// %s", name)
-+	}
-+	if name == `SYS_SYS_EXIT` {
-+		name = `SYS_EXIT`
-+	}
-+	return fmt.Sprintf("	%s = %s;  // %s\n", name, num, proto)
-+}
-+
-+func main() {
-+	// Get the OS (using GOOS_TARGET if it exist)
-+	goos = os.Getenv("GOOS_TARGET")
-+	if goos == "" {
-+		goos = os.Getenv("GOOS")
-+	}
-+	// Get the architecture (using GOARCH_TARGET if it exists)
-+	goarch = os.Getenv("GOARCH_TARGET")
-+	if goarch == "" {
-+		goarch = os.Getenv("GOARCH")
-+	}
-+	// Check if GOOS and GOARCH environment variables are defined
-+	if goarch == "" || goos == "" {
-+		fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n")
-+		os.Exit(1)
-+	}
-+
-+	file := strings.TrimSpace(os.Args[1])
-+	var syscalls io.Reader
-+	if strings.HasPrefix(file, "https://") || strings.HasPrefix(file, "http://") {
-+		// Download syscalls.master file
-+		syscalls = fetchFile(file)
-+	} else {
-+		syscalls = readFile(file)
-+	}
-+
-+	var text, line string
-+	s := bufio.NewScanner(syscalls)
-+	for s.Scan() {
-+		t := re{str: line}
-+		if t.Match(`^(.*)\\$`) {
-+			// Handle continuation
-+			line = t.sub[1]
-+			line += strings.TrimLeft(s.Text(), " \t")
-+		} else {
-+			// New line
-+			line = s.Text()
-+		}
-+		t = re{str: line}
-+		if t.Match(`\\$`) {
-+			continue
-+		}
-+		t = re{str: line}
-+
-+		switch goos {
-+		case "dragonfly":
-+			if t.Match(`^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$`) {
-+				num, proto := t.sub[1], t.sub[2]
-+				name := fmt.Sprintf("SYS_%s", t.sub[3])
-+				text += format(name, num, proto)
-+			}
-+		case "freebsd":
-+			if t.Match(`^([0-9]+)\s+\S+\s+(?:(?:NO)?STD|COMPAT10)\s+({ \S+\s+(\w+).*)$`) {
-+				num, proto := t.sub[1], t.sub[2]
-+				name := fmt.Sprintf("SYS_%s", t.sub[3])
-+				text += format(name, num, proto)
-+			}
-+		case "openbsd":
-+			if t.Match(`^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$`) {
-+				num, proto, name := t.sub[1], t.sub[3], t.sub[4]
-+				text += format(name, num, proto)
-+			}
-+		case "netbsd":
-+			if t.Match(`^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$`) {
-+				num, proto, compat := t.sub[1], t.sub[6], t.sub[8]
-+				name := t.sub[7] + "_" + t.sub[9]
-+				if t.sub[11] != "" {
-+					name = t.sub[7] + "_" + t.sub[11]
-+				}
-+				name = strings.ToUpper(name)
-+				if compat == "" || compat == "13" || compat == "30" || compat == "50" {
-+					text += fmt.Sprintf("	%s = %s;  // %s\n", name, num, proto)
-+				}
-+			}
-+		case "darwin":
-+			if t.Match(`^#define\s+SYS_(\w+)\s+([0-9]+)`) {
-+				name, num := t.sub[1], t.sub[2]
-+				name = strings.ToUpper(name)
-+				text += fmt.Sprintf("	SYS_%s = %s;\n", name, num)
-+			}
-+		default:
-+			fmt.Fprintf(os.Stderr, "unrecognized GOOS=%s\n", goos)
-+			os.Exit(1)
-+
-+		}
-+	}
-+	err := s.Err()
-+	checkErr(err)
-+
-+	fmt.Printf(template, cmdLine(), buildTags(), text)
-+}
-+
-+const template = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+const(
-+%s)`
-diff --git a/vendor/golang.org/x/sys/unix/openbsd_pledge.go b/vendor/golang.org/x/sys/unix/openbsd_pledge.go
-deleted file mode 100644
-index db4f72ea..00000000
---- a/vendor/golang.org/x/sys/unix/openbsd_pledge.go
-+++ /dev/null
-@@ -1,38 +0,0 @@
--// Copyright 2016 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build openbsd
--// +build 386 amd64 arm
--
--package unix
--
--import (
--	"syscall"
--	"unsafe"
--)
--
--const (
--	SYS_PLEDGE = 108
--)
--
--// Pledge implements the pledge syscall. For more information see pledge(2).
--func Pledge(promises string, paths []string) error {
--	promisesPtr, err := syscall.BytePtrFromString(promises)
--	if err != nil {
--		return err
--	}
--	promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil)
--	if paths != nil {
--		var pathsPtr []*byte
--		if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil {
--			return err
--		}
--		pathsUnsafe = unsafe.Pointer(&pathsPtr[0])
--	}
--	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0)
--	if e != 0 {
--		return e
--	}
--	return nil
--}
-diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go
-new file mode 100644
-index 00000000..bc2f3629
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go
-@@ -0,0 +1,15 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+// For Unix, get the pagesize from the runtime.
-+
-+package unix
-+
-+import "syscall"
-+
-+func Getpagesize() int {
-+	return syscall.Getpagesize()
-+}
-diff --git a/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/vendor/golang.org/x/sys/unix/pledge_openbsd.go
-new file mode 100644
-index 00000000..eb48294b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/pledge_openbsd.go
-@@ -0,0 +1,163 @@
-+// Copyright 2016 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import (
-+	"errors"
-+	"fmt"
-+	"strconv"
-+	"syscall"
-+	"unsafe"
-+)
-+
-+// Pledge implements the pledge syscall.
-+//
-+// The pledge syscall does not accept execpromises on OpenBSD releases
-+// before 6.3.
-+//
-+// execpromises must be empty when Pledge is called on OpenBSD
-+// releases predating 6.3, otherwise an error will be returned.
-+//
-+// For more information see pledge(2).
-+func Pledge(promises, execpromises string) error {
-+	maj, min, err := majmin()
-+	if err != nil {
-+		return err
-+	}
-+
-+	err = pledgeAvailable(maj, min, execpromises)
-+	if err != nil {
-+		return err
-+	}
-+
-+	pptr, err := syscall.BytePtrFromString(promises)
-+	if err != nil {
-+		return err
-+	}
-+
-+	// This variable will hold either a nil unsafe.Pointer or
-+	// an unsafe.Pointer to a string (execpromises).
-+	var expr unsafe.Pointer
-+
-+	// If we're running on OpenBSD > 6.2, pass execpromises to the syscall.
-+	if maj > 6 || (maj == 6 && min > 2) {
-+		exptr, err := syscall.BytePtrFromString(execpromises)
-+		if err != nil {
-+			return err
-+		}
-+		expr = unsafe.Pointer(exptr)
-+	}
-+
-+	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
-+	if e != 0 {
-+		return e
-+	}
-+
-+	return nil
-+}
-+
-+// PledgePromises implements the pledge syscall.
-+//
-+// This changes the promises and leaves the execpromises untouched.
-+//
-+// For more information see pledge(2).
-+func PledgePromises(promises string) error {
-+	maj, min, err := majmin()
-+	if err != nil {
-+		return err
-+	}
-+
-+	err = pledgeAvailable(maj, min, "")
-+	if err != nil {
-+		return err
-+	}
-+
-+	// This variable holds the execpromises and is always nil.
-+	var expr unsafe.Pointer
-+
-+	pptr, err := syscall.BytePtrFromString(promises)
-+	if err != nil {
-+		return err
-+	}
-+
-+	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
-+	if e != 0 {
-+		return e
-+	}
-+
-+	return nil
-+}
-+
-+// PledgeExecpromises implements the pledge syscall.
-+//
-+// This changes the execpromises and leaves the promises untouched.
-+//
-+// For more information see pledge(2).
-+func PledgeExecpromises(execpromises string) error {
-+	maj, min, err := majmin()
-+	if err != nil {
-+		return err
-+	}
-+
-+	err = pledgeAvailable(maj, min, execpromises)
-+	if err != nil {
-+		return err
-+	}
-+
-+	// This variable holds the promises and is always nil.
-+	var pptr unsafe.Pointer
-+
-+	exptr, err := syscall.BytePtrFromString(execpromises)
-+	if err != nil {
-+		return err
-+	}
-+
-+	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)
-+	if e != 0 {
-+		return e
-+	}
-+
-+	return nil
-+}
-+
-+// majmin returns major and minor version number for an OpenBSD system.
-+func majmin() (major int, minor int, err error) {
-+	var v Utsname
-+	err = Uname(&v)
-+	if err != nil {
-+		return
-+	}
-+
-+	major, err = strconv.Atoi(string(v.Release[0]))
-+	if err != nil {
-+		err = errors.New("cannot parse major version number returned by uname")
-+		return
-+	}
-+
-+	minor, err = strconv.Atoi(string(v.Release[2]))
-+	if err != nil {
-+		err = errors.New("cannot parse minor version number returned by uname")
-+		return
-+	}
-+
-+	return
-+}
-+
-+// pledgeAvailable checks for availability of the pledge(2) syscall
-+// based on the running OpenBSD version.
-+func pledgeAvailable(maj, min int, execpromises string) error {
-+	// If OpenBSD <= 5.9, pledge is not available.
-+	if (maj == 5 && min != 9) || maj < 5 {
-+		return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min)
-+	}
-+
-+	// If OpenBSD <= 6.2 and execpromises is not empty,
-+	// return an error - execpromises is not available before 6.3
-+	if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" {
-+		return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min)
-+	}
-+
-+	return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go
-index 3c7627eb..61712b51 100644
---- a/vendor/golang.org/x/sys/unix/race.go
-+++ b/vendor/golang.org/x/sys/unix/race.go
-@@ -1,4 +1,4 @@
--// Copyright 2012 The Go Authors.  All rights reserved.
-+// Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
-diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go
-index f8678e0d..ad026678 100644
---- a/vendor/golang.org/x/sys/unix/race0.go
-+++ b/vendor/golang.org/x/sys/unix/race0.go
-@@ -1,8 +1,8 @@
--// Copyright 2012 The Go Authors.  All rights reserved.
-+// Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
-+// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go
-new file mode 100644
-index 00000000..3a90aa6d
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/readdirent_getdents.go
-@@ -0,0 +1,12 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix dragonfly freebsd linux netbsd openbsd
-+
-+package unix
-+
-+// ReadDirent reads directory entries from fd and writes them into buf.
-+func ReadDirent(fd int, buf []byte) (n int, err error) {
-+	return Getdents(fd, buf)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
-new file mode 100644
-index 00000000..5fdae40b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
-@@ -0,0 +1,19 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin
-+
-+package unix
-+
-+import "unsafe"
-+
-+// ReadDirent reads directory entries from fd and writes them into buf.
-+func ReadDirent(fd int, buf []byte) (n int, err error) {
-+	// Final argument is (basep *uintptr) and the syscall doesn't take nil.
-+	// 64 bits should be enough. (32 bits isn't even on 386). Since the
-+	// actual system call is getdirentries64, 64 is a good guess.
-+	// TODO(rsc): Can we use a single global basep for all calls?
-+	var base = (*uintptr)(unsafe.Pointer(new(uint64)))
-+	return Getdirentries(fd, buf, base)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go b/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
-new file mode 100644
-index 00000000..5144deec
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
-@@ -0,0 +1,16 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+// Round the length of a raw sockaddr up to align it properly.
-+func cmsgAlignOf(salen int) int {
-+	salign := SizeofPtr
-+	if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {
-+		// 64-bit Dragonfly before the September 2019 ABI changes still requires
-+		// 32-bit aligned access to network subsystem.
-+		salign = 4
-+	}
-+	return (salen + salign - 1) & ^(salign - 1)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-index d9ff4731..8bf45705 100644
---- a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-@@ -1,4 +1,4 @@
--// Copyright 2011 The Go Authors.  All rights reserved.
-+// Copyright 2011 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
-@@ -17,7 +17,7 @@ func UnixCredentials(ucred *Ucred) []byte {
- 	h.Level = SOL_SOCKET
- 	h.Type = SCM_CREDENTIALS
- 	h.SetLen(CmsgLen(SizeofUcred))
--	*((*Ucred)(cmsgData(h))) = *ucred
-+	*(*Ucred)(h.data(0)) = *ucred
- 	return b
- }
- 
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-index bb756ece..003916ed 100644
---- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-@@ -2,25 +2,15 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- // Socket control messages
- 
- package unix
- 
--import "unsafe"
--
--// Round the length of a raw sockaddr up to align it properly.
--func cmsgAlignOf(salen int) int {
--	salign := sizeofPtr
--	// NOTE: It seems like 64-bit Darwin, DragonFly BSD and
--	// Solaris kernels still require 32-bit aligned access to
--	// network subsystem.
--	if darwin64Bit || dragonfly64Bit || solaris64Bit {
--		salign = 4
--	}
--	return (salen + salign - 1) & ^(salign - 1)
--}
-+import (
-+	"unsafe"
-+)
- 
- // CmsgLen returns the value to store in the Len field of the Cmsghdr
- // structure, taking into account any necessary alignment.
-@@ -34,8 +24,8 @@ func CmsgSpace(datalen int) int {
- 	return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)
- }
- 
--func cmsgData(h *Cmsghdr) unsafe.Pointer {
--	return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))
-+func (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {
-+	return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)
- }
- 
- // SocketControlMessage represents a socket control message.
-@@ -78,10 +68,8 @@ func UnixRights(fds ...int) []byte {
- 	h.Level = SOL_SOCKET
- 	h.Type = SCM_RIGHTS
- 	h.SetLen(CmsgLen(datalen))
--	data := cmsgData(h)
--	for _, fd := range fds {
--		*(*int32)(data) = int32(fd)
--		data = unsafe.Pointer(uintptr(data) + 4)
-+	for i, fd := range fds {
-+		*(*int32)(h.data(4 * uintptr(i))) = int32(fd)
- 	}
- 	return b
- }
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
-new file mode 100644
-index 00000000..7d08dae5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
-@@ -0,0 +1,38 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import (
-+	"runtime"
-+)
-+
-+// Round the length of a raw sockaddr up to align it properly.
-+func cmsgAlignOf(salen int) int {
-+	salign := SizeofPtr
-+
-+	// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in
-+	// sockcmsg_dragonfly.go
-+	switch runtime.GOOS {
-+	case "aix":
-+		// There is no alignment on AIX.
-+		salign = 1
-+	case "darwin", "illumos", "solaris":
-+		// NOTE: It seems like 64-bit Darwin, Illumos and Solaris
-+		// kernels still require 32-bit aligned access to network
-+		// subsystem.
-+		if SizeofPtr == 8 {
-+			salign = 4
-+		}
-+	case "netbsd", "openbsd":
-+		// NetBSD and OpenBSD armv7 require 64-bit alignment.
-+		if runtime.GOARCH == "arm" {
-+			salign = 8
-+		}
-+	}
-+
-+	return (salen + salign - 1) & ^(salign - 1)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go
-index 35ed6643..17fb6986 100644
---- a/vendor/golang.org/x/sys/unix/str.go
-+++ b/vendor/golang.org/x/sys/unix/str.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go
-index 85e35020..fd4ee8eb 100644
---- a/vendor/golang.org/x/sys/unix/syscall.go
-+++ b/vendor/golang.org/x/sys/unix/syscall.go
-@@ -2,33 +2,36 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- // Package unix contains an interface to the low-level operating system
--// primitives.  OS details vary depending on the underlying system, and
-+// primitives. OS details vary depending on the underlying system, and
- // by default, godoc will display OS-specific documentation for the current
--// system.  If you want godoc to display OS documentation for another
--// system, set $GOOS and $GOARCH to the desired system.  For example, if
-+// system. If you want godoc to display OS documentation for another
-+// system, set $GOOS and $GOARCH to the desired system. For example, if
- // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
- // to freebsd and $GOARCH to arm.
-+//
- // The primary use of this package is inside other packages that provide a more
- // portable interface to the system, such as "os", "time" and "net".  Use
- // those packages rather than this one if you can.
-+//
- // For details of the functions and data types in this package consult
- // the manuals for the appropriate operating system.
-+//
- // These calls return err == nil to indicate success; otherwise
- // err represents an operating system error describing the failure and
- // holds a value of type syscall.Errno.
- package unix // import "golang.org/x/sys/unix"
- 
-+import "strings"
-+
- // ByteSliceFromString returns a NUL-terminated slice of bytes
- // containing the text of s. If s contains a NUL byte at any
- // location, it returns (nil, EINVAL).
- func ByteSliceFromString(s string) ([]byte, error) {
--	for i := 0; i < len(s); i++ {
--		if s[i] == 0 {
--			return nil, EINVAL
--		}
-+	if strings.IndexByte(s, 0) != -1 {
-+		return nil, EINVAL
- 	}
- 	a := make([]byte, len(s)+1)
- 	copy(a, s)
-@@ -47,23 +50,4 @@ func BytePtrFromString(s string) (*byte, error) {
- }
- 
- // Single-word zero for use when we need a valid pointer to 0 bytes.
--// See mkunix.pl.
- var _zero uintptr
--
--func (ts *Timespec) Unix() (sec int64, nsec int64) {
--	return int64(ts.Sec), int64(ts.Nsec)
--}
--
--func (tv *Timeval) Unix() (sec int64, nsec int64) {
--	return int64(tv.Sec), int64(tv.Usec) * 1000
--}
--
--func (ts *Timespec) Nano() int64 {
--	return int64(ts.Sec)*1e9 + int64(ts.Nsec)
--}
--
--func (tv *Timeval) Nano() int64 {
--	return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
--}
--
--func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go
-new file mode 100644
-index 00000000..9ad8a0d4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go
-@@ -0,0 +1,536 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+
-+// Aix system calls.
-+// This file is compiled as ordinary Go code,
-+// but it is also input to mksyscall,
-+// which parses the //sys lines and generates system call stubs.
-+// Note that sometimes we use a lowercase //sys name and
-+// wrap it in our own nicer implementation.
-+
-+package unix
-+
-+import "unsafe"
-+
-+/*
-+ * Wrapped
-+ */
-+
-+//sys	utimes(path string, times *[2]Timeval) (err error)
-+func Utimes(path string, tv []Timeval) error {
-+	if len(tv) != 2 {
-+		return EINVAL
-+	}
-+	return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
-+}
-+
-+//sys	utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)
-+func UtimesNano(path string, ts []Timespec) error {
-+	if len(ts) != 2 {
-+		return EINVAL
-+	}
-+	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
-+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
-+	if ts == nil {
-+		return utimensat(dirfd, path, nil, flags)
-+	}
-+	if len(ts) != 2 {
-+		return EINVAL
-+	}
-+	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
-+}
-+
-+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	if sa.Port < 0 || sa.Port > 0xFFFF {
-+		return nil, 0, EINVAL
-+	}
-+	sa.raw.Family = AF_INET
-+	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-+	p[0] = byte(sa.Port >> 8)
-+	p[1] = byte(sa.Port)
-+	for i := 0; i < len(sa.Addr); i++ {
-+		sa.raw.Addr[i] = sa.Addr[i]
-+	}
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
-+}
-+
-+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	if sa.Port < 0 || sa.Port > 0xFFFF {
-+		return nil, 0, EINVAL
-+	}
-+	sa.raw.Family = AF_INET6
-+	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-+	p[0] = byte(sa.Port >> 8)
-+	p[1] = byte(sa.Port)
-+	sa.raw.Scope_id = sa.ZoneId
-+	for i := 0; i < len(sa.Addr); i++ {
-+		sa.raw.Addr[i] = sa.Addr[i]
-+	}
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
-+}
-+
-+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	name := sa.Name
-+	n := len(name)
-+	if n > len(sa.raw.Path) {
-+		return nil, 0, EINVAL
-+	}
-+	if n == len(sa.raw.Path) && name[0] != '@' {
-+		return nil, 0, EINVAL
-+	}
-+	sa.raw.Family = AF_UNIX
-+	for i := 0; i < n; i++ {
-+		sa.raw.Path[i] = uint8(name[i])
-+	}
-+	// length is family (uint16), name, NUL.
-+	sl := _Socklen(2)
-+	if n > 0 {
-+		sl += _Socklen(n) + 1
-+	}
-+	if sa.raw.Path[0] == '@' {
-+		sa.raw.Path[0] = 0
-+		// Don't count trailing NUL for abstract address.
-+		sl--
-+	}
-+
-+	return unsafe.Pointer(&sa.raw), sl, nil
-+}
-+
-+func Getsockname(fd int) (sa Sockaddr, err error) {
-+	var rsa RawSockaddrAny
-+	var len _Socklen = SizeofSockaddrAny
-+	if err = getsockname(fd, &rsa, &len); err != nil {
-+		return
-+	}
-+	return anyToSockaddr(fd, &rsa)
-+}
-+
-+//sys	getcwd(buf []byte) (err error)
-+
-+const ImplementsGetwd = true
-+
-+func Getwd() (ret string, err error) {
-+	for len := uint64(4096); ; len *= 2 {
-+		b := make([]byte, len)
-+		err := getcwd(b)
-+		if err == nil {
-+			i := 0
-+			for b[i] != 0 {
-+				i++
-+			}
-+			return string(b[0:i]), nil
-+		}
-+		if err != ERANGE {
-+			return "", err
-+		}
-+	}
-+}
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+	err = getcwd(buf)
-+	if err == nil {
-+		i := 0
-+		for buf[i] != 0 {
-+			i++
-+		}
-+		n = i + 1
-+	}
-+	return
-+}
-+
-+func Getgroups() (gids []int, err error) {
-+	n, err := getgroups(0, nil)
-+	if err != nil {
-+		return nil, err
-+	}
-+	if n == 0 {
-+		return nil, nil
-+	}
-+
-+	// Sanity check group count. Max is 16 on BSD.
-+	if n < 0 || n > 1000 {
-+		return nil, EINVAL
-+	}
-+
-+	a := make([]_Gid_t, n)
-+	n, err = getgroups(n, &a[0])
-+	if err != nil {
-+		return nil, err
-+	}
-+	gids = make([]int, n)
-+	for i, v := range a[0:n] {
-+		gids[i] = int(v)
-+	}
-+	return
-+}
-+
-+func Setgroups(gids []int) (err error) {
-+	if len(gids) == 0 {
-+		return setgroups(0, nil)
-+	}
-+
-+	a := make([]_Gid_t, len(gids))
-+	for i, v := range gids {
-+		a[i] = _Gid_t(v)
-+	}
-+	return setgroups(len(a), &a[0])
-+}
-+
-+/*
-+ * Socket
-+ */
-+
-+//sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
-+
-+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
-+	var rsa RawSockaddrAny
-+	var len _Socklen = SizeofSockaddrAny
-+	nfd, err = accept(fd, &rsa, &len)
-+	if nfd == -1 {
-+		return
-+	}
-+	sa, err = anyToSockaddr(fd, &rsa)
-+	if err != nil {
-+		Close(nfd)
-+		nfd = 0
-+	}
-+	return
-+}
-+
-+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
-+	// Recvmsg not implemented on AIX
-+	sa := new(SockaddrUnix)
-+	return -1, -1, -1, sa, ENOSYS
-+}
-+
-+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
-+	_, err = SendmsgN(fd, p, oob, to, flags)
-+	return
-+}
-+
-+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
-+	// SendmsgN not implemented on AIX
-+	return -1, ENOSYS
-+}
-+
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
-+	switch rsa.Addr.Family {
-+
-+	case AF_UNIX:
-+		pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
-+		sa := new(SockaddrUnix)
-+
-+		// Some versions of AIX have a bug in getsockname (see IV78655).
-+		// We can't rely on sa.Len being set correctly.
-+		n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.
-+		for i := 0; i < n; i++ {
-+			if pp.Path[i] == 0 {
-+				n = i
-+				break
-+			}
-+		}
-+
-+		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+		sa.Name = string(bytes)
-+		return sa, nil
-+
-+	case AF_INET:
-+		pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-+		sa := new(SockaddrInet4)
-+		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+		sa.Port = int(p[0])<<8 + int(p[1])
-+		for i := 0; i < len(sa.Addr); i++ {
-+			sa.Addr[i] = pp.Addr[i]
-+		}
-+		return sa, nil
-+
-+	case AF_INET6:
-+		pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-+		sa := new(SockaddrInet6)
-+		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+		sa.Port = int(p[0])<<8 + int(p[1])
-+		sa.ZoneId = pp.Scope_id
-+		for i := 0; i < len(sa.Addr); i++ {
-+			sa.Addr[i] = pp.Addr[i]
-+		}
-+		return sa, nil
-+	}
-+	return nil, EAFNOSUPPORT
-+}
-+
-+func Gettimeofday(tv *Timeval) (err error) {
-+	err = gettimeofday(tv, nil)
-+	return
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
-+}
-+
-+// TODO
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	return -1, ENOSYS
-+}
-+
-+func direntIno(buf []byte) (uint64, bool) {
-+	return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
-+}
-+
-+func direntReclen(buf []byte) (uint64, bool) {
-+	return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
-+}
-+
-+func direntNamlen(buf []byte) (uint64, bool) {
-+	reclen, ok := direntReclen(buf)
-+	if !ok {
-+		return 0, false
-+	}
-+	return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
-+}
-+
-+//sys	getdirent(fd int, buf []byte) (n int, err error)
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+	return getdirent(fd, buf)
-+}
-+
-+//sys	wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)
-+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
-+	var status _C_int
-+	var r Pid_t
-+	err = ERESTART
-+	// AIX wait4 may return with ERESTART errno, while the processus is still
-+	// active.
-+	for err == ERESTART {
-+		r, err = wait4(Pid_t(pid), &status, options, rusage)
-+	}
-+	wpid = int(r)
-+	if wstatus != nil {
-+		*wstatus = WaitStatus(status)
-+	}
-+	return
-+}
-+
-+/*
-+ * Wait
-+ */
-+
-+type WaitStatus uint32
-+
-+func (w WaitStatus) Stopped() bool { return w&0x40 != 0 }
-+func (w WaitStatus) StopSignal() Signal {
-+	if !w.Stopped() {
-+		return -1
-+	}
-+	return Signal(w>>8) & 0xFF
-+}
-+
-+func (w WaitStatus) Exited() bool { return w&0xFF == 0 }
-+func (w WaitStatus) ExitStatus() int {
-+	if !w.Exited() {
-+		return -1
-+	}
-+	return int((w >> 8) & 0xFF)
-+}
-+
-+func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }
-+func (w WaitStatus) Signal() Signal {
-+	if !w.Signaled() {
-+		return -1
-+	}
-+	return Signal(w>>16) & 0xFF
-+}
-+
-+func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }
-+
-+func (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 }
-+
-+func (w WaitStatus) TrapCause() int { return -1 }
-+
-+//sys	ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX
-+// There is no way to create a custom fcntl and to keep //sys fcntl easily,
-+// Therefore, the programmer must call dup2 instead of fcntl in this case.
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+//sys	FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl
-+
-+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
-+//sys	FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl
-+
-+//sys	fcntl(fd int, cmd int, arg int) (val int, err error)
-+
-+/*
-+ * Direct access
-+ */
-+
-+//sys	Acct(path string) (err error)
-+//sys	Chdir(path string) (err error)
-+//sys	Chroot(path string) (err error)
-+//sys	Close(fd int) (err error)
-+//sys	Dup(oldfd int) (fd int, err error)
-+//sys	Exit(code int)
-+//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys	Fchdir(fd int) (err error)
-+//sys	Fchmod(fd int, mode uint32) (err error)
-+//sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
-+//sys	Fdatasync(fd int) (err error)
-+//sys	Fsync(fd int) (err error)
-+// readdir_r
-+//sysnb	Getpgid(pid int) (pgid int, err error)
-+
-+//sys	Getpgrp() (pid int)
-+
-+//sysnb	Getpid() (pid int)
-+//sysnb	Getppid() (ppid int)
-+//sys	Getpriority(which int, who int) (prio int, err error)
-+//sysnb	Getrusage(who int, rusage *Rusage) (err error)
-+//sysnb	Getsid(pid int) (sid int, err error)
-+//sysnb	Kill(pid int, sig Signal) (err error)
-+//sys	Klogctl(typ int, buf []byte) (n int, err error) = syslog
-+//sys	Mkdir(dirfd int, path string, mode uint32) (err error)
-+//sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
-+//sys	Mkfifo(path string, mode uint32) (err error)
-+//sys	Mknod(path string, mode uint32, dev int) (err error)
-+//sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
-+//sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
-+//sys   Open(path string, mode int, perm uint32) (fd int, err error) = open64
-+//sys   Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
-+//sys	read(fd int, p []byte) (n int, err error)
-+//sys	Readlink(path string, buf []byte) (n int, err error)
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
-+//sys	Setdomainname(p []byte) (err error)
-+//sys	Sethostname(p []byte) (err error)
-+//sysnb	Setpgid(pid int, pgid int) (err error)
-+//sysnb	Setsid() (pid int, err error)
-+//sysnb	Settimeofday(tv *Timeval) (err error)
-+
-+//sys	Setuid(uid int) (err error)
-+//sys	Setgid(uid int) (err error)
-+
-+//sys	Setpriority(which int, who int, prio int) (err error)
-+//sys	Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
-+//sys	Sync()
-+//sysnb	Times(tms *Tms) (ticks uintptr, err error)
-+//sysnb	Umask(mask int) (oldmask int)
-+//sysnb	Uname(buf *Utsname) (err error)
-+//sys   Unlink(path string) (err error)
-+//sys   Unlinkat(dirfd int, path string, flags int) (err error)
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
-+//sys	write(fd int, p []byte) (n int, err error)
-+//sys	readlen(fd int, p *byte, np int) (n int, err error) = read
-+//sys	writelen(fd int, p *byte, np int) (n int, err error) = write
-+
-+//sys	Dup2(oldfd int, newfd int) (err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64
-+//sys	Fchown(fd int, uid int, gid int) (err error)
-+//sys	fstat(fd int, stat *Stat_t) (err error)
-+//sys	fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat
-+//sys	Fstatfs(fd int, buf *Statfs_t) (err error)
-+//sys	Ftruncate(fd int, length int64) (err error)
-+//sysnb	Getegid() (egid int)
-+//sysnb	Geteuid() (euid int)
-+//sysnb	Getgid() (gid int)
-+//sysnb	Getuid() (uid int)
-+//sys	Lchown(path string, uid int, gid int) (err error)
-+//sys	Listen(s int, n int) (err error)
-+//sys	lstat(path string, stat *Stat_t) (err error)
-+//sys	Pause() (err error)
-+//sys	Pread(fd int, p []byte, offset int64) (n int, err error) = pread64
-+//sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+//sys	Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
-+//sysnb	Setregid(rgid int, egid int) (err error)
-+//sysnb	Setreuid(ruid int, euid int) (err error)
-+//sys	Shutdown(fd int, how int) (err error)
-+//sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
-+//sys	stat(path string, statptr *Stat_t) (err error)
-+//sys	Statfs(path string, buf *Statfs_t) (err error)
-+//sys	Truncate(path string, length int64) (err error)
-+
-+//sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-+//sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-+//sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
-+//sysnb	setgroups(n int, list *_Gid_t) (err error)
-+//sys	getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
-+//sys	setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
-+//sysnb	socket(domain int, typ int, proto int) (fd int, err error)
-+//sysnb	socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
-+//sysnb	getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
-+//sysnb	getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
-+//sys	recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
-+//sys	sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
-+
-+// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.
-+//sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg
-+//sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg
-+
-+//sys	munmap(addr uintptr, length uintptr) (err error)
-+
-+var mapper = &mmapper{
-+	active: make(map[*byte][]byte),
-+	mmap:   mmap,
-+	munmap: munmap,
-+}
-+
-+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
-+	return mapper.Mmap(fd, offset, length, prot, flags)
-+}
-+
-+func Munmap(b []byte) (err error) {
-+	return mapper.Munmap(b)
-+}
-+
-+//sys	Madvise(b []byte, advice int) (err error)
-+//sys	Mprotect(b []byte, prot int) (err error)
-+//sys	Mlock(b []byte) (err error)
-+//sys	Mlockall(flags int) (err error)
-+//sys	Msync(b []byte, flags int) (err error)
-+//sys	Munlock(b []byte) (err error)
-+//sys	Munlockall() (err error)
-+
-+//sysnb pipe(p *[2]_C_int) (err error)
-+
-+func Pipe(p []int) (err error) {
-+	if len(p) != 2 {
-+		return EINVAL
-+	}
-+	var pp [2]_C_int
-+	err = pipe(&pp)
-+	p[0] = int(pp[0])
-+	p[1] = int(pp[1])
-+	return
-+}
-+
-+//sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+	if len(fds) == 0 {
-+		return poll(nil, 0, timeout)
-+	}
-+	return poll(&fds[0], len(fds), timeout)
-+}
-+
-+//sys	gettimeofday(tv *Timeval, tzp *Timezone) (err error)
-+//sysnb	Time(t *Time_t) (tt Time_t, err error)
-+//sys	Utime(path string, buf *Utimbuf) (err error)
-+
-+//sys	Getsystemcfg(label int) (n uint64)
-+
-+//sys	umount(target string) (err error)
-+func Unmount(target string, flags int) (err error) {
-+	if flags != 0 {
-+		// AIX doesn't have any flags for umount.
-+		return ENOSYS
-+	}
-+	return umount(target)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
-new file mode 100644
-index 00000000..b3c8e330
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
-@@ -0,0 +1,54 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc
-+
-+package unix
-+
-+//sysnb	Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64
-+//sysnb	Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64
-+//sys	Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64
-+
-+//sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+	iov.Len = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+	msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
-+}
-+
-+func Fstat(fd int, stat *Stat_t) error {
-+	return fstat(fd, stat)
-+}
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {
-+	return fstatat(dirfd, path, stat, flags)
-+}
-+
-+func Lstat(path string, stat *Stat_t) error {
-+	return lstat(path, stat)
-+}
-+
-+func Stat(path string, statptr *Stat_t) error {
-+	return stat(path, statptr)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
-new file mode 100644
-index 00000000..9a6e0241
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
-@@ -0,0 +1,85 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc64
-+
-+package unix
-+
-+//sysnb	Getrlimit(resource int, rlim *Rlimit) (err error)
-+//sysnb	Setrlimit(resource int, rlim *Rlimit) (err error)
-+//sys	Seek(fd int, offset int64, whence int) (off int64, err error) = lseek
-+
-+//sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int64(sec), Usec: int32(usec)}
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+	iov.Len = uint64(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+	msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
-+}
-+
-+// In order to only have Timespec structure, type of Stat_t's fields
-+// Atim, Mtim and Ctim is changed from StTimespec to Timespec during
-+// ztypes generation.
-+// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an
-+// int32, so the fields' value must be modified.
-+func fixStatTimFields(stat *Stat_t) {
-+	stat.Atim.Nsec >>= 32
-+	stat.Mtim.Nsec >>= 32
-+	stat.Ctim.Nsec >>= 32
-+}
-+
-+func Fstat(fd int, stat *Stat_t) error {
-+	err := fstat(fd, stat)
-+	if err != nil {
-+		return err
-+	}
-+	fixStatTimFields(stat)
-+	return nil
-+}
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {
-+	err := fstatat(dirfd, path, stat, flags)
-+	if err != nil {
-+		return err
-+	}
-+	fixStatTimFields(stat)
-+	return nil
-+}
-+
-+func Lstat(path string, stat *Stat_t) error {
-+	err := lstat(path, stat)
-+	if err != nil {
-+		return err
-+	}
-+	fixStatTimFields(stat)
-+	return nil
-+}
-+
-+func Stat(path string, statptr *Stat_t) error {
-+	err := stat(path, statptr)
-+	if err != nil {
-+		return err
-+	}
-+	fixStatTimFields(statptr)
-+	return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go
-index c2846b32..68605db6 100644
---- a/vendor/golang.org/x/sys/unix/syscall_bsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go
-@@ -34,7 +34,7 @@ func Getgroups() (gids []int, err error) {
- 		return nil, nil
- 	}
- 
--	// Sanity check group count.  Max is 16 on BSD.
-+	// Sanity check group count. Max is 16 on BSD.
- 	if n < 0 || n > 1000 {
- 		return nil, EINVAL
- 	}
-@@ -63,15 +63,6 @@ func Setgroups(gids []int) (err error) {
- 	return setgroups(len(a), &a[0])
- }
- 
--func ReadDirent(fd int, buf []byte) (n int, err error) {
--	// Final argument is (basep *uintptr) and the syscall doesn't take nil.
--	// 64 bits should be enough. (32 bits isn't even on 386). Since the
--	// actual system call is getdirentries64, 64 is a good guess.
--	// TODO(rsc): Can we use a single global basep for all calls?
--	var base = (*uintptr)(unsafe.Pointer(new(uint64)))
--	return Getdirentries(fd, buf, base)
--}
--
- // Wait status is 7 bits at bottom, either 0 (exited),
- // 0x7F (stopped), or a signal number that caused an exit.
- // The 0x80 bit is whether there was a core dump.
-@@ -86,6 +77,7 @@ const (
- 	shift = 8
- 
- 	exited  = 0
-+	killed  = 9
- 	stopped = 0x7F
- )
- 
-@@ -112,6 +104,8 @@ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
- 
- func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
- 
-+func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }
-+
- func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
- 
- func (w WaitStatus) StopSignal() syscall.Signal {
-@@ -206,7 +200,7 @@ func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil
- }
- 
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- 	switch rsa.Addr.Family {
- 	case AF_LINK:
- 		pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))
-@@ -243,7 +237,7 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- 				break
- 			}
- 		}
--		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+		bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- 		sa.Name = string(bytes)
- 		return sa, nil
- 
-@@ -286,7 +280,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- 		Close(nfd)
- 		return 0, nil, ECONNABORTED
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -306,50 +300,21 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- 		rsa.Addr.Family = AF_UNIX
- 		rsa.Addr.Len = SizeofSockaddrUnix
- 	}
--	return anyToSockaddr(&rsa)
-+	return anyToSockaddr(fd, &rsa)
- }
- 
- //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
- 
--func GetsockoptByte(fd, level, opt int) (value byte, err error) {
--	var n byte
--	vallen := _Socklen(1)
--	err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
--	return n, err
--}
--
--func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
--	vallen := _Socklen(4)
--	err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
--	return value, err
--}
--
--func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
--	var value IPMreq
--	vallen := _Socklen(SizeofIPMreq)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
--}
--
--func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
--	var value IPv6Mreq
--	vallen := _Socklen(SizeofIPv6Mreq)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
--}
--
--func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
--	var value IPv6MTUInfo
--	vallen := _Socklen(SizeofIPv6MTUInfo)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
--}
--
--func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
--	var value ICMPv6Filter
--	vallen := _Socklen(SizeofICMPv6Filter)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+	buf := make([]byte, 256)
-+	vallen := _Socklen(len(buf))
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+	if err != nil {
-+		return "", err
-+	}
-+	return string(buf[:vallen-1]), nil
- }
- 
- //sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
-@@ -385,7 +350,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- 	recvflags = int(msg.Flags)
- 	// source address is only specified if the socket is unconnected
- 	if rsa.Addr.Family != AF_UNSPEC {
--		from, err = anyToSockaddr(&rsa)
-+		from, err = anyToSockaddr(fd, &rsa)
- 	}
- 	return
- }
-@@ -448,8 +413,6 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err e
- 	return kevent(kq, change, len(changes), event, len(events), timeout)
- }
- 
--//sys	sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
--
- // sysctlmib translates name to mib number and appends any additional args.
- func sysctlmib(name string, args ...int) ([]_C_int, error) {
- 	// Translate name to mib number.
-@@ -547,6 +510,23 @@ func SysctlRaw(name string, args ...int) ([]byte, error) {
- 	return buf[:n], nil
- }
- 
-+func SysctlClockinfo(name string) (*Clockinfo, error) {
-+	mib, err := sysctlmib(name)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	n := uintptr(SizeofClockinfo)
-+	var ci Clockinfo
-+	if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
-+		return nil, err
-+	}
-+	if n != SizeofClockinfo {
-+		return nil, EIO
-+	}
-+	return &ci, nil
-+}
-+
- //sys	utimes(path string, timeval *[2]Timeval) (err error)
- 
- func Utimes(path string, tv []Timeval) error {
-@@ -570,7 +550,12 @@ func UtimesNano(path string, ts []Timespec) error {
- 	if len(ts) != 2 {
- 		return EINVAL
- 	}
--	err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+	// Darwin setattrlist can set nanosecond timestamps
-+	err := setattrlistTimes(path, ts, 0)
-+	if err != ENOSYS {
-+		return err
-+	}
-+	err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- 	if err != ENOSYS {
- 		return err
- 	}
-@@ -590,6 +575,10 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
- 	if len(ts) != 2 {
- 		return EINVAL
- 	}
-+	err := setattrlistTimes(path, ts, flags)
-+	if err != ENOSYS {
-+		return err
-+	}
- 	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
- }
- 
-@@ -605,7 +594,14 @@ func Futimes(fd int, tv []Timeval) error {
- 	return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
- 
--//sys	fcntl(fd int, cmd int, arg int) (val int, err error)
-+//sys   poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+	if len(fds) == 0 {
-+		return poll(nil, 0, timeout)
-+	}
-+	return poll(&fds[0], len(fds), timeout)
-+}
- 
- // TODO: wrap
- //	Acct(name nil-string) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
-new file mode 100644
-index 00000000..6a15cba6
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
-@@ -0,0 +1,29 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.12,!go1.13
-+
-+package unix
-+
-+import (
-+	"unsafe"
-+)
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	// To implement this using libSystem we'd need syscall_syscallPtr for
-+	// fdopendir. However, syscallPtr was only added in Go 1.13, so we fall
-+	// back to raw syscalls for this func on Go 1.12.
-+	var p unsafe.Pointer
-+	if len(buf) > 0 {
-+		p = unsafe.Pointer(&buf[0])
-+	} else {
-+		p = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		return n, errnoErr(e1)
-+	}
-+	return n, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
-new file mode 100644
-index 00000000..f911617b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
-@@ -0,0 +1,101 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.13
-+
-+package unix
-+
-+import "unsafe"
-+
-+//sys	closedir(dir uintptr) (err error)
-+//sys	readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)
-+
-+func fdopendir(fd int) (dir uintptr, err error) {
-+	r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0)
-+	dir = uintptr(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fdopendir_trampoline()
-+
-+//go:linkname libc_fdopendir libc_fdopendir
-+//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib"
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	// Simulate Getdirentries using fdopendir/readdir_r/closedir.
-+	// We store the number of entries to skip in the seek
-+	// offset of fd. See issue #31368.
-+	// It's not the full required semantics, but should handle the case
-+	// of calling Getdirentries or ReadDirent repeatedly.
-+	// It won't handle assigning the results of lseek to *basep, or handle
-+	// the directory being edited underfoot.
-+	skip, err := Seek(fd, 0, 1 /* SEEK_CUR */)
-+	if err != nil {
-+		return 0, err
-+	}
-+
-+	// We need to duplicate the incoming file descriptor
-+	// because the caller expects to retain control of it, but
-+	// fdopendir expects to take control of its argument.
-+	// Just Dup'ing the file descriptor is not enough, as the
-+	// result shares underlying state. Use Openat to make a really
-+	// new file descriptor referring to the same directory.
-+	fd2, err := Openat(fd, ".", O_RDONLY, 0)
-+	if err != nil {
-+		return 0, err
-+	}
-+	d, err := fdopendir(fd2)
-+	if err != nil {
-+		Close(fd2)
-+		return 0, err
-+	}
-+	defer closedir(d)
-+
-+	var cnt int64
-+	for {
-+		var entry Dirent
-+		var entryp *Dirent
-+		e := readdir_r(d, &entry, &entryp)
-+		if e != 0 {
-+			return n, errnoErr(e)
-+		}
-+		if entryp == nil {
-+			break
-+		}
-+		if skip > 0 {
-+			skip--
-+			cnt++
-+			continue
-+		}
-+		reclen := int(entry.Reclen)
-+		if reclen > len(buf) {
-+			// Not enough room. Return for now.
-+			// The counter will let us know where we should start up again.
-+			// Note: this strategy for suspending in the middle and
-+			// restarting is O(n^2) in the length of the directory. Oh well.
-+			break
-+		}
-+		// Copy entry into return buffer.
-+		s := struct {
-+			ptr unsafe.Pointer
-+			siz int
-+			cap int
-+		}{ptr: unsafe.Pointer(&entry), siz: reclen, cap: reclen}
-+		copy(buf, *(*[]byte)(unsafe.Pointer(&s)))
-+		buf = buf[reclen:]
-+		n += reclen
-+		cnt++
-+	}
-+	// Set the seek offset of the input fd to record
-+	// how many files we've already returned.
-+	_, err = Seek(fd, cnt, 0 /* SEEK_SET */)
-+	if err != nil {
-+		return n, err
-+	}
-+
-+	return n, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go
-index ad74a11f..9a5a6ee5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go
-@@ -13,7 +13,7 @@
- package unix
- 
- import (
--	errorspkg "errors"
-+	"errors"
- 	"syscall"
- 	"unsafe"
- )
-@@ -36,6 +36,7 @@ func Getwd() (string, error) {
- 	return "", ENOTSUP
- }
- 
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Len    uint8
- 	Family uint8
-@@ -54,7 +55,7 @@ func nametomib(name string) (mib []_C_int, err error) {
- 
- 	// NOTE(rsc): It seems strange to set the buffer to have
- 	// size CTL_MAXNAME+2 but use only CTL_MAXNAME
--	// as the size.  I don't know why the +2 is here, but the
-+	// as the size. I don't know why the +2 is here, but the
- 	// kernel uses +2 for its own implementation of this function.
- 	// I am scared that if we don't include the +2 here, the kernel
- 	// will silently write 2 words farther than we specify
-@@ -88,7 +89,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
- 	return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
- 
--//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
- func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
- func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
- 
-@@ -109,7 +109,7 @@ type attrList struct {
- 
- func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
- 	if len(attrBuf) < 4 {
--		return nil, errorspkg.New("attrBuf too small")
-+		return nil, errors.New("attrBuf too small")
- 	}
- 	attrList.bitmapCount = attrBitMapCount
- 
-@@ -119,17 +119,8 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- 		return nil, err
- 	}
- 
--	_, _, e1 := Syscall6(
--		SYS_GETATTRLIST,
--		uintptr(unsafe.Pointer(_p0)),
--		uintptr(unsafe.Pointer(&attrList)),
--		uintptr(unsafe.Pointer(&attrBuf[0])),
--		uintptr(len(attrBuf)),
--		uintptr(options),
--		0,
--	)
--	if e1 != 0 {
--		return nil, e1
-+	if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil {
-+		return nil, err
- 	}
- 	size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
- 
-@@ -145,12 +136,12 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- 	for i := uint32(0); int(i) < len(dat); {
- 		header := dat[i:]
- 		if len(header) < 8 {
--			return attrs, errorspkg.New("truncated attribute header")
-+			return attrs, errors.New("truncated attribute header")
- 		}
- 		datOff := *(*int32)(unsafe.Pointer(&header[0]))
- 		attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
- 		if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
--			return attrs, errorspkg.New("truncated results; attrBuf too small")
-+			return attrs, errors.New("truncated results; attrBuf too small")
- 		}
- 		end := uint32(datOff) + attrLen
- 		attrs = append(attrs, dat[datOff:end])
-@@ -162,6 +153,8 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- 	return
- }
- 
-+//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-+
- //sysnb pipe() (r int, w int, err error)
- 
- func Pipe(p []int) (err error) {
-@@ -179,14 +172,141 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- 		_p0 = unsafe.Pointer(&buf[0])
- 		bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
- 	}
--	r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = e1
-+	return getfsstat(_p0, bufsize, flags)
-+}
-+
-+func xattrPointer(dest []byte) *byte {
-+	// It's only when dest is set to NULL that the OS X implementations of
-+	// getxattr() and listxattr() return the current sizes of the named attributes.
-+	// An empty byte array is not sufficient. To maintain the same behaviour as the
-+	// linux implementation, we wrap around the system calls and pass in NULL when
-+	// dest is empty.
-+	var destp *byte
-+	if len(dest) > 0 {
-+		destp = &dest[0]
- 	}
--	return
-+	return destp
-+}
-+
-+//sys	getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)
-+
-+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-+	return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)
-+}
-+
-+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
-+	return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)
-+}
-+
-+//sys	fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)
-+
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
-+	return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)
-+}
-+
-+//sys	setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)
-+
-+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-+	// The parameters for the OS X implementation vary slightly compared to the
-+	// linux system call, specifically the position parameter:
-+	//
-+	//  linux:
-+	//      int setxattr(
-+	//          const char *path,
-+	//          const char *name,
-+	//          const void *value,
-+	//          size_t size,
-+	//          int flags
-+	//      );
-+	//
-+	//  darwin:
-+	//      int setxattr(
-+	//          const char *path,
-+	//          const char *name,
-+	//          void *value,
-+	//          size_t size,
-+	//          u_int32_t position,
-+	//          int options
-+	//      );
-+	//
-+	// position specifies the offset within the extended attribute. In the
-+	// current implementation, only the resource fork extended attribute makes
-+	// use of this argument. For all others, position is reserved. We simply
-+	// default to setting it to zero.
-+	return setxattr(path, attr, xattrPointer(data), len(data), 0, flags)
-+}
-+
-+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
-+	return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)
-+}
-+
-+//sys	fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)
-+
-+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
-+	return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)
-+}
-+
-+//sys	removexattr(path string, attr string, options int) (err error)
-+
-+func Removexattr(path string, attr string) (err error) {
-+	// We wrap around and explicitly zero out the options provided to the OS X
-+	// implementation of removexattr, we do so for interoperability with the
-+	// linux variant.
-+	return removexattr(path, attr, 0)
-+}
-+
-+func Lremovexattr(link string, attr string) (err error) {
-+	return removexattr(link, attr, XATTR_NOFOLLOW)
-+}
-+
-+//sys	fremovexattr(fd int, attr string, options int) (err error)
-+
-+func Fremovexattr(fd int, attr string) (err error) {
-+	return fremovexattr(fd, attr, 0)
-+}
-+
-+//sys	listxattr(path string, dest *byte, size int, options int) (sz int, err error)
-+
-+func Listxattr(path string, dest []byte) (sz int, err error) {
-+	return listxattr(path, xattrPointer(dest), len(dest), 0)
- }
- 
-+func Llistxattr(link string, dest []byte) (sz int, err error) {
-+	return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)
-+}
-+
-+//sys	flistxattr(fd int, dest *byte, size int, options int) (sz int, err error)
-+
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+	return flistxattr(fd, xattrPointer(dest), len(dest), 0)
-+}
-+
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+	_p0, err := BytePtrFromString(path)
-+	if err != nil {
-+		return err
-+	}
-+
-+	var attrList attrList
-+	attrList.bitmapCount = ATTR_BIT_MAP_COUNT
-+	attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME
-+
-+	// order is mtime, atime: the opposite of Chtimes
-+	attributes := [2]Timespec{times[1], times[0]}
-+	options := 0
-+	if flags&AT_SYMLINK_NOFOLLOW != 0 {
-+		options |= FSOPT_NOFOLLOW
-+	}
-+	return setattrlist(
-+		_p0,
-+		unsafe.Pointer(&attrList),
-+		unsafe.Pointer(&attributes),
-+		unsafe.Sizeof(attributes),
-+		options)
-+}
-+
-+//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-+
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {
- 	// Darwin doesn't support SYS_UTIMENSAT
- 	return ENOSYS
-@@ -196,49 +316,74 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {
-  * Wrapped
-  */
- 
-+//sys	fcntl(fd int, cmd int, arg int) (val int, err error)
-+
- //sys	kill(pid int, signum int, posix int) (err error)
- 
- func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }
- 
- //sys	ioctl(fd int, req uint, arg uintptr) (err error)
- 
--// ioctl itself should not be exposed directly, but additional get/set
--// functions for specific types are permissible.
-+//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
- 
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
--	return ioctl(fd, req, uintptr(value))
--}
-+func Uname(uname *Utsname) error {
-+	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+	n := unsafe.Sizeof(uname.Sysname)
-+	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
--}
-+	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+	n = unsafe.Sizeof(uname.Nodename)
-+	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
--}
-+	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+	n = unsafe.Sizeof(uname.Release)
-+	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
--	var value int
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return value, err
--}
-+	mib = []_C_int{CTL_KERN, KERN_VERSION}
-+	n = unsafe.Sizeof(uname.Version)
-+	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
--	var value Winsize
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+	// The version might have newlines or tabs in it, convert them to
-+	// spaces.
-+	for i, b := range uname.Version {
-+		if b == '\n' || b == '\t' {
-+			if i == len(uname.Version)-1 {
-+				uname.Version[i] = 0
-+			} else {
-+				uname.Version[i] = ' '
-+			}
-+		}
-+	}
-+
-+	mib = []_C_int{CTL_HW, HW_MACHINE}
-+	n = unsafe.Sizeof(uname.Machine)
-+	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	return nil
- }
- 
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
--	var value Termios
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	var length = int64(count)
-+	err = sendfile(infd, outfd, *offset, &length, nil, 0)
-+	written = int(length)
-+	return
- }
- 
-+//sys	sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)
-+
- /*
-  * Exposed directly
-  */
-@@ -249,6 +394,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Chmod(path string, mode uint32) (err error)
- //sys	Chown(path string, uid int, gid int) (err error)
- //sys	Chroot(path string) (err error)
-+//sys	ClockGettime(clockid int32, time *Timespec) (err error)
- //sys	Close(fd int) (err error)
- //sys	Dup(fd int) (nfd int, err error)
- //sys	Dup2(from int, to int) (err error)
-@@ -263,11 +409,8 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
--//sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
--//sys	Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
- //sys	Fsync(fd int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
--//sys	Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
- //sys	Getdtablesize() (size int)
- //sysnb	Getegid() (egid int)
- //sysnb	Geteuid() (uid int)
-@@ -287,7 +430,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Link(path string, link string) (err error)
- //sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys	Listen(s int, backlog int) (err error)
--//sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys	Mkdir(path string, mode uint32) (err error)
- //sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mkfifo(path string, mode uint32) (err error)
-@@ -305,7 +447,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Revoke(path string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -319,8 +461,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sysnb	Setsid() (pid int, err error)
- //sysnb	Settimeofday(tp *Timeval) (err error)
- //sysnb	Setuid(uid int) (err error)
--//sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
--//sys	Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
- //sys	Symlink(path string, link string) (err error)
- //sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys	Sync() (err error)
-@@ -377,18 +517,9 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
--// Getxattr
--// Fgetxattr
--// Setxattr
--// Fsetxattr
--// Removexattr
--// Fremovexattr
--// Listxattr
--// Flistxattr
- // Fsctl
- // Initgroups
- // Posix_spawn
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
-new file mode 100644
-index 00000000..6b223f91
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
-@@ -0,0 +1,9 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,386,!go1.12
-+
-+package unix
-+
-+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-index c172a3da..707ba4f5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-@@ -8,30 +8,22 @@ package unix
- 
- import (
- 	"syscall"
--	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
-+//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int32(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
- //sysnb	gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- 	// The tv passed to gettimeofday must be non-nil
--	// but is otherwise unused.  The answers come back
-+	// but is otherwise unused. The answers come back
- 	// in the two registers.
- 	sec, usec, err := gettimeofday(tv)
- 	tv.Sec = int32(sec)
-@@ -53,21 +45,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
--func (cmsg *Cmsghdr) SetLen(length int) {
--	cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
- }
- 
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	var length = uint64(count)
--
--	_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
--
--	written = int(length)
--
--	if e1 != 0 {
--		err = e1
--	}
--	return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-@@ -75,3 +58,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/386 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
-+//sys	Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
-+//sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
-+//sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys	Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
-new file mode 100644
-index 00000000..68ebd6fa
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
-@@ -0,0 +1,9 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,amd64,!go1.12
-+
-+package unix
-+
-+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-index c6c99c13..fdbfb591 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-@@ -8,30 +8,22 @@ package unix
- 
- import (
- 	"syscall"
--	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
-+//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- //sysnb	gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- 	// The tv passed to gettimeofday must be non-nil
--	// but is otherwise unused.  The answers come back
-+	// but is otherwise unused. The answers come back
- 	// in the two registers.
- 	sec, usec, err := gettimeofday(tv)
- 	tv.Sec = sec
-@@ -53,21 +45,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
--func (cmsg *Cmsghdr) SetLen(length int) {
--	cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
- }
- 
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	var length = uint64(count)
--
--	_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
--
--	written = int(length)
--
--	if e1 != 0 {
--		err = e1
--	}
--	return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-@@ -75,3 +58,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/amd64 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
-+//sys	Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
-+//sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
-+//sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys	Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
-new file mode 100644
-index 00000000..0e3f25ac
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
-@@ -0,0 +1,11 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,arm,!go1.12
-+
-+package unix
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	return 0, ENOSYS
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-index d286cf40..f8bc4cfb 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-@@ -6,30 +6,24 @@ package unix
- 
- import (
- 	"syscall"
--	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-+	return ENOTSUP
-+}
- 
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int32(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
- //sysnb	gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- 	// The tv passed to gettimeofday must be non-nil
--	// but is otherwise unused.  The answers come back
-+	// but is otherwise unused. The answers come back
- 	// in the two registers.
- 	sec, usec, err := gettimeofday(tv)
- 	tv.Sec = int32(sec)
-@@ -51,21 +45,24 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
--func (cmsg *Cmsghdr) SetLen(length int) {
--	cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
- }
- 
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	var length = uint64(count)
--
--	_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
--
--	written = int(length)
--
--	if e1 != 0 {
--		err = e1
--	}
--	return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of darwin/arm the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys	Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
-+//sys	Lstat(path string, stat *Stat_t) (err error)
-+//sys	Stat(path string, stat *Stat_t) (err error)
-+//sys	Statfs(path string, stat *Statfs_t) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
-new file mode 100644
-index 00000000..01d45040
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
-@@ -0,0 +1,11 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,arm64,!go1.12
-+
-+package unix
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	return 0, ENOSYS
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-index c33905cd..5ede3ac3 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-@@ -8,30 +8,24 @@ package unix
- 
- import (
- 	"syscall"
--	"unsafe"
- )
- 
--func Getpagesize() int { return 16384 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-+	return ENOTSUP
-+}
- 
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- //sysnb	gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- 	// The tv passed to gettimeofday must be non-nil
--	// but is otherwise unused.  The answers come back
-+	// but is otherwise unused. The answers come back
- 	// in the two registers.
- 	sec, usec, err := gettimeofday(tv)
- 	tv.Sec = sec
-@@ -53,21 +47,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
--func (cmsg *Cmsghdr) SetLen(length int) {
--	cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
- }
- 
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	var length = uint64(count)
--
--	_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
--
--	written = int(length)
--
--	if e1 != 0 {
--		err = e1
--	}
--	return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-@@ -75,3 +60,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/arm64 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys	Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
-+//sys	Lstat(path string, stat *Stat_t) (err error)
-+//sys	Stat(path string, stat *Stat_t) (err error)
-+//sys	Statfs(path string, stat *Statfs_t) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
-new file mode 100644
-index 00000000..f34c86c8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
-@@ -0,0 +1,33 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.12
-+
-+package unix
-+
-+import "unsafe"
-+
-+// Implemented in the runtime package (runtime/sys_darwin.go)
-+func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only
-+func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+
-+//go:linkname syscall_syscall syscall.syscall
-+//go:linkname syscall_syscall6 syscall.syscall6
-+//go:linkname syscall_syscall6X syscall.syscall6X
-+//go:linkname syscall_syscall9 syscall.syscall9
-+//go:linkname syscall_rawSyscall syscall.rawSyscall
-+//go:linkname syscall_rawSyscall6 syscall.rawSyscall6
-+//go:linkname syscall_syscallPtr syscall.syscallPtr
-+
-+// Find the entry point for f. See comments in runtime/proc.go for the
-+// function of the same name.
-+//go:nosplit
-+func funcPC(f func()) uintptr {
-+	return **(**uintptr)(unsafe.Pointer(&f))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-index 3a483373..8a195ae5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-@@ -12,8 +12,27 @@
- 
- package unix
- 
--import "unsafe"
-+import (
-+	"sync"
-+	"unsafe"
-+)
- 
-+// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h
-+var (
-+	osreldateOnce sync.Once
-+	osreldate     uint32
-+)
-+
-+// First __DragonFly_version after September 2019 ABI changes
-+// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html
-+const _dragonflyABIChangeVersion = 500705
-+
-+func supportsABI(ver uint32) bool {
-+	osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
-+	return osreldate >= ver
-+}
-+
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Len    uint8
- 	Family uint8
-@@ -102,7 +121,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- 	if len > SizeofSockaddrAny {
- 		panic("RawSockaddrAny too small")
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -110,6 +129,23 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- 	return
- }
- 
-+const ImplementsGetwd = true
-+
-+//sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+	var buf [PathMax]byte
-+	_, err := Getcwd(buf[0:])
-+	if err != nil {
-+		return "", err
-+	}
-+	n := clen(buf[:])
-+	if n < 1 {
-+		return "", EINVAL
-+	}
-+	return string(buf[:n]), nil
-+}
-+
- func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	var bufsize uintptr
-@@ -125,6 +161,85 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- 	return
- }
- 
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+	// used on Darwin for UtimesNano
-+	return ENOSYS
-+}
-+
-+//sys	ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {
-+	err := sysctl(mib, old, oldlen, nil, 0)
-+	if err != nil {
-+		// Utsname members on Dragonfly are only 32 bytes and
-+		// the syscall returns ENOMEM in case the actual value
-+		// is longer.
-+		if err == ENOMEM {
-+			err = nil
-+		}
-+	}
-+	return err
-+}
-+
-+func Uname(uname *Utsname) error {
-+	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+	n := unsafe.Sizeof(uname.Sysname)
-+	if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {
-+		return err
-+	}
-+	uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0
-+
-+	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+	n = unsafe.Sizeof(uname.Nodename)
-+	if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {
-+		return err
-+	}
-+	uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0
-+
-+	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+	n = unsafe.Sizeof(uname.Release)
-+	if err := sysctlUname(mib, &uname.Release[0], &n); err != nil {
-+		return err
-+	}
-+	uname.Release[unsafe.Sizeof(uname.Release)-1] = 0
-+
-+	mib = []_C_int{CTL_KERN, KERN_VERSION}
-+	n = unsafe.Sizeof(uname.Version)
-+	if err := sysctlUname(mib, &uname.Version[0], &n); err != nil {
-+		return err
-+	}
-+
-+	// The version might have newlines or tabs in it, convert them to
-+	// spaces.
-+	for i, b := range uname.Version {
-+		if b == '\n' || b == '\t' {
-+			if i == len(uname.Version)-1 {
-+				uname.Version[i] = 0
-+			} else {
-+				uname.Version[i] = ' '
-+			}
-+		}
-+	}
-+
-+	mib = []_C_int{CTL_HW, HW_MACHINE}
-+	n = unsafe.Sizeof(uname.Machine)
-+	if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {
-+		return err
-+	}
-+	uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0
-+
-+	return nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
-+}
-+
- /*
-  * Exposed directly
-  */
-@@ -139,16 +254,21 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys	Dup(fd int) (nfd int, err error)
- //sys	Dup2(from int, to int) (err error)
- //sys	Exit(code int)
-+//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchdir(fd int) (err error)
- //sys	Fchflags(fd int, flags int) (err error)
- //sys	Fchmod(fd int, mode uint32) (err error)
-+//sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchown(fd int, uid int, gid int) (err error)
-+//sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys	Fstatfs(fd int, stat *Statfs_t) (err error)
- //sys	Fsync(fd int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
-+//sys	Getdents(fd int, buf []byte) (n int, err error)
- //sys	Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
- //sys	Getdtablesize() (size int)
- //sysnb	Getegid() (egid int)
-@@ -169,21 +289,26 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys	Kqueue() (fd int, err error)
- //sys	Lchown(path string, uid int, gid int) (err error)
- //sys	Link(path string, link string) (err error)
-+//sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys	Listen(s int, backlog int) (err error)
- //sys	Lstat(path string, stat *Stat_t) (err error)
- //sys	Mkdir(path string, mode uint32) (err error)
-+//sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mkfifo(path string, mode uint32) (err error)
- //sys	Mknod(path string, mode uint32, dev int) (err error)
-+//sys	Mknodat(fd int, path string, mode uint32, dev int) (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys	Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys	Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys	Pathconf(path string, name int) (val int, err error)
- //sys	read(fd int, p []byte) (n int, err error)
- //sys	Readlink(path string, buf []byte) (n int, err error)
- //sys	Rename(from string, to string) (err error)
-+//sys	Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys	Revoke(path string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -201,11 +326,13 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys	Stat(path string, stat *Stat_t) (err error)
- //sys	Statfs(path string, stat *Statfs_t) (err error)
- //sys	Symlink(path string, link string) (err error)
-+//sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys	Sync() (err error)
- //sys	Truncate(path string, length int64) (err error)
- //sys	Umask(newmask int) (oldmask int)
- //sys	Undelete(path string) (err error)
- //sys	Unlink(path string) (err error)
-+//sys	Unlinkat(dirfd int, path string, flags int) (err error)
- //sys	Unmount(path string, flags int) (err error)
- //sys	write(fd int, p []byte) (n int, err error)
- //sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -225,7 +352,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Getlogin
- // Sigpending
- // Sigaltstack
--// Ioctl
- // Reboot
- // Execve
- // Vfork
-@@ -257,7 +383,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
-@@ -403,7 +528,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Pread_nocancel
- // Pwrite_nocancel
- // Waitid_nocancel
--// Poll_nocancel
- // Msgsnd_nocancel
- // Msgrcv_nocancel
- // Sem_wait_nocancel
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-index da7cb798..a6b4830a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-@@ -11,21 +11,12 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = nsec % 1e9 / 1e3
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-index d26e52ea..6932e7c2 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-@@ -12,8 +12,36 @@
- 
- package unix
- 
--import "unsafe"
-+import (
-+	"sync"
-+	"unsafe"
-+)
-+
-+const (
-+	SYS_FSTAT_FREEBSD12         = 551 // { int fstat(int fd, _Out_ struct stat *sb); }
-+	SYS_FSTATAT_FREEBSD12       = 552 // { int fstatat(int fd, _In_z_ char *path, \
-+	SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \
-+	SYS_STATFS_FREEBSD12        = 555 // { int statfs(_In_z_ char *path, \
-+	SYS_FSTATFS_FREEBSD12       = 556 // { int fstatfs(int fd, \
-+	SYS_GETFSSTAT_FREEBSD12     = 557 // { int getfsstat( \
-+	SYS_MKNODAT_FREEBSD12       = 559 // { int mknodat(int fd, _In_z_ char *path, \
-+)
-+
-+// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.
-+var (
-+	osreldateOnce sync.Once
-+	osreldate     uint32
-+)
-+
-+// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h
-+const _ino64First = 1200031
-+
-+func supportsABI(ver uint32) bool {
-+	osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
-+	return osreldate >= ver
-+}
- 
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Len    uint8
- 	Family uint8
-@@ -32,7 +60,7 @@ func nametomib(name string) (mib []_C_int, err error) {
- 
- 	// NOTE(rsc): It seems strange to set the buffer to have
- 	// size CTL_MAXNAME+2 but use only CTL_MAXNAME
--	// as the size.  I don't know why the +2 is here, but the
-+	// as the size. I don't know why the +2 is here, but the
- 	// kernel uses +2 for its own implementation of this function.
- 	// I am scared that if we don't include the +2 here, the kernel
- 	// will silently write 2 words farther than we specify
-@@ -66,14 +94,21 @@ func direntNamlen(buf []byte) (uint64, bool) {
- 	return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
- 
--//sysnb pipe() (r int, w int, err error)
--
- func Pipe(p []int) (err error) {
-+	return Pipe2(p, 0)
-+}
-+
-+//sysnb	pipe2(p *[2]_C_int, flags int) (err error)
-+
-+func Pipe2(p []int, flags int) error {
- 	if len(p) != 2 {
- 		return EINVAL
- 	}
--	p[0], p[1], err = pipe()
--	return
-+	var pp [2]_C_int
-+	err := pipe2(&pp, flags)
-+	p[0] = int(pp[0])
-+	p[1] = int(pp[1])
-+	return err
- }
- 
- func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
-@@ -97,7 +132,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- 	if len > SizeofSockaddrAny {
- 		panic("RawSockaddrAny too small")
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -105,290 +140,421 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- 	return
- }
- 
-+const ImplementsGetwd = true
-+
-+//sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+	var buf [PathMax]byte
-+	_, err := Getcwd(buf[0:])
-+	if err != nil {
-+		return "", err
-+	}
-+	n := clen(buf[:])
-+	if n < 1 {
-+		return "", EINVAL
-+	}
-+	return string(buf[:n]), nil
-+}
-+
- func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	var bufsize uintptr
-+	var (
-+		_p0          unsafe.Pointer
-+		bufsize      uintptr
-+		oldBuf       []statfs_freebsd11_t
-+		needsConvert bool
-+	)
-+
- 	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--		bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
-+		if supportsABI(_ino64First) {
-+			_p0 = unsafe.Pointer(&buf[0])
-+			bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
-+		} else {
-+			n := len(buf)
-+			oldBuf = make([]statfs_freebsd11_t, n)
-+			_p0 = unsafe.Pointer(&oldBuf[0])
-+			bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n)
-+			needsConvert = true
-+		}
-+	}
-+	var sysno uintptr = SYS_GETFSSTAT
-+	if supportsABI(_ino64First) {
-+		sysno = SYS_GETFSSTAT_FREEBSD12
- 	}
--	r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
-+	r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = e1
- 	}
-+	if e1 == 0 && needsConvert {
-+		for i := range oldBuf {
-+			buf[i].convertFrom(&oldBuf[i])
-+		}
-+	}
- 	return
- }
- 
--// Derive extattr namespace and attribute name
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+	// used on Darwin for UtimesNano
-+	return ENOSYS
-+}
- 
--func xattrnamespace(fullattr string) (ns int, attr string, err error) {
--	s := -1
--	for idx, val := range fullattr {
--		if val == '.' {
--			s = idx
--			break
--		}
-+//sys   ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func Uname(uname *Utsname) error {
-+	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+	n := unsafe.Sizeof(uname.Sysname)
-+	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+		return err
- 	}
- 
--	if s == -1 {
--		return -1, "", ENOATTR
-+	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+	n = unsafe.Sizeof(uname.Nodename)
-+	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+		return err
- 	}
- 
--	namespace := fullattr[0:s]
--	attr = fullattr[s+1:]
-+	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+	n = unsafe.Sizeof(uname.Release)
-+	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--	switch namespace {
--	case "user":
--		return EXTATTR_NAMESPACE_USER, attr, nil
--	case "system":
--		return EXTATTR_NAMESPACE_SYSTEM, attr, nil
--	default:
--		return -1, "", ENOATTR
-+	mib = []_C_int{CTL_KERN, KERN_VERSION}
-+	n = unsafe.Sizeof(uname.Version)
-+	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+		return err
- 	}
--}
- 
--func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
--	if len(dest) > idx {
--		return unsafe.Pointer(&dest[idx])
--	} else {
--		return unsafe.Pointer(_zero)
-+	// The version might have newlines or tabs in it, convert them to
-+	// spaces.
-+	for i, b := range uname.Version {
-+		if b == '\n' || b == '\t' {
-+			if i == len(uname.Version)-1 {
-+				uname.Version[i] = 0
-+			} else {
-+				uname.Version[i] = ' '
-+			}
-+		}
- 	}
--}
- 
--// FreeBSD implements its own syscalls to handle extended attributes
-+	mib = []_C_int{CTL_HW, HW_MACHINE}
-+	n = unsafe.Sizeof(uname.Machine)
-+	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+		return err
-+	}
- 
--func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsize := len(dest)
-+	return nil
-+}
- 
--	nsid, a, err := xattrnamespace(attr)
-+func Stat(path string, st *Stat_t) (err error) {
-+	var oldStat stat_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return fstatat_freebsd12(AT_FDCWD, path, st, 0)
-+	}
-+	err = stat(path, &oldStat)
- 	if err != nil {
--		return -1, err
-+		return err
- 	}
- 
--	return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
-+	st.convertFrom(&oldStat)
-+	return nil
- }
- 
--func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsize := len(dest)
--
--	nsid, a, err := xattrnamespace(attr)
-+func Lstat(path string, st *Stat_t) (err error) {
-+	var oldStat stat_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)
-+	}
-+	err = lstat(path, &oldStat)
- 	if err != nil {
--		return -1, err
-+		return err
- 	}
- 
--	return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
-+	st.convertFrom(&oldStat)
-+	return nil
- }
- 
--func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsize := len(dest)
--
--	nsid, a, err := xattrnamespace(attr)
-+func Fstat(fd int, st *Stat_t) (err error) {
-+	var oldStat stat_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return fstat_freebsd12(fd, st)
-+	}
-+	err = fstat(fd, &oldStat)
- 	if err != nil {
--		return -1, err
-+		return err
- 	}
- 
--	return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
-+	st.convertFrom(&oldStat)
-+	return nil
- }
- 
--// flags are unused on FreeBSD
--
--func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
--	d := unsafe.Pointer(&data[0])
--	datasiz := len(data)
--
--	nsid, a, err := xattrnamespace(attr)
-+func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) {
-+	var oldStat stat_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return fstatat_freebsd12(fd, path, st, flags)
-+	}
-+	err = fstatat(fd, path, &oldStat, flags)
- 	if err != nil {
--		return
-+		return err
- 	}
- 
--	_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
--	return
-+	st.convertFrom(&oldStat)
-+	return nil
- }
- 
--func Setxattr(file string, attr string, data []byte, flags int) (err error) {
--	d := unsafe.Pointer(&data[0])
--	datasiz := len(data)
--
--	nsid, a, err := xattrnamespace(attr)
-+func Statfs(path string, st *Statfs_t) (err error) {
-+	var oldStatfs statfs_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return statfs_freebsd12(path, st)
-+	}
-+	err = statfs(path, &oldStatfs)
- 	if err != nil {
--		return
-+		return err
- 	}
- 
--	_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
--	return
-+	st.convertFrom(&oldStatfs)
-+	return nil
- }
- 
--func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
--	d := unsafe.Pointer(&data[0])
--	datasiz := len(data)
--
--	nsid, a, err := xattrnamespace(attr)
-+func Fstatfs(fd int, st *Statfs_t) (err error) {
-+	var oldStatfs statfs_freebsd11_t
-+	if supportsABI(_ino64First) {
-+		return fstatfs_freebsd12(fd, st)
-+	}
-+	err = fstatfs(fd, &oldStatfs)
- 	if err != nil {
--		return
-+		return err
- 	}
- 
--	_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
--	return
-+	st.convertFrom(&oldStatfs)
-+	return nil
- }
- 
--func Removexattr(file string, attr string) (err error) {
--	nsid, a, err := xattrnamespace(attr)
--	if err != nil {
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+	return Getdirentries(fd, buf, nil)
-+}
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	if supportsABI(_ino64First) {
-+		if basep == nil || unsafe.Sizeof(*basep) == 8 {
-+			return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep)))
-+		}
-+		// The freebsd12 syscall needs a 64-bit base. On 32-bit machines
-+		// we can't just use the basep passed in. See #32498.
-+		var base uint64 = uint64(*basep)
-+		n, err = getdirentries_freebsd12(fd, buf, &base)
-+		*basep = uintptr(base)
-+		if base>>32 != 0 {
-+			// We can't stuff the base back into a uintptr, so any
-+			// future calls would be suspect. Generate an error.
-+			// EIO is allowed by getdirentries.
-+			err = EIO
-+		}
- 		return
- 	}
- 
--	err = ExtattrDeleteFile(file, nsid, a)
-+	// The old syscall entries are smaller than the new. Use 1/4 of the original
-+	// buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c).
-+	oldBufLen := roundup(len(buf)/4, _dirblksiz)
-+	oldBuf := make([]byte, oldBufLen)
-+	n, err = getdirentries(fd, oldBuf, basep)
-+	if err == nil && n > 0 {
-+		n = convertFromDirents11(buf, oldBuf[:n])
-+	}
- 	return
- }
- 
--func Fremovexattr(fd int, attr string) (err error) {
--	nsid, a, err := xattrnamespace(attr)
--	if err != nil {
--		return
-+func Mknod(path string, mode uint32, dev uint64) (err error) {
-+	var oldDev int
-+	if supportsABI(_ino64First) {
-+		return mknodat_freebsd12(AT_FDCWD, path, mode, dev)
- 	}
--
--	err = ExtattrDeleteFd(fd, nsid, a)
--	return
-+	oldDev = int(dev)
-+	return mknod(path, mode, oldDev)
- }
- 
--func Lremovexattr(link string, attr string) (err error) {
--	nsid, a, err := xattrnamespace(attr)
--	if err != nil {
--		return
-+func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {
-+	var oldDev int
-+	if supportsABI(_ino64First) {
-+		return mknodat_freebsd12(fd, path, mode, dev)
- 	}
-+	oldDev = int(dev)
-+	return mknodat(fd, path, mode, oldDev)
-+}
- 
--	err = ExtattrDeleteLink(link, nsid, a)
--	return
-+// round x to the nearest multiple of y, larger or equal to x.
-+//
-+// from /usr/include/sys/param.h Macros for counting and rounding.
-+// #define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
-+func roundup(x, y int) int {
-+	return ((x + y - 1) / y) * y
- }
- 
--func Listxattr(file string, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsiz := len(dest)
--
--	// FreeBSD won't allow you to list xattrs from multiple namespaces
--	s := 0
--	var e error
--	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
--		stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
--
--		/* Errors accessing system attrs are ignored so that
--		 * we can implement the Linux-like behavior of omitting errors that
--		 * we don't have read permissions on
--		 *
--		 * Linux will still error if we ask for user attributes on a file that
--		 * we don't have read permissions on, so don't ignore those errors
--		 */
--		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
--			e = nil
--			continue
--		} else if e != nil {
--			return s, e
--		}
-+func (s *Stat_t) convertFrom(old *stat_freebsd11_t) {
-+	*s = Stat_t{
-+		Dev:     uint64(old.Dev),
-+		Ino:     uint64(old.Ino),
-+		Nlink:   uint64(old.Nlink),
-+		Mode:    old.Mode,
-+		Uid:     old.Uid,
-+		Gid:     old.Gid,
-+		Rdev:    uint64(old.Rdev),
-+		Atim:    old.Atim,
-+		Mtim:    old.Mtim,
-+		Ctim:    old.Ctim,
-+		Btim:    old.Btim,
-+		Size:    old.Size,
-+		Blocks:  old.Blocks,
-+		Blksize: old.Blksize,
-+		Flags:   old.Flags,
-+		Gen:     uint64(old.Gen),
-+	}
-+}
- 
--		s += stmp
--		destsiz -= s
--		if destsiz < 0 {
--			destsiz = 0
--		}
--		d = initxattrdest(dest, s)
-+func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) {
-+	*s = Statfs_t{
-+		Version:     _statfsVersion,
-+		Type:        old.Type,
-+		Flags:       old.Flags,
-+		Bsize:       old.Bsize,
-+		Iosize:      old.Iosize,
-+		Blocks:      old.Blocks,
-+		Bfree:       old.Bfree,
-+		Bavail:      old.Bavail,
-+		Files:       old.Files,
-+		Ffree:       old.Ffree,
-+		Syncwrites:  old.Syncwrites,
-+		Asyncwrites: old.Asyncwrites,
-+		Syncreads:   old.Syncreads,
-+		Asyncreads:  old.Asyncreads,
-+		// Spare
-+		Namemax: old.Namemax,
-+		Owner:   old.Owner,
-+		Fsid:    old.Fsid,
-+		// Charspare
-+		// Fstypename
-+		// Mntfromname
-+		// Mntonname
- 	}
- 
--	return s, e
-+	sl := old.Fstypename[:]
-+	n := clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+	copy(s.Fstypename[:], old.Fstypename[:n])
-+
-+	sl = old.Mntfromname[:]
-+	n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+	copy(s.Mntfromname[:], old.Mntfromname[:n])
-+
-+	sl = old.Mntonname[:]
-+	n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+	copy(s.Mntonname[:], old.Mntonname[:n])
- }
- 
--func Flistxattr(fd int, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsiz := len(dest)
-+func convertFromDirents11(buf []byte, old []byte) int {
-+	const (
-+		fixedSize    = int(unsafe.Offsetof(Dirent{}.Name))
-+		oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name))
-+	)
-+
-+	dstPos := 0
-+	srcPos := 0
-+	for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {
-+		var dstDirent Dirent
-+		var srcDirent dirent_freebsd11
- 
--	s := 0
--	var e error
--	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
--		stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
--		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
--			e = nil
--			continue
--		} else if e != nil {
--			return s, e
-+		// If multiple direntries are written, sometimes when we reach the final one,
-+		// we may have cap of old less than size of dirent_freebsd11.
-+		copy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:])
-+
-+		reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)
-+		if dstPos+reclen > len(buf) {
-+			break
- 		}
- 
--		s += stmp
--		destsiz -= s
--		if destsiz < 0 {
--			destsiz = 0
-+		dstDirent.Fileno = uint64(srcDirent.Fileno)
-+		dstDirent.Off = 0
-+		dstDirent.Reclen = uint16(reclen)
-+		dstDirent.Type = srcDirent.Type
-+		dstDirent.Pad0 = 0
-+		dstDirent.Namlen = uint16(srcDirent.Namlen)
-+		dstDirent.Pad1 = 0
-+
-+		copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])
-+		copy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:])
-+		padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]
-+		for i := range padding {
-+			padding[i] = 0
- 		}
--		d = initxattrdest(dest, s)
-+
-+		dstPos += int(dstDirent.Reclen)
-+		srcPos += int(srcDirent.Reclen)
- 	}
- 
--	return s, e
-+	return dstPos
- }
- 
--func Llistxattr(link string, dest []byte) (sz int, err error) {
--	d := initxattrdest(dest, 0)
--	destsiz := len(dest)
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
-+}
- 
--	s := 0
--	var e error
--	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
--		stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
--		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
--			e = nil
--			continue
--		} else if e != nil {
--			return s, e
--		}
-+//sys	ptrace(request int, pid int, addr uintptr, data int) (err error)
- 
--		s += stmp
--		destsiz -= s
--		if destsiz < 0 {
--			destsiz = 0
--		}
--		d = initxattrdest(dest, s)
--	}
-+func PtraceAttach(pid int) (err error) {
-+	return ptrace(PTRACE_ATTACH, pid, 0, 0)
-+}
- 
--	return s, e
-+func PtraceCont(pid int, signal int) (err error) {
-+	return ptrace(PTRACE_CONT, pid, 1, signal)
- }
- 
--//sys   ioctl(fd int, req uint, arg uintptr) (err error)
-+func PtraceDetach(pid int) (err error) {
-+	return ptrace(PTRACE_DETACH, pid, 1, 0)
-+}
-+
-+func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {
-+	return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0)
-+}
- 
--// ioctl itself should not be exposed directly, but additional get/set
--// functions for specific types are permissible.
-+func PtraceGetRegs(pid int, regsout *Reg) (err error) {
-+	return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0)
-+}
-+
-+func PtraceLwpEvents(pid int, enable int) (err error) {
-+	return ptrace(PTRACE_LWPEVENTS, pid, 0, enable)
-+}
-+
-+func PtraceLwpInfo(pid int, info uintptr) (err error) {
-+	return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{})))
-+}
- 
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
--	return ioctl(fd, req, uintptr(value))
-+func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
-+	return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)
- }
- 
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
-+	return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)
- }
- 
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
-+	return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)
- }
- 
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
--	var value int
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return value, err
-+func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
-+	return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)
- }
- 
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
--	var value Winsize
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+func PtraceSetRegs(pid int, regs *Reg) (err error) {
-+	return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0)
- }
- 
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
--	var value Termios
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+func PtraceSingleStep(pid int) (err error) {
-+	return ptrace(PTRACE_SINGLESTEP, pid, 1, 0)
- }
- 
- /*
-@@ -430,11 +596,16 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
--//sys	Fstat(fd int, stat *Stat_t) (err error)
--//sys	Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys	fstat(fd int, stat *stat_freebsd11_t) (err error)
-+//sys	fstat_freebsd12(fd int, stat *Stat_t) (err error)
-+//sys	fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error)
-+//sys	fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys	fstatfs(fd int, stat *statfs_freebsd11_t) (err error)
-+//sys	fstatfs_freebsd12(fd int, stat *Statfs_t) (err error)
- //sys	Fsync(fd int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
--//sys	Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
-+//sys	getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
-+//sys	getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error)
- //sys	Getdtablesize() (size int)
- //sysnb	Getegid() (egid int)
- //sysnb	Geteuid() (uid int)
-@@ -456,11 +627,13 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Link(path string, link string) (err error)
- //sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys	Listen(s int, backlog int) (err error)
--//sys	Lstat(path string, stat *Stat_t) (err error)
-+//sys	lstat(path string, stat *stat_freebsd11_t) (err error)
- //sys	Mkdir(path string, mode uint32) (err error)
- //sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mkfifo(path string, mode uint32) (err error)
--//sys	Mknod(path string, mode uint32, dev int) (err error)
-+//sys	mknod(path string, mode uint32, dev int) (err error)
-+//sys	mknodat(fd int, path string, mode uint32, dev int) (err error)
-+//sys	mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys	Open(path string, mode int, perm uint32) (fd int, err error)
- //sys	Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
-@@ -475,7 +648,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys	Revoke(path string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -490,8 +663,9 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sysnb	Setsid() (pid int, err error)
- //sysnb	Settimeofday(tp *Timeval) (err error)
- //sysnb	Setuid(uid int) (err error)
--//sys	Stat(path string, stat *Stat_t) (err error)
--//sys	Statfs(path string, stat *Statfs_t) (err error)
-+//sys	stat(path string, stat *stat_freebsd11_t) (err error)
-+//sys	statfs(path string, stat *statfs_freebsd11_t) (err error)
-+//sys	statfs_freebsd12(path string, stat *Statfs_t) (err error)
- //sys	Symlink(path string, link string) (err error)
- //sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys	Sync() (err error)
-@@ -546,22 +720,14 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- // Kqueue_portset
- // Getattrlist
- // Setattrlist
-+// Getdents
- // Getdirentriesattr
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
--// Getxattr
--// Fgetxattr
--// Setxattr
--// Fsetxattr
--// Removexattr
--// Fremovexattr
--// Listxattr
--// Flistxattr
- // Fsctl
- // Initgroups
- // Posix_spawn
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-index 6a0cd804..72a506dd 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-@@ -11,21 +11,12 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int32(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
-+	return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
-+}
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+	ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}
-+	err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+	return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-index e142540e..d5e376ac 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-@@ -11,21 +11,12 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = nsec % 1e9 / 1e3
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
-+	return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
-+}
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+	ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}
-+	err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+	return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-index 5504cb12..4ea45bce 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-@@ -11,21 +11,12 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = nsec / 1e9
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+	ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}
-+	err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+	return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-similarity index 59%
-copy from vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-copy to vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-index da7cb798..aa5326db 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-@@ -1,8 +1,8 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build amd64,dragonfly
-+// +build arm64,freebsd
- 
- package unix
- 
-@@ -11,21 +11,12 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = nsec % 1e9 / 1e3
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
- 
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+	ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}
-+	err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+	return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go
-new file mode 100644
-index 00000000..99e62dcd
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go
-@@ -0,0 +1,57 @@
-+// Copyright 2009 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// illumos system calls not present on Solaris.
-+
-+// +build amd64,illumos
-+
-+package unix
-+
-+import "unsafe"
-+
-+func bytes2iovec(bs [][]byte) []Iovec {
-+	iovecs := make([]Iovec, len(bs))
-+	for i, b := range bs {
-+		iovecs[i].SetLen(len(b))
-+		if len(b) > 0 {
-+			// somehow Iovec.Base on illumos is (*int8), not (*byte)
-+			iovecs[i].Base = (*int8)(unsafe.Pointer(&b[0]))
-+		} else {
-+			iovecs[i].Base = (*int8)(unsafe.Pointer(&_zero))
-+		}
-+	}
-+	return iovecs
-+}
-+
-+//sys   readv(fd int, iovs []Iovec) (n int, err error)
-+
-+func Readv(fd int, iovs [][]byte) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	n, err = readv(fd, iovecs)
-+	return n, err
-+}
-+
-+//sys   preadv(fd int, iovs []Iovec, off int64) (n int, err error)
-+
-+func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	n, err = preadv(fd, iovecs, off)
-+	return n, err
-+}
-+
-+//sys   writev(fd int, iovs []Iovec) (n int, err error)
-+
-+func Writev(fd int, iovs [][]byte) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	n, err = writev(fd, iovecs)
-+	return n, err
-+}
-+
-+//sys   pwritev(fd int, iovs []Iovec, off int64) (n int, err error)
-+
-+func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	n, err = pwritev(fd, iovecs, off)
-+	return n, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
-index 1b7d59d8..bbe1abbc 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go
-@@ -12,6 +12,8 @@
- package unix
- 
- import (
-+	"encoding/binary"
-+	"runtime"
- 	"syscall"
- 	"unsafe"
- )
-@@ -36,6 +38,20 @@ func Creat(path string, mode uint32) (fd int, err error) {
- 	return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
- }
- 
-+//sys	FanotifyInit(flags uint, event_f_flags uint) (fd int, err error)
-+//sys	fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)
-+
-+func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {
-+	if pathname == "" {
-+		return fanotifyMark(fd, flags, mask, dirFd, nil)
-+	}
-+	p, err := BytePtrFromString(pathname)
-+	if err != nil {
-+		return err
-+	}
-+	return fanotifyMark(fd, flags, mask, dirFd, p)
-+}
-+
- //sys	fchmodat(dirfd int, path string, mode uint32) (err error)
- 
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -55,37 +71,41 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- // ioctl itself should not be exposed directly, but additional get/set
- // functions for specific types are permissible.
- 
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
--	return ioctl(fd, req, uintptr(value))
-+// IoctlRetInt performs an ioctl operation specified by req on a device
-+// associated with opened file descriptor fd, and returns a non-negative
-+// integer that is returned by the ioctl syscall.
-+func IoctlRetInt(fd int, req uint) (int, error) {
-+	ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)
-+	if err != 0 {
-+		return 0, err
-+	}
-+	return int(ret), nil
- }
- 
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+// IoctlSetPointerInt performs an ioctl operation which sets an
-+// integer value on fd, using the specified request number. The ioctl
-+// argument is called with a pointer to the integer value, rather than
-+// passing the integer value directly.
-+func IoctlSetPointerInt(fd int, req uint, value int) error {
-+	v := int32(value)
-+	return ioctl(fd, req, uintptr(unsafe.Pointer(&v)))
- }
- 
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func IoctlSetRTCTime(fd int, value *RTCTime) error {
-+	err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
-+	runtime.KeepAlive(value)
-+	return err
- }
- 
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
--	var value int
-+func IoctlGetUint32(fd int, req uint) (uint32, error) {
-+	var value uint32
- 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
- 	return value, err
- }
- 
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
--	var value Winsize
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
--}
--
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
--	var value Termios
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+func IoctlGetRTCTime(fd int) (*RTCTime, error) {
-+	var value RTCTime
-+	err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))
- 	return &value, err
- }
- 
-@@ -148,8 +168,6 @@ func Unlink(path string) error {
- 
- //sys	Unlinkat(dirfd int, path string, flags int) (err error)
- 
--//sys	utimes(path string, times *[2]Timeval) (err error)
--
- func Utimes(path string, tv []Timeval) error {
- 	if tv == nil {
- 		err := utimensat(AT_FDCWD, path, nil, 0)
-@@ -207,20 +225,14 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
- 	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
- }
- 
--//sys	futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
--
- func Futimesat(dirfd int, path string, tv []Timeval) error {
--	pathp, err := BytePtrFromString(path)
--	if err != nil {
--		return err
--	}
- 	if tv == nil {
--		return futimesat(dirfd, pathp, nil)
-+		return futimesat(dirfd, path, nil)
- 	}
- 	if len(tv) != 2 {
- 		return EINVAL
- 	}
--	return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
-+	return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
- 
- func Futimes(fd int, tv []Timeval) (err error) {
-@@ -255,7 +267,7 @@ func Getgroups() (gids []int, err error) {
- 		return nil, nil
- 	}
- 
--	// Sanity check group count.  Max is 1<<16 on Linux.
-+	// Sanity check group count. Max is 1<<16 on Linux.
- 	if n < 0 || n > 1<<20 {
- 		return nil, EINVAL
- 	}
-@@ -290,8 +302,8 @@ type WaitStatus uint32
- // 0x7F (stopped), or a signal number that caused an exit.
- // The 0x80 bit is whether there was a core dump.
- // An extra number (exit code, signal causing a stop)
--// is in the high bits.  At least that's the idea.
--// There are various irregularities.  For example, the
-+// is in the high bits. At least that's the idea.
-+// There are various irregularities. For example, the
- // "continued" status is 0xFFFF, distinguishing itself
- // from stopped via the core dump bit.
- 
-@@ -413,6 +425,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), sl, nil
- }
- 
-+// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.
- type SockaddrLinklayer struct {
- 	Protocol uint16
- 	Ifindex  int
-@@ -439,6 +452,7 @@ func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
- }
- 
-+// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.
- type SockaddrNetlink struct {
- 	Family uint16
- 	Pad    uint16
-@@ -455,6 +469,8 @@ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
- }
- 
-+// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the HCI protocol.
- type SockaddrHCI struct {
- 	Dev     uint16
- 	Channel uint16
-@@ -468,6 +484,72 @@ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
- }
- 
-+// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the L2CAP protocol.
-+type SockaddrL2 struct {
-+	PSM      uint16
-+	CID      uint16
-+	Addr     [6]uint8
-+	AddrType uint8
-+	raw      RawSockaddrL2
-+}
-+
-+func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	sa.raw.Family = AF_BLUETOOTH
-+	psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
-+	psm[0] = byte(sa.PSM)
-+	psm[1] = byte(sa.PSM >> 8)
-+	for i := 0; i < len(sa.Addr); i++ {
-+		sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
-+	}
-+	cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
-+	cid[0] = byte(sa.CID)
-+	cid[1] = byte(sa.CID >> 8)
-+	sa.raw.Bdaddr_type = sa.AddrType
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil
-+}
-+
-+// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the RFCOMM protocol.
-+//
-+// Server example:
-+//
-+//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
-+//      _ = unix.Bind(fd, &unix.SockaddrRFCOMM{
-+//      	Channel: 1,
-+//      	Addr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00
-+//      })
-+//      _ = Listen(fd, 1)
-+//      nfd, sa, _ := Accept(fd)
-+//      fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd)
-+//      Read(nfd, buf)
-+//
-+// Client example:
-+//
-+//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
-+//      _ = Connect(fd, &SockaddrRFCOMM{
-+//      	Channel: 1,
-+//      	Addr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11
-+//      })
-+//      Write(fd, []byte(`hello`))
-+type SockaddrRFCOMM struct {
-+	// Addr represents a bluetooth address, byte ordering is little-endian.
-+	Addr [6]uint8
-+
-+	// Channel is a designated bluetooth channel, only 1-30 are available for use.
-+	// Since Linux 2.6.7 and further zero value is the first available channel.
-+	Channel uint8
-+
-+	raw RawSockaddrRFCOMM
-+}
-+
-+func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	sa.raw.Family = AF_BLUETOOTH
-+	sa.raw.Channel = sa.Channel
-+	sa.raw.Bdaddr = sa.Addr
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil
-+}
-+
- // SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
- // The RxID and TxID fields are used for transport protocol addressing in
- // (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
-@@ -630,7 +712,168 @@ func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {
- 	return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil
- }
- 
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+type SockaddrXDP struct {
-+	Flags        uint16
-+	Ifindex      uint32
-+	QueueID      uint32
-+	SharedUmemFD uint32
-+	raw          RawSockaddrXDP
-+}
-+
-+func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	sa.raw.Family = AF_XDP
-+	sa.raw.Flags = sa.Flags
-+	sa.raw.Ifindex = sa.Ifindex
-+	sa.raw.Queue_id = sa.QueueID
-+	sa.raw.Shared_umem_fd = sa.SharedUmemFD
-+
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil
-+}
-+
-+// This constant mirrors the #define of PX_PROTO_OE in
-+// linux/if_pppox.h. We're defining this by hand here instead of
-+// autogenerating through mkerrors.sh because including
-+// linux/if_pppox.h causes some declaration conflicts with other
-+// includes (linux/if_pppox.h includes linux/in.h, which conflicts
-+// with netinet/in.h). Given that we only need a single zero constant
-+// out of that file, it's cleaner to just define it by hand here.
-+const px_proto_oe = 0
-+
-+type SockaddrPPPoE struct {
-+	SID    uint16
-+	Remote []byte
-+	Dev    string
-+	raw    RawSockaddrPPPoX
-+}
-+
-+func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	if len(sa.Remote) != 6 {
-+		return nil, 0, EINVAL
-+	}
-+	if len(sa.Dev) > IFNAMSIZ-1 {
-+		return nil, 0, EINVAL
-+	}
-+
-+	*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX
-+	// This next field is in host-endian byte order. We can't use the
-+	// same unsafe pointer cast as above, because this value is not
-+	// 32-bit aligned and some architectures don't allow unaligned
-+	// access.
-+	//
-+	// However, the value of px_proto_oe is 0, so we can use
-+	// encoding/binary helpers to write the bytes without worrying
-+	// about the ordering.
-+	binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)
-+	// This field is deliberately big-endian, unlike the previous
-+	// one. The kernel expects SID to be in network byte order.
-+	binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)
-+	copy(sa.raw[8:14], sa.Remote)
-+	for i := 14; i < 14+IFNAMSIZ; i++ {
-+		sa.raw[i] = 0
-+	}
-+	copy(sa.raw[14:], sa.Dev)
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil
-+}
-+
-+// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.
-+// For more information on TIPC, see: http://tipc.sourceforge.net/.
-+type SockaddrTIPC struct {
-+	// Scope is the publication scopes when binding service/service range.
-+	// Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.
-+	Scope int
-+
-+	// Addr is the type of address used to manipulate a socket. Addr must be
-+	// one of:
-+	//  - *TIPCSocketAddr: "id" variant in the C addr union
-+	//  - *TIPCServiceRange: "nameseq" variant in the C addr union
-+	//  - *TIPCServiceName: "name" variant in the C addr union
-+	//
-+	// If nil, EINVAL will be returned when the structure is used.
-+	Addr TIPCAddr
-+
-+	raw RawSockaddrTIPC
-+}
-+
-+// TIPCAddr is implemented by types that can be used as an address for
-+// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,
-+// and *TIPCServiceName.
-+type TIPCAddr interface {
-+	tipcAddrtype() uint8
-+	tipcAddr() [12]byte
-+}
-+
-+func (sa *TIPCSocketAddr) tipcAddr() [12]byte {
-+	var out [12]byte
-+	copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])
-+	return out
-+}
-+
-+func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }
-+
-+func (sa *TIPCServiceRange) tipcAddr() [12]byte {
-+	var out [12]byte
-+	copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])
-+	return out
-+}
-+
-+func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }
-+
-+func (sa *TIPCServiceName) tipcAddr() [12]byte {
-+	var out [12]byte
-+	copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])
-+	return out
-+}
-+
-+func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }
-+
-+func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	if sa.Addr == nil {
-+		return nil, 0, EINVAL
-+	}
-+
-+	sa.raw.Family = AF_TIPC
-+	sa.raw.Scope = int8(sa.Scope)
-+	sa.raw.Addrtype = sa.Addr.tipcAddrtype()
-+	sa.raw.Addr = sa.Addr.tipcAddr()
-+
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil
-+}
-+
-+// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.
-+type SockaddrL2TPIP struct {
-+	Addr   [4]byte
-+	ConnId uint32
-+	raw    RawSockaddrL2TPIP
-+}
-+
-+func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	sa.raw.Family = AF_INET
-+	sa.raw.Conn_id = sa.ConnId
-+	for i := 0; i < len(sa.Addr); i++ {
-+		sa.raw.Addr[i] = sa.Addr[i]
-+	}
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil
-+}
-+
-+// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.
-+type SockaddrL2TPIP6 struct {
-+	Addr   [16]byte
-+	ZoneId uint32
-+	ConnId uint32
-+	raw    RawSockaddrL2TPIP6
-+}
-+
-+func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+	sa.raw.Family = AF_INET6
-+	sa.raw.Conn_id = sa.ConnId
-+	sa.raw.Scope_id = sa.ZoneId
-+	for i := 0; i < len(sa.Addr); i++ {
-+		sa.raw.Addr[i] = sa.Addr[i]
-+	}
-+	return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil
-+}
-+
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- 	switch rsa.Addr.Family {
- 	case AF_NETLINK:
- 		pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))
-@@ -675,30 +918,63 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- 		for n < len(pp.Path) && pp.Path[n] != 0 {
- 			n++
- 		}
--		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+		bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- 		sa.Name = string(bytes)
- 		return sa, nil
- 
- 	case AF_INET:
--		pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
--		sa := new(SockaddrInet4)
--		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
--		sa.Port = int(p[0])<<8 + int(p[1])
--		for i := 0; i < len(sa.Addr); i++ {
--			sa.Addr[i] = pp.Addr[i]
-+		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+		if err != nil {
-+			return nil, err
-+		}
-+
-+		switch proto {
-+		case IPPROTO_L2TP:
-+			pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))
-+			sa := new(SockaddrL2TPIP)
-+			sa.ConnId = pp.Conn_id
-+			for i := 0; i < len(sa.Addr); i++ {
-+				sa.Addr[i] = pp.Addr[i]
-+			}
-+			return sa, nil
-+		default:
-+			pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-+			sa := new(SockaddrInet4)
-+			p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+			sa.Port = int(p[0])<<8 + int(p[1])
-+			for i := 0; i < len(sa.Addr); i++ {
-+				sa.Addr[i] = pp.Addr[i]
-+			}
-+			return sa, nil
- 		}
--		return sa, nil
- 
- 	case AF_INET6:
--		pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
--		sa := new(SockaddrInet6)
--		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
--		sa.Port = int(p[0])<<8 + int(p[1])
--		sa.ZoneId = pp.Scope_id
--		for i := 0; i < len(sa.Addr); i++ {
--			sa.Addr[i] = pp.Addr[i]
-+		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+		if err != nil {
-+			return nil, err
-+		}
-+
-+		switch proto {
-+		case IPPROTO_L2TP:
-+			pp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))
-+			sa := new(SockaddrL2TPIP6)
-+			sa.ConnId = pp.Conn_id
-+			sa.ZoneId = pp.Scope_id
-+			for i := 0; i < len(sa.Addr); i++ {
-+				sa.Addr[i] = pp.Addr[i]
-+			}
-+			return sa, nil
-+		default:
-+			pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-+			sa := new(SockaddrInet6)
-+			p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+			sa.Port = int(p[0])<<8 + int(p[1])
-+			sa.ZoneId = pp.Scope_id
-+			for i := 0; i < len(sa.Addr); i++ {
-+				sa.Addr[i] = pp.Addr[i]
-+			}
-+			return sa, nil
- 		}
--		return sa, nil
- 
- 	case AF_VSOCK:
- 		pp := (*RawSockaddrVM)(unsafe.Pointer(rsa))
-@@ -706,6 +982,76 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- 			CID:  pp.Cid,
- 			Port: pp.Port,
- 		}
-+		return sa, nil
-+	case AF_BLUETOOTH:
-+		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+		if err != nil {
-+			return nil, err
-+		}
-+		// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections
-+		switch proto {
-+		case BTPROTO_L2CAP:
-+			pp := (*RawSockaddrL2)(unsafe.Pointer(rsa))
-+			sa := &SockaddrL2{
-+				PSM:      pp.Psm,
-+				CID:      pp.Cid,
-+				Addr:     pp.Bdaddr,
-+				AddrType: pp.Bdaddr_type,
-+			}
-+			return sa, nil
-+		case BTPROTO_RFCOMM:
-+			pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))
-+			sa := &SockaddrRFCOMM{
-+				Channel: pp.Channel,
-+				Addr:    pp.Bdaddr,
-+			}
-+			return sa, nil
-+		}
-+	case AF_XDP:
-+		pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))
-+		sa := &SockaddrXDP{
-+			Flags:        pp.Flags,
-+			Ifindex:      pp.Ifindex,
-+			QueueID:      pp.Queue_id,
-+			SharedUmemFD: pp.Shared_umem_fd,
-+		}
-+		return sa, nil
-+	case AF_PPPOX:
-+		pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))
-+		if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {
-+			return nil, EINVAL
-+		}
-+		sa := &SockaddrPPPoE{
-+			SID:    binary.BigEndian.Uint16(pp[6:8]),
-+			Remote: pp[8:14],
-+		}
-+		for i := 14; i < 14+IFNAMSIZ; i++ {
-+			if pp[i] == 0 {
-+				sa.Dev = string(pp[14:i])
-+				break
-+			}
-+		}
-+		return sa, nil
-+	case AF_TIPC:
-+		pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))
-+
-+		sa := &SockaddrTIPC{
-+			Scope: int(pp.Scope),
-+		}
-+
-+		// Determine which union variant is present in pp.Addr by checking
-+		// pp.Addrtype.
-+		switch pp.Addrtype {
-+		case TIPC_SERVICE_RANGE:
-+			sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))
-+		case TIPC_SERVICE_ADDR:
-+			sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))
-+		case TIPC_SOCKET_ADDR:
-+			sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))
-+		default:
-+			return nil, EINVAL
-+		}
-+
- 		return sa, nil
- 	}
- 	return nil, EAFNOSUPPORT
-@@ -718,7 +1064,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- 	if err != nil {
- 		return
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -736,7 +1082,7 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
- 	if len > SizeofSockaddrAny {
- 		panic("RawSockaddrAny too small")
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -750,20 +1096,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- 	if err = getsockname(fd, &rsa, &len); err != nil {
- 		return
- 	}
--	return anyToSockaddr(&rsa)
--}
--
--func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
--	vallen := _Socklen(4)
--	err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
--	return value, err
--}
--
--func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
--	var value IPMreq
--	vallen := _Socklen(SizeofIPMreq)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
-+	return anyToSockaddr(fd, &rsa)
- }
- 
- func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
-@@ -773,37 +1106,48 @@ func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
- 	return &value, err
- }
- 
--func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
--	var value IPv6Mreq
--	vallen := _Socklen(SizeofIPv6Mreq)
-+func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
-+	var value Ucred
-+	vallen := _Socklen(SizeofUcred)
- 	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- 	return &value, err
- }
- 
--func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
--	var value IPv6MTUInfo
--	vallen := _Socklen(SizeofIPv6MTUInfo)
-+func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
-+	var value TCPInfo
-+	vallen := _Socklen(SizeofTCPInfo)
- 	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- 	return &value, err
- }
- 
--func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
--	var value ICMPv6Filter
--	vallen := _Socklen(SizeofICMPv6Filter)
--	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
--	return &value, err
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+	buf := make([]byte, 256)
-+	vallen := _Socklen(len(buf))
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+	if err != nil {
-+		if err == ERANGE {
-+			buf = make([]byte, vallen)
-+			err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+		}
-+		if err != nil {
-+			return "", err
-+		}
-+	}
-+	return string(buf[:vallen-1]), nil
- }
- 
--func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
--	var value Ucred
--	vallen := _Socklen(SizeofUcred)
-+func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {
-+	var value TpacketStats
-+	vallen := _Socklen(SizeofTpacketStats)
- 	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- 	return &value, err
- }
- 
--func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
--	var value TCPInfo
--	vallen := _Socklen(SizeofTCPInfo)
-+func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {
-+	var value TpacketStatsV3
-+	vallen := _Socklen(SizeofTpacketStatsV3)
- 	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- 	return &value, err
- }
-@@ -812,6 +1156,32 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
- 	return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
- }
- 
-+func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {
-+	return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
-+}
-+
-+// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a
-+// socket to filter incoming packets.  See 'man 7 socket' for usage information.
-+func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {
-+	return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))
-+}
-+
-+func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {
-+	var p unsafe.Pointer
-+	if len(filter) > 0 {
-+		p = unsafe.Pointer(&filter[0])
-+	}
-+	return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))
-+}
-+
-+func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {
-+	return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
-+}
-+
-+func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {
-+	return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
-+}
-+
- // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)
- 
- // KeyctlInt calls keyctl commands in which each argument is an int.
-@@ -919,6 +1289,34 @@ func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error
- 	return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)
- }
- 
-+// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This
-+// command limits the set of keys that can be linked to the keyring, regardless
-+// of keyring permissions. The command requires the "setattr" permission.
-+//
-+// When called with an empty keyType the command locks the keyring, preventing
-+// any further keys from being linked to the keyring.
-+//
-+// The "asymmetric" keyType defines restrictions requiring key payloads to be
-+// DER encoded X.509 certificates signed by keys in another keyring. Restrictions
-+// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted",
-+// "key_or_keyring:<key>", and "key_or_keyring:<key>:chain".
-+//
-+// As of Linux 4.12, only the "asymmetric" keyType defines type-specific
-+// restrictions.
-+//
-+// See the full documentation at:
-+// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html
-+// http://man7.org/linux/man-pages/man2/keyctl.2.html
-+func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {
-+	if keyType == "" {
-+		return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)
-+	}
-+	return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)
-+}
-+
-+//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL
-+//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL
-+
- func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
- 	var msg Msghdr
- 	var rsa RawSockaddrAny
-@@ -926,22 +1324,24 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- 	msg.Namelen = uint32(SizeofSockaddrAny)
- 	var iov Iovec
- 	if len(p) > 0 {
--		iov.Base = (*byte)(unsafe.Pointer(&p[0]))
-+		iov.Base = &p[0]
- 		iov.SetLen(len(p))
- 	}
- 	var dummy byte
- 	if len(oob) > 0 {
--		var sockType int
--		sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
--		if err != nil {
--			return
-+		if len(p) == 0 {
-+			var sockType int
-+			sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-+			if err != nil {
-+				return
-+			}
-+			// receive at least one normal byte
-+			if sockType != SOCK_DGRAM {
-+				iov.Base = &dummy
-+				iov.SetLen(1)
-+			}
- 		}
--		// receive at least one normal byte
--		if sockType != SOCK_DGRAM && len(p) == 0 {
--			iov.Base = &dummy
--			iov.SetLen(1)
--		}
--		msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
-+		msg.Control = &oob[0]
- 		msg.SetControllen(len(oob))
- 	}
- 	msg.Iov = &iov
-@@ -953,7 +1353,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- 	recvflags = int(msg.Flags)
- 	// source address is only specified if the socket is unconnected
- 	if rsa.Addr.Family != AF_UNSPEC {
--		from, err = anyToSockaddr(&rsa)
-+		from, err = anyToSockaddr(fd, &rsa)
- 	}
- 	return
- }
-@@ -974,26 +1374,28 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error)
- 		}
- 	}
- 	var msg Msghdr
--	msg.Name = (*byte)(unsafe.Pointer(ptr))
-+	msg.Name = (*byte)(ptr)
- 	msg.Namelen = uint32(salen)
- 	var iov Iovec
- 	if len(p) > 0 {
--		iov.Base = (*byte)(unsafe.Pointer(&p[0]))
-+		iov.Base = &p[0]
- 		iov.SetLen(len(p))
- 	}
- 	var dummy byte
- 	if len(oob) > 0 {
--		var sockType int
--		sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
--		if err != nil {
--			return 0, err
-+		if len(p) == 0 {
-+			var sockType int
-+			sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-+			if err != nil {
-+				return 0, err
-+			}
-+			// send at least one normal byte
-+			if sockType != SOCK_DGRAM {
-+				iov.Base = &dummy
-+				iov.SetLen(1)
-+			}
- 		}
--		// send at least one normal byte
--		if sockType != SOCK_DGRAM && len(p) == 0 {
--			iov.Base = &dummy
--			iov.SetLen(1)
--		}
--		msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
-+		msg.Control = &oob[0]
- 		msg.SetControllen(len(oob))
- 	}
- 	msg.Iov = &iov
-@@ -1021,20 +1423,20 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro
- 	// The ptrace syscall differs from glibc's ptrace.
- 	// Peeks returns the word in *data, not as the return value.
- 
--	var buf [sizeofPtr]byte
-+	var buf [SizeofPtr]byte
- 
--	// Leading edge.  PEEKTEXT/PEEKDATA don't require aligned
-+	// Leading edge. PEEKTEXT/PEEKDATA don't require aligned
- 	// access (PEEKUSER warns that it might), but if we don't
- 	// align our reads, we might straddle an unmapped page
- 	// boundary and not get the bytes leading up to the page
- 	// boundary.
- 	n := 0
--	if addr%sizeofPtr != 0 {
--		err = ptrace(req, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
-+	if addr%SizeofPtr != 0 {
-+		err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
- 		if err != nil {
- 			return 0, err
- 		}
--		n += copy(out, buf[addr%sizeofPtr:])
-+		n += copy(out, buf[addr%SizeofPtr:])
- 		out = out[n:]
- 	}
- 
-@@ -1072,15 +1474,15 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
- 
- 	// Leading edge.
- 	n := 0
--	if addr%sizeofPtr != 0 {
--		var buf [sizeofPtr]byte
--		err = ptrace(peekReq, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
-+	if addr%SizeofPtr != 0 {
-+		var buf [SizeofPtr]byte
-+		err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
- 		if err != nil {
- 			return 0, err
- 		}
--		n += copy(buf[addr%sizeofPtr:], data)
-+		n += copy(buf[addr%SizeofPtr:], data)
- 		word := *((*uintptr)(unsafe.Pointer(&buf[0])))
--		err = ptrace(pokeReq, pid, addr-addr%sizeofPtr, word)
-+		err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)
- 		if err != nil {
- 			return 0, err
- 		}
-@@ -1088,19 +1490,19 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
- 	}
- 
- 	// Interior.
--	for len(data) > sizeofPtr {
-+	for len(data) > SizeofPtr {
- 		word := *((*uintptr)(unsafe.Pointer(&data[0])))
- 		err = ptrace(pokeReq, pid, addr+uintptr(n), word)
- 		if err != nil {
- 			return n, err
- 		}
--		n += sizeofPtr
--		data = data[sizeofPtr:]
-+		n += SizeofPtr
-+		data = data[SizeofPtr:]
- 	}
- 
- 	// Trailing edge.
- 	if len(data) > 0 {
--		var buf [sizeofPtr]byte
-+		var buf [SizeofPtr]byte
- 		err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
- 		if err != nil {
- 			return n, err
-@@ -1125,6 +1527,10 @@ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
- 	return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
- }
- 
-+func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {
-+	return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)
-+}
-+
- func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
- 	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
- }
-@@ -1154,8 +1560,12 @@ func PtraceSyscall(pid int, signal int) (err error) {
- 
- func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
- 
-+func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }
-+
- func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
- 
-+func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }
-+
- func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
- 
- //sys	reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
-@@ -1164,10 +1574,6 @@ func Reboot(cmd int) (err error) {
- 	return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
- }
- 
--func ReadDirent(fd int, buf []byte) (n int, err error) {
--	return Getdents(fd, buf)
--}
--
- func direntIno(buf []byte) (uint64, bool) {
- 	return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
- }
-@@ -1199,6 +1605,13 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
- 	return mount(source, target, fstype, flags, datap)
- }
- 
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
-+}
-+
- // Sendto
- // Recvfrom
- // Socketpair
-@@ -1209,26 +1622,33 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
- //sys	Acct(path string) (err error)
- //sys	AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)
- //sys	Adjtimex(buf *Timex) (state int, err error)
-+//sysnb	Capget(hdr *CapUserHeader, data *CapUserData) (err error)
-+//sysnb	Capset(hdr *CapUserHeader, data *CapUserData) (err error)
- //sys	Chdir(path string) (err error)
- //sys	Chroot(path string) (err error)
-+//sys	ClockGetres(clockid int32, res *Timespec) (err error)
- //sys	ClockGettime(clockid int32, time *Timespec) (err error)
-+//sys	ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
- //sys	Close(fd int) (err error)
- //sys	CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
-+//sys	DeleteModule(name string, flags int) (err error)
- //sys	Dup(oldfd int) (fd int, err error)
- //sys	Dup3(oldfd int, newfd int, flags int) (err error)
--//sysnb	EpollCreate(size int) (fd int, err error)
- //sysnb	EpollCreate1(flag int) (fd int, err error)
- //sysnb	EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
- //sys	Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2
- //sys	Exit(code int) = SYS_EXIT_GROUP
--//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fallocate(fd int, mode uint32, off int64, len int64) (err error)
- //sys	Fchdir(fd int) (err error)
- //sys	Fchmod(fd int, mode uint32) (err error)
- //sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
--//sys	fcntl(fd int, cmd int, arg int) (val int, err error)
- //sys	Fdatasync(fd int) (err error)
-+//sys	Fgetxattr(fd int, attr string, dest []byte) (sz int, err error)
-+//sys	FinitModule(fd int, params string, flags int) (err error)
-+//sys	Flistxattr(fd int, dest []byte) (sz int, err error)
- //sys	Flock(fd int, how int) (err error)
-+//sys	Fremovexattr(fd int, attr string) (err error)
-+//sys	Fsetxattr(fd int, attr string, dest []byte, flags int) (err error)
- //sys	Fsync(fd int) (err error)
- //sys	Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
- //sysnb	Getpgid(pid int) (pgid int, err error)
-@@ -1246,6 +1666,7 @@ func Getpgrp() (pid int) {
- //sysnb	Getsid(pid int) (sid int, err error)
- //sysnb	Gettid() (tid int)
- //sys	Getxattr(path string, attr string, dest []byte) (sz int, err error)
-+//sys	InitModule(moduleImage []byte, params string) (err error)
- //sys	InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
- //sysnb	InotifyInit1(flags int) (fd int, err error)
- //sysnb	InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
-@@ -1256,15 +1677,18 @@ func Getpgrp() (pid int) {
- //sys	Llistxattr(path string, dest []byte) (sz int, err error)
- //sys	Lremovexattr(path string, attr string) (err error)
- //sys	Lsetxattr(path string, attr string, data []byte, flags int) (err error)
-+//sys	MemfdCreate(name string, flags int) (fd int, err error)
- //sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
-+//sys	PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)
- //sys	PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
- //sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64
- //sys   Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
-+//sys	Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6
- //sys	read(fd int, p []byte) (n int, err error)
- //sys	Removexattr(path string, attr string) (err error)
--//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
-+//sys	Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)
- //sys	RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)
- //sys	Setdomainname(p []byte) (err error)
- //sys	Sethostname(p []byte) (err error)
-@@ -1273,6 +1697,17 @@ func Getpgrp() (pid int) {
- //sysnb	Settimeofday(tv *Timeval) (err error)
- //sys	Setns(fd int, nstype int) (err error)
- 
-+// PrctlRetInt performs a prctl operation specified by option and further
-+// optional arguments arg2 through arg5 depending on option. It returns a
-+// non-negative integer that is returned by the prctl syscall.
-+func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {
-+	ret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-+	if err != 0 {
-+		return 0, err
-+	}
-+	return int(ret), nil
-+}
-+
- // issue 1435.
- // On linux Setuid and Setgid only affects the current thread, not the process.
- // This does not match what most callers expect so we must return an error
-@@ -1286,8 +1721,38 @@ func Setgid(uid int) (err error) {
- 	return EOPNOTSUPP
- }
- 
-+// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.
-+// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.
-+// If the call fails due to other reasons, current fsgid will be returned.
-+func SetfsgidRetGid(gid int) (int, error) {
-+	return setfsgid(gid)
-+}
-+
-+// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.
-+// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability
-+// If the call fails due to other reasons, current fsuid will be returned.
-+func SetfsuidRetUid(uid int) (int, error) {
-+	return setfsuid(uid)
-+}
-+
-+func Setfsgid(gid int) error {
-+	_, err := setfsgid(gid)
-+	return err
-+}
-+
-+func Setfsuid(uid int) error {
-+	_, err := setfsuid(uid)
-+	return err
-+}
-+
-+func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {
-+	return signalfd(fd, sigmask, _C__NSIG/8, flags)
-+}
-+
- //sys	Setpriority(which int, who int, prio int) (err error)
- //sys	Setxattr(path string, attr string, data []byte, flags int) (err error)
-+//sys	signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4
-+//sys	Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
- //sys	Sync()
- //sys	Syncfs(fd int) (err error)
- //sysnb	Sysinfo(info *Sysinfo_t) (err error)
-@@ -1298,11 +1763,127 @@ func Setgid(uid int) (err error) {
- //sysnb	Uname(buf *Utsname) (err error)
- //sys	Unmount(target string, flags int) (err error) = SYS_UMOUNT2
- //sys	Unshare(flags int) (err error)
--//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys	write(fd int, p []byte) (n int, err error)
- //sys	exitThread(code int) (err error) = SYS_EXIT
- //sys	readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
- //sys	writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
-+//sys	readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV
-+//sys	writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV
-+//sys	preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV
-+//sys	pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV
-+//sys	preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2
-+//sys	pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2
-+
-+func bytes2iovec(bs [][]byte) []Iovec {
-+	iovecs := make([]Iovec, len(bs))
-+	for i, b := range bs {
-+		iovecs[i].SetLen(len(b))
-+		if len(b) > 0 {
-+			iovecs[i].Base = &b[0]
-+		} else {
-+			iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))
-+		}
-+	}
-+	return iovecs
-+}
-+
-+// offs2lohi splits offs into its lower and upper unsigned long. On 64-bit
-+// systems, hi will always be 0. On 32-bit systems, offs will be split in half.
-+// preadv/pwritev chose this calling convention so they don't need to add a
-+// padding-register for alignment on ARM.
-+func offs2lohi(offs int64) (lo, hi uintptr) {
-+	return uintptr(offs), uintptr(uint64(offs) >> SizeofLong)
-+}
-+
-+func Readv(fd int, iovs [][]byte) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	n, err = readv(fd, iovecs)
-+	readvRacedetect(iovecs, n, err)
-+	return n, err
-+}
-+
-+func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	lo, hi := offs2lohi(offset)
-+	n, err = preadv(fd, iovecs, lo, hi)
-+	readvRacedetect(iovecs, n, err)
-+	return n, err
-+}
-+
-+func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	lo, hi := offs2lohi(offset)
-+	n, err = preadv2(fd, iovecs, lo, hi, flags)
-+	readvRacedetect(iovecs, n, err)
-+	return n, err
-+}
-+
-+func readvRacedetect(iovecs []Iovec, n int, err error) {
-+	if !raceenabled {
-+		return
-+	}
-+	for i := 0; n > 0 && i < len(iovecs); i++ {
-+		m := int(iovecs[i].Len)
-+		if m > n {
-+			m = n
-+		}
-+		n -= m
-+		if m > 0 {
-+			raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
-+		}
-+	}
-+	if err == nil {
-+		raceAcquire(unsafe.Pointer(&ioSync))
-+	}
-+}
-+
-+func Writev(fd int, iovs [][]byte) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	n, err = writev(fd, iovecs)
-+	writevRacedetect(iovecs, n)
-+	return n, err
-+}
-+
-+func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	lo, hi := offs2lohi(offset)
-+	n, err = pwritev(fd, iovecs, lo, hi)
-+	writevRacedetect(iovecs, n)
-+	return n, err
-+}
-+
-+func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
-+	iovecs := bytes2iovec(iovs)
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	lo, hi := offs2lohi(offset)
-+	n, err = pwritev2(fd, iovecs, lo, hi, flags)
-+	writevRacedetect(iovecs, n)
-+	return n, err
-+}
-+
-+func writevRacedetect(iovecs []Iovec, n int) {
-+	if !raceenabled {
-+		return
-+	}
-+	for i := 0; n > 0 && i < len(iovecs); i++ {
-+		m := int(iovecs[i].Len)
-+		if m > n {
-+			m = n
-+		}
-+		n -= m
-+		if m > 0 {
-+			raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
-+		}
-+	}
-+}
- 
- // mmap varies by architecture; see syscall_linux_*.go.
- //sys	munmap(addr uintptr, length uintptr) (err error)
-@@ -1332,15 +1913,12 @@ func Munmap(b []byte) (err error) {
- // Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,
- // using the specified flags.
- func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
--	n, _, errno := Syscall6(
--		SYS_VMSPLICE,
--		uintptr(fd),
--		uintptr(unsafe.Pointer(&iovs[0])),
--		uintptr(len(iovs)),
--		uintptr(flags),
--		0,
--		0,
--	)
-+	var p unsafe.Pointer
-+	if len(iovs) > 0 {
-+		p = unsafe.Pointer(&iovs[0])
-+	}
-+
-+	n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)
- 	if errno != 0 {
- 		return 0, syscall.Errno(errno)
- 	}
-@@ -1348,6 +1926,164 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- 	return int(n), nil
- }
- 
-+//sys	faccessat(dirfd int, path string, mode uint32) (err error)
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {
-+		return EINVAL
-+	}
-+
-+	// The Linux kernel faccessat system call does not take any flags.
-+	// The glibc faccessat implements the flags itself; see
-+	// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD
-+	// Because people naturally expect syscall.Faccessat to act
-+	// like C faccessat, we do the same.
-+
-+	if flags == 0 {
-+		return faccessat(dirfd, path, mode)
-+	}
-+
-+	var st Stat_t
-+	if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {
-+		return err
-+	}
-+
-+	mode &= 7
-+	if mode == 0 {
-+		return nil
-+	}
-+
-+	var uid int
-+	if flags&AT_EACCESS != 0 {
-+		uid = Geteuid()
-+	} else {
-+		uid = Getuid()
-+	}
-+
-+	if uid == 0 {
-+		if mode&1 == 0 {
-+			// Root can read and write any file.
-+			return nil
-+		}
-+		if st.Mode&0111 != 0 {
-+			// Root can execute any file that anybody can execute.
-+			return nil
-+		}
-+		return EACCES
-+	}
-+
-+	var fmode uint32
-+	if uint32(uid) == st.Uid {
-+		fmode = (st.Mode >> 6) & 7
-+	} else {
-+		var gid int
-+		if flags&AT_EACCESS != 0 {
-+			gid = Getegid()
-+		} else {
-+			gid = Getgid()
-+		}
-+
-+		if uint32(gid) == st.Gid {
-+			fmode = (st.Mode >> 3) & 7
-+		} else {
-+			fmode = st.Mode & 7
-+		}
-+	}
-+
-+	if fmode&mode == mode {
-+		return nil
-+	}
-+
-+	return EACCES
-+}
-+
-+//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT
-+//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT
-+
-+// fileHandle is the argument to nameToHandleAt and openByHandleAt. We
-+// originally tried to generate it via unix/linux/types.go with "type
-+// fileHandle C.struct_file_handle" but that generated empty structs
-+// for mips64 and mips64le. Instead, hard code it for now (it's the
-+// same everywhere else) until the mips64 generator issue is fixed.
-+type fileHandle struct {
-+	Bytes uint32
-+	Type  int32
-+}
-+
-+// FileHandle represents the C struct file_handle used by
-+// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see
-+// OpenByHandleAt).
-+type FileHandle struct {
-+	*fileHandle
-+}
-+
-+// NewFileHandle constructs a FileHandle.
-+func NewFileHandle(handleType int32, handle []byte) FileHandle {
-+	const hdrSize = unsafe.Sizeof(fileHandle{})
-+	buf := make([]byte, hdrSize+uintptr(len(handle)))
-+	copy(buf[hdrSize:], handle)
-+	fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
-+	fh.Type = handleType
-+	fh.Bytes = uint32(len(handle))
-+	return FileHandle{fh}
-+}
-+
-+func (fh *FileHandle) Size() int   { return int(fh.fileHandle.Bytes) }
-+func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }
-+func (fh *FileHandle) Bytes() []byte {
-+	n := fh.Size()
-+	if n == 0 {
-+		return nil
-+	}
-+	return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n]
-+}
-+
-+// NameToHandleAt wraps the name_to_handle_at system call; it obtains
-+// a handle for a path name.
-+func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {
-+	var mid _C_int
-+	// Try first with a small buffer, assuming the handle will
-+	// only be 32 bytes.
-+	size := uint32(32 + unsafe.Sizeof(fileHandle{}))
-+	didResize := false
-+	for {
-+		buf := make([]byte, size)
-+		fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
-+		fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))
-+		err = nameToHandleAt(dirfd, path, fh, &mid, flags)
-+		if err == EOVERFLOW {
-+			if didResize {
-+				// We shouldn't need to resize more than once
-+				return
-+			}
-+			didResize = true
-+			size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))
-+			continue
-+		}
-+		if err != nil {
-+			return
-+		}
-+		return FileHandle{fh}, int(mid), nil
-+	}
-+}
-+
-+// OpenByHandleAt wraps the open_by_handle_at system call; it opens a
-+// file via a handle as previously returned by NameToHandleAt.
-+func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {
-+	return openByHandleAt(mountFD, handle.fileHandle, flags)
-+}
-+
-+// Klogset wraps the sys_syslog system call; it sets console_loglevel to
-+// the value specified by arg and passes a dummy pointer to bufp.
-+func Klogset(typ int, arg int) (err error) {
-+	var p unsafe.Pointer
-+	_, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))
-+	if errno != 0 {
-+		return errnoErr(errno)
-+	}
-+	return nil
-+}
-+
- /*
-  * Unimplemented
-  */
-@@ -1355,23 +2091,14 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Alarm
- // ArchPrctl
- // Brk
--// Capget
--// Capset
--// ClockGetres
- // ClockNanosleep
- // ClockSettime
- // Clone
--// CreateModule
--// DeleteModule
- // EpollCtlOld
- // EpollPwait
- // EpollWaitOld
- // Execve
--// Fgetxattr
--// Flistxattr
- // Fork
--// Fremovexattr
--// Fsetxattr
- // Futex
- // GetKernelSyms
- // GetMempolicy
-@@ -1405,13 +2132,11 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Msgget
- // Msgrcv
- // Msgsnd
--// Newfstatat
- // Nfsservctl
- // Personality
- // Pselect6
- // Ptrace
- // Putpmsg
--// QueryModule
- // Quotactl
- // Readahead
- // Readv
-@@ -1426,11 +2151,9 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // RtSigtimedwait
- // SchedGetPriorityMax
- // SchedGetPriorityMin
--// SchedGetaffinity
- // SchedGetparam
- // SchedGetscheduler
- // SchedRrGetInterval
--// SchedSetaffinity
- // SchedSetparam
- // SchedYield
- // Security
-@@ -1447,7 +2170,6 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Shmdt
- // Shmget
- // Sigaltstack
--// Signalfd
- // Swapoff
- // Swapon
- // Sysfs
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-index 2b881b97..a8374b67 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-@@ -10,25 +10,15 @@
- package unix
- 
- import (
--	"syscall"
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = int32(nsec / 1e9)
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
- //sysnb	pipe(p *[2]_C_int) (err error)
-@@ -60,9 +50,12 @@ func Pipe2(p []int, flags int) (err error) {
- // 64-bit file system and 32-bit uid calls
- // (386 default is 32-bit file system and 16-bit uid).
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
-+//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
- //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
- //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
- //sysnb	Getegid() (egid int) = SYS_GETEGID32
- //sysnb	Geteuid() (euid int) = SYS_GETEUID32
-@@ -75,9 +68,10 @@ func Pipe2(p []int, flags int) (err error) {
- //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
--//sys	Setfsgid(gid int) (err error) = SYS_SETFSGID32
--//sys	Setfsuid(uid int) (err error) = SYS_SETFSUID32
-+//sys	setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32
-+//sys	setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32
- //sysnb	Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
-@@ -86,12 +80,12 @@ func Pipe2(p []int, flags int) (err error) {
- //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
- //sysnb	setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
- //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
- 
- //sys	mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
--//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Pause() (err error)
- 
- func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-@@ -165,10 +159,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) {
- 	return setrlimit(resource, &rl)
- }
- 
--// Underlying system call writes to newoffset via pointer.
--// Implemented in assembly to avoid allocation.
--func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
--
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	newoffset, errno := seek(fd, offset, whence)
- 	if errno != 0 {
-@@ -177,17 +167,17 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return newoffset, nil
- }
- 
--// Vsyscalls on amd64.
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- //sysnb	Time(t *Time_t) (tt Time_t, err error)
--
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
- // On x86 Linux, all the socket calls go through an extra indirection,
- // I think because the 5-register system call interface can't handle
--// the 6-argument calls like sendto and recvfrom.  Instead the
-+// the 6-argument calls like sendto and recvfrom. Instead the
- // arguments to the underlying system call are the number below
--// and a pointer to an array of uintptr.  We hide the pointer in the
-+// and a pointer to an array of uintptr. We hide the pointer in the
- // socketcall assembly to avoid allocation on every system call.
- 
- const (
-@@ -214,9 +204,6 @@ const (
- 	_SENDMMSG    = 20
- )
- 
--func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
--func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
--
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- 	if e != 0 {
-@@ -385,6 +372,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-index 9516a3fd..8ed1d546 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-@@ -7,10 +7,12 @@
- package unix
- 
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys	Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
- //sysnb	Getegid() (egid int)
-@@ -18,20 +20,43 @@ package unix
- //sysnb	Getgid() (gid int)
- //sysnb	Getrlimit(resource int, rlim *Rlimit) (err error)
- //sysnb	Getuid() (uid int)
--//sysnb	InotifyInit() (fd int, err error)
-+//sysnb	inotifyInit() (fd int, err error)
-+
-+func InotifyInit() (fd int, err error) {
-+	// First try inotify_init1, because Android's seccomp policy blocks the latter.
-+	fd, err = InotifyInit1(0)
-+	if err == ENOSYS {
-+		fd, err = inotifyInit()
-+	}
-+	return
-+}
-+
- //sys	Ioperm(from int, num int, on int) (err error)
- //sys	Iopl(level int) (err error)
- //sys	Lchown(path string, uid int, gid int) (err error)
- //sys	Listen(s int, n int) (err error)
--//sys	Lstat(path string, stat *Stat_t) (err error)
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)
-+}
-+
- //sys	Pause() (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	var ts *Timespec
-+	if timeout != nil {
-+		ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+	}
-+	return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -39,10 +64,16 @@ package unix
- //sysnb	Setreuid(ruid int, euid int) (err error)
- //sys	Shutdown(fd int, how int) (err error)
- //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
--//sys	Stat(path string, stat *Stat_t) (err error)
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	// Use fstatat, because Android's seccomp policy blocks stat.
-+	return Fstatat(AT_FDCWD, path, stat, 0)
-+}
-+
- //sys	Statfs(path string, buf *Statfs_t) (err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error)
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -61,6 +92,8 @@ package unix
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	errno := gettimeofday(tv)
- 	if errno != 0 {
-@@ -69,8 +102,6 @@ func Gettimeofday(tv *Timeval) (err error) {
- 	return nil
- }
- 
--func Getpagesize() int { return 4096 }
--
- func Time(t *Time_t) (tt Time_t, err error) {
- 	var tv Timeval
- 	errno := gettimeofday(&tv)
-@@ -84,20 +115,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
- 
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- //sysnb	pipe(p *[2]_C_int) (err error)
-@@ -138,6 +163,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-@@ -150,3 +179,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-index 71d87022..99ae6137 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-@@ -11,29 +11,26 @@ import (
- 	"unsafe"
- )
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = int32(nsec / 1e9)
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
-+//sysnb	pipe(p *[2]_C_int) (err error)
-+
- func Pipe(p []int) (err error) {
- 	if len(p) != 2 {
- 		return EINVAL
- 	}
- 	var pp [2]_C_int
-+	// Try pipe2 first for Android O, then try pipe for kernel 2.6.23.
- 	err = pipe2(&pp, 0)
-+	if err == ENOSYS {
-+		err = pipe(&pp)
-+	}
- 	p[0] = int(pp[0])
- 	p[1] = int(pp[1])
- 	return
-@@ -84,8 +81,11 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- // 64-bit file system and 32-bit uid calls
- // (16-bit uid calls are not always supported in newer kernels)
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
-+//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
- //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sysnb	Getegid() (egid int) = SYS_GETEGID32
- //sysnb	Geteuid() (euid int) = SYS_GETEUID32
- //sysnb	Getgid() (gid int) = SYS_GETGID32
-@@ -94,10 +94,12 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- //sys	Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
- //sys	Listen(s int, n int) (err error)
- //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys	Pause() (err error)
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
- //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
--//sys	Setfsgid(gid int) (err error) = SYS_SETFSGID32
--//sys	Setfsuid(uid int) (err error) = SYS_SETFSUID32
-+//sys	setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32
-+//sys	setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32
- //sysnb	Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
-@@ -105,11 +107,10 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- //sys	Shutdown(fd int, how int) (err error)
- //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
- //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- 
--// Vsyscalls on amd64.
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
--//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
--//sys	Pause() (err error)
- 
- func Time(t *Time_t) (Time_t, error) {
- 	var tv Timeval
-@@ -131,6 +132,8 @@ func Utime(path string, buf *Utimbuf) error {
- 	return Utimes(path, tv)
- }
- 
-+//sys	utimes(path string, times *[2]Timeval) (err error)
-+
- //sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
- //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-@@ -249,6 +252,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -261,3 +268,24 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys	armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) error {
-+	// The sync_file_range and arm_sync_file_range syscalls differ only in the
-+	// order of their arguments.
-+	return armSyncFileRange(fd, flags, off, n)
-+}
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-index 4a136396..807a0b20 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-@@ -6,7 +6,17 @@
- 
- package unix
- 
-+import "unsafe"
-+
-+func EpollCreate(size int) (fd int, err error) {
-+	if size <= 0 {
-+		return -1, EINVAL
-+	}
-+	return EpollCreate1(0)
-+}
-+
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
- //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-@@ -20,11 +30,20 @@ package unix
- //sys	Listen(s int, n int) (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	var ts *Timespec
-+	if timeout != nil {
-+		ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+	}
-+	return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -48,6 +67,11 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys	Statfs(path string, buf *Statfs_t) (err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error)
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	return ENOSYS
-+}
-+
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -66,23 +90,26 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
--func Getpagesize() int { return 65536 }
--
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
-+}
- 
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {
-+	if tv == nil {
-+		return utimensat(dirfd, path, nil, 0)
-+	}
-+
-+	ts := []Timespec{
-+		NsecToTimespec(TimevalToNsec(tv[0])),
-+		NsecToTimespec(TimevalToNsec(tv[1])),
-+	}
-+	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- }
- 
- func Time(t *Time_t) (Time_t, error) {
-@@ -105,6 +132,18 @@ func Utime(path string, buf *Utimbuf) error {
- 	return Utimes(path, tv)
- }
- 
-+func utimes(path string, tv *[2]Timeval) (err error) {
-+	if tv == nil {
-+		return utimensat(AT_FDCWD, path, nil, 0)
-+	}
-+
-+	ts := []Timespec{
-+		NsecToTimespec(TimevalToNsec(tv[0])),
-+		NsecToTimespec(TimevalToNsec(tv[1])),
-+	}
-+	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
- func Pipe(p []int) (err error) {
- 	if len(p) != 2 {
- 		return EINVAL
-@@ -141,6 +180,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-@@ -153,30 +196,11 @@ func Dup2(oldfd int, newfd int) (err error) {
- 	return Dup3(oldfd, newfd, 0)
- }
- 
--func Pause() (err error) {
--	_, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
-+func Pause() error {
-+	_, err := ppoll(nil, 0, nil, nil)
-+	return err
- }
- 
--// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
--// these when the deprecated syscalls that the syscall package relies on
--// are removed.
--const (
--	SYS_GETPGRP      = 1060
--	SYS_UTIMES       = 1037
--	SYS_FUTIMESAT    = 1066
--	SYS_PAUSE        = 1061
--	SYS_USTAT        = 1070
--	SYS_UTIME        = 1063
--	SYS_LCHOWN       = 1032
--	SYS_TIME         = 1062
--	SYS_EPOLL_CREATE = 1042
--	SYS_EPOLL_WAIT   = 1069
--)
--
- func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	var ts *Timespec
- 	if timeout >= 0 {
-@@ -188,3 +212,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return ppoll(&fds[0], len(fds), ts, nil)
- }
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
-new file mode 100644
-index 00000000..c26e6ec2
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
-@@ -0,0 +1,14 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,!gccgo
-+
-+package unix
-+
-+// SyscallNoError may be used instead of Syscall for syscalls that don't fail.
-+func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
-+
-+// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
-+// fail.
-+func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
-new file mode 100644
-index 00000000..070bd389
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
-@@ -0,0 +1,16 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,!gccgo,386
-+
-+package unix
-+
-+import "syscall"
-+
-+// Underlying system call writes to newoffset via pointer.
-+// Implemented in assembly to avoid allocation.
-+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
-+
-+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
-+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
-new file mode 100644
-index 00000000..308eb7ae
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
-@@ -0,0 +1,30 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,gccgo,386
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
-+	var newoffset int64
-+	offsetLow := uint32(offset & 0xffffffff)
-+	offsetHigh := uint32((offset >> 32) & 0xffffffff)
-+	_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
-+	return newoffset, err
-+}
-+
-+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
-+	fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
-+	return int(fd), err
-+}
-+
-+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
-+	fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
-+	return int(fd), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
-new file mode 100644
-index 00000000..aa7fc9e1
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
-@@ -0,0 +1,20 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,gccgo,arm
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
-+	var newoffset int64
-+	offsetLow := uint32(offset & 0xffffffff)
-+	offsetHigh := uint32((offset >> 32) & 0xffffffff)
-+	_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
-+	return newoffset, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-index 73318e5c..af77e6e2 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-@@ -8,7 +8,9 @@
- package unix
- 
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
-@@ -22,11 +24,20 @@ package unix
- //sys	Pause() (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	var ts *Timespec
-+	if timeout != nil {
-+		ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+	}
-+	return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -37,6 +48,7 @@ package unix
- //sys	Statfs(path string, buf *Statfs_t) (err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error)
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -55,8 +67,7 @@ package unix
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
--func Getpagesize() int { return 65536 }
--
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- 
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -72,20 +83,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
- 
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func Pipe(p []int) (err error) {
-@@ -143,6 +148,7 @@ type stat_t struct {
- }
- 
- //sys	fstat(fd int, st *stat_t) (err error)
-+//sys	fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys	lstat(path string, st *stat_t) (err error)
- //sys	stat(path string, st *stat_t) (err error)
- 
-@@ -153,6 +159,13 @@ func Fstat(fd int, s *Stat_t) (err error) {
- 	return
- }
- 
-+func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {
-+	st := &stat_t{}
-+	err = fstatat(dirfd, path, st, flags)
-+	fillStat_t(s, st)
-+	return
-+}
-+
- func Lstat(path string, s *Stat_t) (err error) {
- 	st := &stat_t{}
- 	err = lstat(path, st)
-@@ -195,10 +208,18 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
- 
-+func InotifyInit() (fd int, err error) {
-+	return InotifyInit1(0)
-+}
-+
- //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error)
- 
- func Poll(fds []PollFd, timeout int) (n int, err error) {
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-index b83d93fd..e286c6ba 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-@@ -15,6 +15,9 @@ import (
- func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
- 
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
-+//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
- //sysnb	Getegid() (egid int)
-@@ -25,20 +28,20 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- //sys	Listen(s int, n int) (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
--
- //sysnb	Setreuid(ruid int, euid int) (err error)
- //sys	Shutdown(fd int, how int) (err error)
--//sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
--
-+//sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -60,15 +63,17 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- //sys	Ioperm(from int, num int, on int) (err error)
- //sys	Iopl(level int) (err error)
- 
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- //sysnb	Time(t *Time_t) (tt Time_t, err error)
-+//sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
- //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
- 
--//sys	Utime(path string, buf *Utimbuf) (err error)
--//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Pause() (err error)
- 
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
-@@ -99,19 +104,12 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 	return
- }
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int32(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = int32(nsec / 1e9)
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
- 
- //sysnb pipe2(p *[2]_C_int, flags int) (err error)
-@@ -127,14 +125,13 @@ func Pipe2(p []int, flags int) (err error) {
- 	return
- }
- 
-+//sysnb pipe() (p1 int, p2 int, err error)
-+
- func Pipe(p []int) (err error) {
- 	if len(p) != 2 {
- 		return EINVAL
- 	}
--	var pp [2]_C_int
--	err = pipe2(&pp, 0)
--	p[0] = int(pp[0])
--	p[1] = int(pp[1])
-+	p[0], p[1], err = pipe()
- 	return
- }
- 
-@@ -223,6 +220,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-@@ -235,5 +236,3 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return poll(&fds[0], len(fds), timeout)
- }
--
--func Getpagesize() int { return 4096 }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-index 60770f62..ca0345aa 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-@@ -7,10 +7,13 @@
- 
- package unix
- 
--//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
-+//sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys	Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
- //sysnb	Getegid() (egid int)
-@@ -27,11 +30,12 @@ package unix
- //sys	Pause() (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -41,8 +45,8 @@ package unix
- //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
- //sys	Stat(path string, stat *Stat_t) (err error)
- //sys	Statfs(path string, buf *Statfs_t) (err error)
--//sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2
- //sys	Truncate(path string, length int64) (err error)
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -61,26 +65,18 @@ package unix
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
--func Getpagesize() int { return 65536 }
--
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- //sysnb	Time(t *Time_t) (tt Time_t, err error)
--
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func (r *PtraceRegs) PC() uint64 { return r.Nip }
-@@ -95,6 +91,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-@@ -133,3 +133,24 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys	syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) error {
-+	// The sync_file_range and sync_file_range2 syscalls differ only in the
-+	// order of their arguments.
-+	return syncFileRange2(fd, flags, off, n)
-+}
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-similarity index 68%
-copy from vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-copy to vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-index 4a136396..abdabbac 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-@@ -1,12 +1,22 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build arm64,linux
-+// +build riscv64,linux
- 
- package unix
- 
-+import "unsafe"
-+
-+func EpollCreate(size int) (fd int, err error) {
-+	if size <= 0 {
-+		return -1, EINVAL
-+	}
-+	return EpollCreate1(0)
-+}
-+
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
- //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-@@ -21,10 +31,18 @@ package unix
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	var ts *Timespec
-+	if timeout != nil {
-+		ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+	}
-+	return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -48,6 +66,11 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys	Statfs(path string, buf *Statfs_t) (err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error)
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	return ENOSYS
-+}
-+
- //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -66,23 +89,26 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
--func Getpagesize() int { return 65536 }
--
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
-+}
- 
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {
-+	if tv == nil {
-+		return utimensat(dirfd, path, nil, 0)
-+	}
-+
-+	ts := []Timespec{
-+		NsecToTimespec(TimevalToNsec(tv[0])),
-+		NsecToTimespec(TimevalToNsec(tv[1])),
-+	}
-+	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- }
- 
- func Time(t *Time_t) (Time_t, error) {
-@@ -105,6 +131,18 @@ func Utime(path string, buf *Utimbuf) error {
- 	return Utimes(path, tv)
- }
- 
-+func utimes(path string, tv *[2]Timeval) (err error) {
-+	if tv == nil {
-+		return utimensat(AT_FDCWD, path, nil, 0)
-+	}
-+
-+	ts := []Timespec{
-+		NsecToTimespec(TimevalToNsec(tv[0])),
-+		NsecToTimespec(TimevalToNsec(tv[1])),
-+	}
-+	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
- func Pipe(p []int) (err error) {
- 	if len(p) != 2 {
- 		return EINVAL
-@@ -141,6 +179,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-@@ -153,30 +195,11 @@ func Dup2(oldfd int, newfd int) (err error) {
- 	return Dup3(oldfd, newfd, 0)
- }
- 
--func Pause() (err error) {
--	_, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
-+func Pause() error {
-+	_, err := ppoll(nil, 0, nil, nil)
-+	return err
- }
- 
--// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
--// these when the deprecated syscalls that the syscall package relies on
--// are removed.
--const (
--	SYS_GETPGRP      = 1060
--	SYS_UTIMES       = 1037
--	SYS_FUTIMESAT    = 1066
--	SYS_PAUSE        = 1061
--	SYS_USTAT        = 1070
--	SYS_UTIME        = 1063
--	SYS_LCHOWN       = 1032
--	SYS_TIME         = 1062
--	SYS_EPOLL_CREATE = 1042
--	SYS_EPOLL_WAIT   = 1069
--)
--
- func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	var ts *Timespec
- 	if timeout >= 0 {
-@@ -188,3 +211,20 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return ppoll(&fds[0], len(fds), ts, nil)
- }
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)
-+}
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-index 1708a4bb..533e9305 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-@@ -11,10 +11,12 @@ import (
- )
- 
- //sys	Dup2(oldfd int, newfd int) (err error)
-+//sysnb	EpollCreate(size int) (fd int, err error)
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys	Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
- //sysnb	Getegid() (egid int)
-@@ -28,11 +30,12 @@ import (
- //sys	Pause() (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
- //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -43,11 +46,11 @@ import (
- //sys	Statfs(path string, buf *Statfs_t) (err error)
- //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys	Truncate(path string, length int64) (err error)
-+//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
- //sysnb	setgroups(n int, list *_Gid_t) (err error)
- 
--func Getpagesize() int { return 4096 }
--
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- 
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -63,20 +66,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
- 
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = nsec % 1e9 / 1e3
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- //sysnb pipe2(p *[2]_C_int, flags int) (err error)
-@@ -123,6 +120,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-@@ -326,3 +327,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- 	}
- 	return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+	cmdlineLen := len(cmdline)
-+	if cmdlineLen > 0 {
-+		// Account for the additional NULL byte added by
-+		// BytePtrFromString in kexecFileLoad. The kexec_file_load
-+		// syscall expects a NULL-terminated string.
-+		cmdlineLen++
-+	}
-+	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-index 20b7454d..d890a227 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-@@ -6,15 +6,12 @@
- 
- package unix
- 
--import (
--	"sync/atomic"
--	"syscall"
--)
--
- //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys	Dup2(oldfd int, newfd int) (err error)
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys	Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
- //sysnb	Getegid() (egid int)
-@@ -29,11 +26,12 @@ import (
- //sys	Pause() (err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
- //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys	Setfsgid(gid int) (err error)
--//sys	Setfsuid(uid int) (err error)
-+//sys	setfsgid(gid int) (prev int, err error)
-+//sys	setfsuid(uid int) (prev int, err error)
- //sysnb	Setregid(rgid int, egid int) (err error)
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
-@@ -63,21 +61,6 @@ import (
- //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
- 
--func sysconf(name int) (n int64, err syscall.Errno)
--
--// pageSize caches the value of Getpagesize, since it can't change
--// once the system is booted.
--var pageSize int64 // accessed atomically
--
--func Getpagesize() int {
--	n := atomic.LoadInt64(&pageSize)
--	if n == 0 {
--		n, _ = sysconf(_SC_PAGESIZE)
--		atomic.StoreInt64(&pageSize, n)
--	}
--	return int(n)
--}
--
- func Ioperm(from int, num int, on int) (err error) {
- 	return ENOSYS
- }
-@@ -86,6 +69,7 @@ func Iopl(level int) (err error) {
- 	return ENOSYS
- }
- 
-+//sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
- 
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -101,20 +85,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
- 
- //sys	Utime(path string, buf *Utimbuf) (err error)
-+//sys	utimes(path string, times *[2]Timeval) (err error)
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Sec = nsec / 1e9
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func (r *PtraceRegs) PC() uint64 { return r.Tpc }
-@@ -129,6 +107,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint64(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint64(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-index e1296684..45b50a61 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-@@ -13,10 +13,12 @@
- package unix
- 
- import (
-+	"runtime"
- 	"syscall"
- 	"unsafe"
- )
- 
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Len    uint8
- 	Family uint8
-@@ -55,7 +57,6 @@ func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
- }
- 
- func nametomib(name string) (mib []_C_int, err error) {
--
- 	// Split name into components.
- 	var parts []string
- 	last := 0
-@@ -114,9 +115,47 @@ func Pipe(p []int) (err error) {
- 	return
- }
- 
--//sys getdents(fd int, buf []byte) (n int, err error)
-+//sys Getdents(fd int, buf []byte) (n int, err error)
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	return getdents(fd, buf)
-+	n, err = Getdents(fd, buf)
-+	if err != nil || basep == nil {
-+		return
-+	}
-+
-+	var off int64
-+	off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
-+	if err != nil {
-+		*basep = ^uintptr(0)
-+		return
-+	}
-+	*basep = uintptr(off)
-+	if unsafe.Sizeof(*basep) == 8 {
-+		return
-+	}
-+	if off>>32 != 0 {
-+		// We can't stuff the offset back into a uintptr, so any
-+		// future calls would be suspect. Generate an error.
-+		// EIO is allowed by getdirentries.
-+		err = EIO
-+	}
-+	return
-+}
-+
-+const ImplementsGetwd = true
-+
-+//sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+	var buf [PathMax]byte
-+	_, err := Getcwd(buf[0:])
-+	if err != nil {
-+		return "", err
-+	}
-+	n := clen(buf[:])
-+	if n < 1 {
-+		return "", EINVAL
-+	}
-+	return string(buf[:n]), nil
- }
- 
- // TODO
-@@ -124,6 +163,83 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 	return -1, ENOSYS
- }
- 
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+	// used on Darwin for UtimesNano
-+	return ENOSYS
-+}
-+
-+//sys	ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {
-+	var value Ptmget
-+	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+	runtime.KeepAlive(value)
-+	return &value, err
-+}
-+
-+func Uname(uname *Utsname) error {
-+	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+	n := unsafe.Sizeof(uname.Sysname)
-+	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+	n = unsafe.Sizeof(uname.Nodename)
-+	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+	n = unsafe.Sizeof(uname.Release)
-+	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_VERSION}
-+	n = unsafe.Sizeof(uname.Version)
-+	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	// The version might have newlines or tabs in it, convert them to
-+	// spaces.
-+	for i, b := range uname.Version {
-+		if b == '\n' || b == '\t' {
-+			if i == len(uname.Version)-1 {
-+				uname.Version[i] = 0
-+			} else {
-+				uname.Version[i] = ' '
-+			}
-+		}
-+	}
-+
-+	mib = []_C_int{CTL_HW, HW_MACHINE}
-+	n = unsafe.Sizeof(uname.Machine)
-+	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	return nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
-+}
-+
-+func Fstatvfs(fd int, buf *Statvfs_t) (err error) {
-+	return Fstatvfs1(fd, buf, ST_WAIT)
-+}
-+
-+func Statvfs(path string, buf *Statvfs_t) (err error) {
-+	return Statvfs1(path, buf, ST_WAIT)
-+}
-+
- /*
-  * Exposed directly
-  */
-@@ -137,14 +253,33 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sys	Close(fd int) (err error)
- //sys	Dup(fd int) (nfd int, err error)
- //sys	Dup2(from int, to int) (err error)
-+//sys	Dup3(from int, to int, flags int) (err error)
- //sys	Exit(code int)
-+//sys	ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)
-+//sys	ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)
-+//sys	ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys	ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)
-+//sys	ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE
- //sys	Fchdir(fd int) (err error)
- //sys	Fchflags(fd int, flags int) (err error)
- //sys	Fchmod(fd int, mode uint32) (err error)
-+//sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchown(fd int, uid int, gid int) (err error)
-+//sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys	Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1
- //sys	Fsync(fd int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
- //sysnb	Getegid() (egid int)
-@@ -165,23 +300,30 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sys	Kqueue() (fd int, err error)
- //sys	Lchown(path string, uid int, gid int) (err error)
- //sys	Link(path string, link string) (err error)
-+//sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys	Listen(s int, backlog int) (err error)
- //sys	Lstat(path string, stat *Stat_t) (err error)
- //sys	Mkdir(path string, mode uint32) (err error)
-+//sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mkfifo(path string, mode uint32) (err error)
-+//sys	Mkfifoat(dirfd int, path string, mode uint32) (err error)
- //sys	Mknod(path string, mode uint32, dev int) (err error)
-+//sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys	Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys	Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys	Pathconf(path string, name int) (val int, err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error)
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error)
- //sys	read(fd int, p []byte) (n int, err error)
- //sys	Readlink(path string, buf []byte) (n int, err error)
-+//sys	Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
- //sys	Rename(from string, to string) (err error)
-+//sys	Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys	Revoke(path string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -194,11 +336,14 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sysnb	Settimeofday(tp *Timeval) (err error)
- //sysnb	Setuid(uid int) (err error)
- //sys	Stat(path string, stat *Stat_t) (err error)
-+//sys	Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1
- //sys	Symlink(path string, link string) (err error)
-+//sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys	Sync() (err error)
- //sys	Truncate(path string, length int64) (err error)
- //sys	Umask(newmask int) (oldmask int)
- //sys	Unlink(path string) (err error)
-+//sys	Unlinkat(dirfd int, path string, flags int) (err error)
- //sys	Unmount(path string, flags int) (err error)
- //sys	write(fd int, p []byte) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -225,7 +370,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // __msync13
- // __ntp_gettime30
- // __posix_chown
--// __posix_fadvise50
- // __posix_fchown
- // __posix_lchown
- // __posix_rename
-@@ -384,7 +528,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // getitimer
- // getvfsstat
- // getxattr
--// ioctl
- // ktrace
- // lchflags
- // lchmod
-@@ -422,7 +565,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // ntp_adjtime
- // pmc_control
- // pmc_get_info
--// poll
- // pollts
- // preadv
- // profil
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-index afaca098..24da8b52 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-@@ -6,21 +6,12 @@
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-index a6ff04ce..25a0ac82 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-@@ -6,21 +6,12 @@
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int64(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-index 68a6969b..21591ecd 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-@@ -6,21 +6,12 @@
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-similarity index 50%
-copy from vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-index a6ff04ce..80474963 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-@@ -1,26 +1,17 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build amd64,netbsd
-+// +build arm64,netbsd
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int64(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_no_getwd.go b/vendor/golang.org/x/sys/unix/syscall_no_getwd.go
-deleted file mode 100644
-index 530792ea..00000000
---- a/vendor/golang.org/x/sys/unix/syscall_no_getwd.go
-+++ /dev/null
-@@ -1,11 +0,0 @@
--// Copyright 2013 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build dragonfly freebsd netbsd openbsd
--
--package unix
--
--const ImplementsGetwd = false
--
--func Getwd() (string, error) { return "", ENOTSUP }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-index 408e6308..a266e92a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-@@ -13,10 +13,12 @@
- package unix
- 
- import (
-+	"sort"
- 	"syscall"
- 	"unsafe"
- )
- 
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Len    uint8
- 	Family uint8
-@@ -32,23 +34,11 @@ type SockaddrDatalink struct {
- func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
- 
- func nametomib(name string) (mib []_C_int, err error) {
--
--	// Perform lookup via a binary search
--	left := 0
--	right := len(sysctlMib) - 1
--	for {
--		idx := left + (right-left)/2
--		switch {
--		case name == sysctlMib[idx].ctlname:
--			return sysctlMib[idx].ctloid, nil
--		case name > sysctlMib[idx].ctlname:
--			left = idx + 1
--		default:
--			right = idx - 1
--		}
--		if left > right {
--			break
--		}
-+	i := sort.Search(len(sysctlMib), func(i int) bool {
-+		return sysctlMib[i].ctlname >= name
-+	})
-+	if i < len(sysctlMib) && sysctlMib[i].ctlname == name {
-+		return sysctlMib[i].ctloid, nil
- 	}
- 	return nil, EINVAL
- }
-@@ -65,21 +55,87 @@ func direntNamlen(buf []byte) (uint64, bool) {
- 	return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
- 
--//sysnb pipe(p *[2]_C_int) (err error)
-+func SysctlUvmexp(name string) (*Uvmexp, error) {
-+	mib, err := sysctlmib(name)
-+	if err != nil {
-+		return nil, err
-+	}
-+
-+	n := uintptr(SizeofUvmexp)
-+	var u Uvmexp
-+	if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {
-+		return nil, err
-+	}
-+	if n != SizeofUvmexp {
-+		return nil, EIO
-+	}
-+	return &u, nil
-+}
-+
- func Pipe(p []int) (err error) {
-+	return Pipe2(p, 0)
-+}
-+
-+//sysnb	pipe2(p *[2]_C_int, flags int) (err error)
-+func Pipe2(p []int, flags int) error {
- 	if len(p) != 2 {
- 		return EINVAL
- 	}
- 	var pp [2]_C_int
--	err = pipe(&pp)
-+	err := pipe2(&pp, flags)
- 	p[0] = int(pp[0])
- 	p[1] = int(pp[1])
--	return
-+	return err
- }
- 
--//sys getdents(fd int, buf []byte) (n int, err error)
-+//sys Getdents(fd int, buf []byte) (n int, err error)
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	return getdents(fd, buf)
-+	n, err = Getdents(fd, buf)
-+	if err != nil || basep == nil {
-+		return
-+	}
-+
-+	var off int64
-+	off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
-+	if err != nil {
-+		*basep = ^uintptr(0)
-+		return
-+	}
-+	*basep = uintptr(off)
-+	if unsafe.Sizeof(*basep) == 8 {
-+		return
-+	}
-+	if off>>32 != 0 {
-+		// We can't stuff the offset back into a uintptr, so any
-+		// future calls would be suspect. Generate an error.
-+		// EIO was allowed by getdirentries.
-+		err = EIO
-+	}
-+	return
-+}
-+
-+const ImplementsGetwd = true
-+
-+//sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+	var buf [PathMax]byte
-+	_, err := Getcwd(buf[0:])
-+	if err != nil {
-+		return "", err
-+	}
-+	n := clen(buf[:])
-+	if n < 1 {
-+		return "", EINVAL
-+	}
-+	return string(buf[:n]), nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
- }
- 
- // TODO
-@@ -102,6 +158,70 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- 	return
- }
- 
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+	// used on Darwin for UtimesNano
-+	return ENOSYS
-+}
-+
-+//sys	ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+//sys	ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
-+
-+func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	if len(fds) == 0 {
-+		return ppoll(nil, 0, timeout, sigmask)
-+	}
-+	return ppoll(&fds[0], len(fds), timeout, sigmask)
-+}
-+
-+func Uname(uname *Utsname) error {
-+	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+	n := unsafe.Sizeof(uname.Sysname)
-+	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+	n = unsafe.Sizeof(uname.Nodename)
-+	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+	n = unsafe.Sizeof(uname.Release)
-+	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	mib = []_C_int{CTL_KERN, KERN_VERSION}
-+	n = unsafe.Sizeof(uname.Version)
-+	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	// The version might have newlines or tabs in it, convert them to
-+	// spaces.
-+	for i, b := range uname.Version {
-+		if b == '\n' || b == '\t' {
-+			if i == len(uname.Version)-1 {
-+				uname.Version[i] = 0
-+			} else {
-+				uname.Version[i] = ' '
-+			}
-+		}
-+	}
-+
-+	mib = []_C_int{CTL_HW, HW_MACHINE}
-+	n = unsafe.Sizeof(uname.Machine)
-+	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+		return err
-+	}
-+
-+	return nil
-+}
-+
- /*
-  * Exposed directly
-  */
-@@ -115,14 +235,19 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys	Close(fd int) (err error)
- //sys	Dup(fd int) (nfd int, err error)
- //sys	Dup2(from int, to int) (err error)
-+//sys	Dup3(from int, to int, flags int) (err error)
- //sys	Exit(code int)
-+//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchdir(fd int) (err error)
- //sys	Fchflags(fd int, flags int) (err error)
- //sys	Fchmod(fd int, mode uint32) (err error)
-+//sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchown(fd int, uid int, gid int) (err error)
-+//sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys	Fstatfs(fd int, stat *Statfs_t) (err error)
- //sys	Fsync(fd int) (err error)
- //sys	Ftruncate(fd int, length int64) (err error)
-@@ -135,6 +260,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sysnb	Getppid() (ppid int)
- //sys	Getpriority(which int, who int) (prio int, err error)
- //sysnb	Getrlimit(which int, lim *Rlimit) (err error)
-+//sysnb	Getrtable() (rtable int, err error)
- //sysnb	Getrusage(who int, rusage *Rusage) (err error)
- //sysnb	Getsid(pid int) (sid int, err error)
- //sysnb	Gettimeofday(tv *Timeval) (err error)
-@@ -144,23 +270,30 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys	Kqueue() (fd int, err error)
- //sys	Lchown(path string, uid int, gid int) (err error)
- //sys	Link(path string, link string) (err error)
-+//sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys	Listen(s int, backlog int) (err error)
- //sys	Lstat(path string, stat *Stat_t) (err error)
- //sys	Mkdir(path string, mode uint32) (err error)
-+//sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys	Mkfifo(path string, mode uint32) (err error)
-+//sys	Mkfifoat(dirfd int, path string, mode uint32) (err error)
- //sys	Mknod(path string, mode uint32, dev int) (err error)
-+//sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys	Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys	Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys	Pathconf(path string, name int) (val int, err error)
- //sys	Pread(fd int, p []byte, offset int64) (n int, err error)
- //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error)
- //sys	read(fd int, p []byte) (n int, err error)
- //sys	Readlink(path string, buf []byte) (n int, err error)
-+//sys	Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
- //sys	Rename(from string, to string) (err error)
-+//sys	Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys	Revoke(path string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -172,16 +305,19 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sysnb	Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb	Setresuid(ruid int, euid int, suid int) (err error)
- //sysnb	Setrlimit(which int, lim *Rlimit) (err error)
-+//sysnb	Setrtable(rtable int) (err error)
- //sysnb	Setsid() (pid int, err error)
- //sysnb	Settimeofday(tp *Timeval) (err error)
- //sysnb	Setuid(uid int) (err error)
- //sys	Stat(path string, stat *Stat_t) (err error)
- //sys	Statfs(path string, stat *Statfs_t) (err error)
- //sys	Symlink(path string, link string) (err error)
-+//sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys	Sync() (err error)
- //sys	Truncate(path string, length int64) (err error)
- //sys	Umask(newmask int) (oldmask int)
- //sys	Unlink(path string) (err error)
-+//sys	Unlinkat(dirfd int, path string, flags int) (err error)
- //sys	Unmount(path string, flags int) (err error)
- //sys	write(fd int, p []byte) (n int, err error)
- //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -204,15 +340,10 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // clock_settime
- // closefrom
- // execve
--// faccessat
--// fchmodat
--// fchownat
--// fcntl
- // fhopen
- // fhstat
- // fhstatfs
- // fork
--// fstatat
- // futimens
- // getfh
- // getgid
-@@ -220,20 +351,14 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // getlogin
- // getresgid
- // getresuid
--// getrtable
- // getthrid
--// ioctl
- // ktrace
- // lfs_bmapv
- // lfs_markv
- // lfs_segclean
- // lfs_segwait
--// linkat
- // mincore
- // minherit
--// mkdirat
--// mkfifoat
--// mknodat
- // mount
- // mquery
- // msgctl
-@@ -242,13 +367,10 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // msgsnd
- // nfssvc
- // nnpfspioctl
--// openat
--// poll
- // preadv
- // profil
- // pwritev
- // quotactl
--// readlinkat
- // readv
- // reboot
- // renameat
-@@ -258,7 +380,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // semop
- // setgroups
- // setitimer
--// setrtable
- // setsockopt
- // shmat
- // shmctl
-@@ -270,13 +391,11 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // sigprocmask
- // sigreturn
- // sigsuspend
--// symlinkat
- // sysarch
- // syscall
- // threxit
- // thrsigdivert
- // thrsleep
- // thrwakeup
--// unlinkat
- // vfork
- // writev
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-index a66ddc59..42b5a0e5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-@@ -6,21 +6,12 @@
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/386 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-index 0776c1fa..6ea4b488 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-@@ -6,21 +6,12 @@
- 
- package unix
- 
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = nsec % 1e9 / 1e3
--	tv.Sec = nsec / 1e9
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-index 14ddaf3f..1c3d26fa 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-@@ -6,23 +6,12 @@
- 
- package unix
- 
--import "syscall"
--
--func Getpagesize() int { return syscall.Getpagesize() }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = int64(nsec / 1e9)
--	ts.Nsec = int32(nsec % 1e9)
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = int32(nsec % 1e9 / 1e3)
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: int32(usec)}
- }
- 
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -39,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- 	msghdr.Controllen = uint32(length)
- }
- 
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- 	cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/arm the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
-new file mode 100644
-index 00000000..a8c458cb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
-@@ -0,0 +1,41 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build arm64,openbsd
-+
-+package unix
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
-+}
-+
-+func SetKevent(k *Kevent_t, fd, mode, flags int) {
-+	k.Ident = uint64(fd)
-+	k.Filter = int16(mode)
-+	k.Flags = uint16(flags)
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+	iov.Len = uint64(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+	msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = uint32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
-+}
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go
-index 0d4e5c4e..0e2a696a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_solaris.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go
-@@ -13,7 +13,6 @@
- package unix
- 
- import (
--	"sync/atomic"
- 	"syscall"
- 	"unsafe"
- )
-@@ -24,6 +23,7 @@ type syscallFunc uintptr
- func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
- func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
- 
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- 	Family uint16
- 	Index  uint16
-@@ -35,15 +35,6 @@ type SockaddrDatalink struct {
- 	raw    RawSockaddrDatalink
- }
- 
--func clen(n []byte) int {
--	for i := 0; i < len(n); i++ {
--		if n[i] == 0 {
--			return i
--		}
--	}
--	return len(n)
--}
--
- func direntIno(buf []byte) (uint64, bool) {
- 	return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
- }
-@@ -137,7 +128,19 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- 	if err = getsockname(fd, &rsa, &len); err != nil {
- 		return
- 	}
--	return anyToSockaddr(&rsa)
-+	return anyToSockaddr(fd, &rsa)
-+}
-+
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+	buf := make([]byte, 256)
-+	vallen := _Socklen(len(buf))
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+	if err != nil {
-+		return "", err
-+	}
-+	return string(buf[:vallen-1]), nil
- }
- 
- const ImplementsGetwd = true
-@@ -167,7 +170,7 @@ func Getwd() (wd string, err error) {
- 
- func Getgroups() (gids []int, err error) {
- 	n, err := getgroups(0, nil)
--	// Check for error and sanity check group count.  Newer versions of
-+	// Check for error and sanity check group count. Newer versions of
- 	// Solaris allow up to 1024 (NGROUPS_MAX).
- 	if n < 0 || n > 1024 {
- 		if err != nil {
-@@ -202,6 +205,7 @@ func Setgroups(gids []int) (err error) {
- 	return setgroups(len(a), &a[0])
- }
- 
-+// ReadDirent reads directory entries from fd and writes them into buf.
- func ReadDirent(fd int, buf []byte) (n int, err error) {
- 	// Final argument is (basep *uintptr) and the syscall doesn't take nil.
- 	// TODO(rsc): Can we use a single global basep for all calls?
-@@ -325,6 +329,16 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
- 
- //sys	fcntl(fd int, cmd int, arg int) (val int, err error)
- 
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+	valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
-+	var err error
-+	if errno != 0 {
-+		err = errno
-+	}
-+	return int(valptr), err
-+}
-+
- // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
- func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)
-@@ -351,7 +365,7 @@ func Futimesat(dirfd int, path string, tv []Timeval) error {
- }
- 
- // Solaris doesn't have an futimes function because it allows NULL to be
--// specified as the path for futimesat.  However, Go doesn't like
-+// specified as the path for futimesat. However, Go doesn't like
- // NULL-style string interfaces, so this simple wrapper is provided.
- func Futimes(fd int, tv []Timeval) error {
- 	if tv == nil {
-@@ -363,7 +377,7 @@ func Futimes(fd int, tv []Timeval) error {
- 	return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
- 
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- 	switch rsa.Addr.Family {
- 	case AF_UNIX:
- 		pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
-@@ -377,7 +391,7 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- 		for n < len(pp.Path) && pp.Path[n] != 0 {
- 			n++
- 		}
--		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+		bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- 		sa.Name = string(bytes)
- 		return sa, nil
- 
-@@ -414,7 +428,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- 	if nfd == -1 {
- 		return
- 	}
--	sa, err = anyToSockaddr(&rsa)
-+	sa, err = anyToSockaddr(fd, &rsa)
- 	if err != nil {
- 		Close(nfd)
- 		nfd = 0
-@@ -451,7 +465,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- 	oobn = int(msg.Accrightslen)
- 	// source address is only specified if the socket is unconnected
- 	if rsa.Addr.Family != AF_UNSPEC {
--		from, err = anyToSockaddr(&rsa)
-+		from, err = anyToSockaddr(fd, &rsa)
- 	}
- 	return
- }
-@@ -515,50 +529,54 @@ func Acct(path string) (err error) {
- 	return acct(pathp)
- }
- 
--/*
-- * Expose the ioctl function
-- */
-+//sys	__makedev(version int, major uint, minor uint) (val uint64)
- 
--//sys	ioctl(fd int, req uint, arg uintptr) (err error)
--
--func IoctlSetInt(fd int, req uint, value int) (err error) {
--	return ioctl(fd, req, uintptr(value))
-+func Mkdev(major, minor uint32) uint64 {
-+	return __makedev(NEWDEV, uint(major), uint(minor))
- }
- 
--func IoctlSetWinsize(fd int, req uint, value *Winsize) (err error) {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+//sys	__major(version int, dev uint64) (val uint)
-+
-+func Major(dev uint64) uint32 {
-+	return uint32(__major(NEWDEV, dev))
- }
- 
--func IoctlSetTermios(fd int, req uint, value *Termios) (err error) {
--	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+//sys	__minor(version int, dev uint64) (val uint)
-+
-+func Minor(dev uint64) uint32 {
-+	return uint32(__minor(NEWDEV, dev))
- }
- 
-+/*
-+ * Expose the ioctl function
-+ */
-+
-+//sys	ioctl(fd int, req uint, arg uintptr) (err error)
-+
- func IoctlSetTermio(fd int, req uint, value *Termio) (err error) {
- 	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
- }
- 
--func IoctlGetInt(fd int, req uint) (int, error) {
--	var value int
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return value, err
--}
--
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
--	var value Winsize
-+func IoctlGetTermio(fd int, req uint) (*Termio, error) {
-+	var value Termio
- 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
- 	return &value, err
- }
- 
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
--	var value Termios
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+//sys   poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+	if len(fds) == 0 {
-+		return poll(nil, 0, timeout)
-+	}
-+	return poll(&fds[0], len(fds), timeout)
- }
- 
--func IoctlGetTermio(fd int, req uint) (*Termio, error) {
--	var value Termio
--	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
--	return &value, err
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	if raceenabled {
-+		raceReleaseMerge(unsafe.Pointer(&ioSync))
-+	}
-+	return sendfile(outfd, infd, offset, count)
- }
- 
- /*
-@@ -575,15 +593,17 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys	Dup(fd int) (nfd int, err error)
- //sys	Dup2(oldfd int, newfd int) (err error)
- //sys	Exit(code int)
-+//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchdir(fd int) (err error)
- //sys	Fchmod(fd int, mode uint32) (err error)
- //sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys	Fchown(fd int, uid int, gid int) (err error)
- //sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys	Fdatasync(fd int) (err error)
--//sys Flock(fd int, how int) (err error)
-+//sys	Flock(fd int, how int) (err error)
- //sys	Fpathconf(fd int, name int) (val int, err error)
- //sys	Fstat(fd int, stat *Stat_t) (err error)
-+//sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys	Fstatvfs(fd int, vfsstat *Statvfs_t) (err error)
- //sys	Getdents(fd int, buf []byte, basep *uintptr) (n int, err error)
- //sysnb	Getgid() (gid int)
-@@ -613,6 +633,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys	Mlock(b []byte) (err error)
- //sys	Mlockall(flags int) (err error)
- //sys	Mprotect(b []byte, prot int) (err error)
-+//sys	Msync(b []byte, flags int) (err error)
- //sys	Munlock(b []byte) (err error)
- //sys	Munlockall() (err error)
- //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
-@@ -628,6 +649,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys	Rmdir(path string) (err error)
- //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek
-+//sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb	Setegid(egid int) (err error)
- //sysnb	Seteuid(euid int) (err error)
- //sysnb	Setgid(gid int) (err error)
-@@ -659,6 +681,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect
- //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
- //sys	munmap(addr uintptr, length uintptr) (err error)
-+//sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile
- //sys	sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto
- //sys	socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket
- //sysnb	socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair
-@@ -699,18 +722,3 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e
- func Munmap(b []byte) (err error) {
- 	return mapper.Munmap(b)
- }
--
--//sys	sysconf(name int) (n int64, err error)
--
--// pageSize caches the value of Getpagesize, since it can't change
--// once the system is booted.
--var pageSize int64 // accessed atomically
--
--func Getpagesize() int {
--	n := atomic.LoadInt64(&pageSize)
--	if n == 0 {
--		n, _ = sysconf(_SC_PAGESIZE)
--		atomic.StoreInt64(&pageSize, n)
--	}
--	return int(n)
--}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-index 5aff62c3..b22a34d7 100644
---- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-@@ -6,30 +6,22 @@
- 
- package unix
- 
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
--	ts.Sec = nsec / 1e9
--	ts.Nsec = nsec % 1e9
--	return
-+func setTimespec(sec, nsec int64) Timespec {
-+	return Timespec{Sec: sec, Nsec: nsec}
- }
- 
--func NsecToTimeval(nsec int64) (tv Timeval) {
--	nsec += 999 // round up to microsecond
--	tv.Usec = nsec % 1e9 / 1e3
--	tv.Sec = int64(nsec / 1e9)
--	return
-+func setTimeval(sec, usec int64) Timeval {
-+	return Timeval{Sec: sec, Usec: usec}
- }
- 
- func (iov *Iovec) SetLen(length int) {
- 	iov.Len = uint64(length)
- }
- 
--func (cmsg *Cmsghdr) SetLen(length int) {
--	cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+	msghdr.Iovlen = int32(length)
- }
- 
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	// TODO(aram): implement this, see issue 5847.
--	panic("unimplemented")
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+	cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go
-index 3ed8a91f..8f710d01 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix.go
-@@ -2,12 +2,13 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
- 
- package unix
- 
- import (
--	"runtime"
-+	"bytes"
-+	"sort"
- 	"sync"
- 	"syscall"
- 	"unsafe"
-@@ -19,13 +20,6 @@ var (
- 	Stderr = 2
- )
- 
--const (
--	darwin64Bit    = runtime.GOOS == "darwin" && sizeofPtr == 8
--	dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8
--	netbsd32Bit    = runtime.GOOS == "netbsd" && sizeofPtr == 4
--	solaris64Bit   = runtime.GOOS == "solaris" && sizeofPtr == 8
--)
--
- // Do the interface allocations only once for common
- // Errno values.
- var (
-@@ -34,6 +28,11 @@ var (
- 	errENOENT error = syscall.ENOENT
- )
- 
-+var (
-+	signalNameMapOnce sync.Once
-+	signalNameMap     map[string]syscall.Signal
-+)
-+
- // errnoErr returns common boxed Errno values, to prevent
- // allocations at runtime.
- func errnoErr(e syscall.Errno) error {
-@@ -50,6 +49,50 @@ func errnoErr(e syscall.Errno) error {
- 	return e
- }
- 
-+// ErrnoName returns the error name for error number e.
-+func ErrnoName(e syscall.Errno) string {
-+	i := sort.Search(len(errorList), func(i int) bool {
-+		return errorList[i].num >= e
-+	})
-+	if i < len(errorList) && errorList[i].num == e {
-+		return errorList[i].name
-+	}
-+	return ""
-+}
-+
-+// SignalName returns the signal name for signal number s.
-+func SignalName(s syscall.Signal) string {
-+	i := sort.Search(len(signalList), func(i int) bool {
-+		return signalList[i].num >= s
-+	})
-+	if i < len(signalList) && signalList[i].num == s {
-+		return signalList[i].name
-+	}
-+	return ""
-+}
-+
-+// SignalNum returns the syscall.Signal for signal named s,
-+// or 0 if a signal with such name is not found.
-+// The signal name should start with "SIG".
-+func SignalNum(s string) syscall.Signal {
-+	signalNameMapOnce.Do(func() {
-+		signalNameMap = make(map[string]syscall.Signal, len(signalList))
-+		for _, signal := range signalList {
-+			signalNameMap[signal.name] = signal.num
-+		}
-+	})
-+	return signalNameMap[s]
-+}
-+
-+// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.
-+func clen(n []byte) int {
-+	i := bytes.IndexByte(n, 0)
-+	if i == -1 {
-+		i = len(n)
-+	}
-+	return i
-+}
-+
- // Mmap manager, for use by operating system-specific implementations.
- 
- type mmapper struct {
-@@ -138,16 +181,19 @@ func Write(fd int, p []byte) (n int, err error) {
- // creation of IPv6 sockets to return EAFNOSUPPORT.
- var SocketDisableIPv6 bool
- 
-+// Sockaddr represents a socket address.
- type Sockaddr interface {
- 	sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs
- }
- 
-+// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.
- type SockaddrInet4 struct {
- 	Port int
- 	Addr [4]byte
- 	raw  RawSockaddrInet4
- }
- 
-+// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.
- type SockaddrInet6 struct {
- 	Port   int
- 	ZoneId uint32
-@@ -155,6 +201,7 @@ type SockaddrInet6 struct {
- 	raw    RawSockaddrInet6
- }
- 
-+// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.
- type SockaddrUnix struct {
- 	Name string
- 	raw  RawSockaddrUnix
-@@ -182,7 +229,14 @@ func Getpeername(fd int) (sa Sockaddr, err error) {
- 	if err = getpeername(fd, &rsa, &len); err != nil {
- 		return
- 	}
--	return anyToSockaddr(&rsa)
-+	return anyToSockaddr(fd, &rsa)
-+}
-+
-+func GetsockoptByte(fd, level, opt int) (value byte, err error) {
-+	var n byte
-+	vallen := _Socklen(1)
-+	err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
-+	return n, err
- }
- 
- func GetsockoptInt(fd, level, opt int) (value int, err error) {
-@@ -192,6 +246,61 @@ func GetsockoptInt(fd, level, opt int) (value int, err error) {
- 	return int(n), err
- }
- 
-+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
-+	vallen := _Socklen(4)
-+	err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
-+	return value, err
-+}
-+
-+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
-+	var value IPMreq
-+	vallen := _Socklen(SizeofIPMreq)
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+	return &value, err
-+}
-+
-+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
-+	var value IPv6Mreq
-+	vallen := _Socklen(SizeofIPv6Mreq)
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+	return &value, err
-+}
-+
-+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
-+	var value IPv6MTUInfo
-+	vallen := _Socklen(SizeofIPv6MTUInfo)
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+	return &value, err
-+}
-+
-+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
-+	var value ICMPv6Filter
-+	vallen := _Socklen(SizeofICMPv6Filter)
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+	return &value, err
-+}
-+
-+func GetsockoptLinger(fd, level, opt int) (*Linger, error) {
-+	var linger Linger
-+	vallen := _Socklen(SizeofLinger)
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)
-+	return &linger, err
-+}
-+
-+func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {
-+	var tv Timeval
-+	vallen := _Socklen(unsafe.Sizeof(tv))
-+	err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)
-+	return &tv, err
-+}
-+
-+func GetsockoptUint64(fd, level, opt int) (value uint64, err error) {
-+	var n uint64
-+	vallen := _Socklen(8)
-+	err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
-+	return n, err
-+}
-+
- func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
- 	var rsa RawSockaddrAny
- 	var len _Socklen = SizeofSockaddrAny
-@@ -199,7 +308,7 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
- 		return
- 	}
- 	if rsa.Addr.Family != AF_UNSPEC {
--		from, err = anyToSockaddr(&rsa)
-+		from, err = anyToSockaddr(fd, &rsa)
- 	}
- 	return
- }
-@@ -242,13 +351,21 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {
- }
- 
- func SetsockoptString(fd, level, opt int, s string) (err error) {
--	return setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))
-+	var p unsafe.Pointer
-+	if len(s) > 0 {
-+		p = unsafe.Pointer(&[]byte(s)[0])
-+	}
-+	return setsockopt(fd, level, opt, p, uintptr(len(s)))
- }
- 
- func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {
- 	return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))
- }
- 
-+func SetsockoptUint64(fd, level, opt int, value uint64) (err error) {
-+	return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)
-+}
-+
- func Socket(domain, typ, proto int) (fd int, err error) {
- 	if domain == AF_INET6 && SocketDisableIPv6 {
- 		return -1, EAFNOSUPPORT
-@@ -267,13 +384,6 @@ func Socketpair(domain, typ, proto int) (fd [2]int, err error) {
- 	return
- }
- 
--func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	if raceenabled {
--		raceReleaseMerge(unsafe.Pointer(&ioSync))
--	}
--	return sendfile(outfd, infd, offset, count)
--}
--
- var ioSync int64
- 
- func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }
-@@ -291,3 +401,31 @@ func SetNonblock(fd int, nonblocking bool) (err error) {
- 	_, err = fcntl(fd, F_SETFL, flag)
- 	return err
- }
-+
-+// Exec calls execve(2), which replaces the calling executable in the process
-+// tree. argv0 should be the full path to an executable ("/bin/ls") and the
-+// executable name should also be the first argument in argv (["ls", "-l"]).
-+// envv are the environment variables that should be passed to the new
-+// process (["USER=go", "PWD=/tmp"]).
-+func Exec(argv0 string, argv []string, envv []string) error {
-+	return syscall.Exec(argv0, argv, envv)
-+}
-+
-+// Lutimes sets the access and modification times tv on path. If path refers to
-+// a symlink, it is not dereferenced and the timestamps are set on the symlink.
-+// If tv is nil, the access and modification times are set to the current time.
-+// Otherwise tv must contain exactly 2 elements, with access time as the first
-+// element and modification time as the second element.
-+func Lutimes(path string, tv []Timeval) error {
-+	if tv == nil {
-+		return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)
-+	}
-+	if len(tv) != 2 {
-+		return EINVAL
-+	}
-+	ts := []Timespec{
-+		NsecToTimespec(TimevalToNsec(tv[0])),
-+		NsecToTimespec(TimevalToNsec(tv[1])),
-+	}
-+	return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-index 4cb8e8ed..1c70d1b6 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-@@ -3,7 +3,7 @@
- // license that can be found in the LICENSE file.
- 
- // +build darwin dragonfly freebsd linux netbsd openbsd solaris
--// +build !gccgo
-+// +build !gccgo,!ppc64le,!ppc64
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-similarity index 51%
-copy from vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-copy to vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-index 4cb8e8ed..86dc765a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-@@ -1,15 +1,24 @@
--// Copyright 2016 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build linux
-+// +build ppc64le ppc64
- // +build !gccgo
- 
- package unix
- 
- import "syscall"
- 
--func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+	return syscall.Syscall(trap, a1, a2, a3)
-+}
-+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+	return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)
-+}
-+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+	return syscall.RawSyscall(trap, a1, a2, a3)
-+}
-+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+	return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go
-new file mode 100644
-index 00000000..4a672f56
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/timestruct.go
-@@ -0,0 +1,82 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import "time"
-+
-+// TimespecToNsec converts a Timespec value into a number of
-+// nanoseconds since the Unix epoch.
-+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+
-+// NsecToTimespec takes a number of nanoseconds since the Unix epoch
-+// and returns the corresponding Timespec value.
-+func NsecToTimespec(nsec int64) Timespec {
-+	sec := nsec / 1e9
-+	nsec = nsec % 1e9
-+	if nsec < 0 {
-+		nsec += 1e9
-+		sec--
-+	}
-+	return setTimespec(sec, nsec)
-+}
-+
-+// TimeToTimespec converts t into a Timespec.
-+// On some 32-bit systems the range of valid Timespec values are smaller
-+// than that of time.Time values.  So if t is out of the valid range of
-+// Timespec, it returns a zero Timespec and ERANGE.
-+func TimeToTimespec(t time.Time) (Timespec, error) {
-+	sec := t.Unix()
-+	nsec := int64(t.Nanosecond())
-+	ts := setTimespec(sec, nsec)
-+
-+	// Currently all targets have either int32 or int64 for Timespec.Sec.
-+	// If there were a new target with floating point type for it, we have
-+	// to consider the rounding error.
-+	if int64(ts.Sec) != sec {
-+		return Timespec{}, ERANGE
-+	}
-+	return ts, nil
-+}
-+
-+// TimevalToNsec converts a Timeval value into a number of nanoseconds
-+// since the Unix epoch.
-+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-+
-+// NsecToTimeval takes a number of nanoseconds since the Unix epoch
-+// and returns the corresponding Timeval value.
-+func NsecToTimeval(nsec int64) Timeval {
-+	nsec += 999 // round up to microsecond
-+	usec := nsec % 1e9 / 1e3
-+	sec := nsec / 1e9
-+	if usec < 0 {
-+		usec += 1e6
-+		sec--
-+	}
-+	return setTimeval(sec, usec)
-+}
-+
-+// Unix returns ts as the number of seconds and nanoseconds elapsed since the
-+// Unix epoch.
-+func (ts *Timespec) Unix() (sec int64, nsec int64) {
-+	return int64(ts.Sec), int64(ts.Nsec)
-+}
-+
-+// Unix returns tv as the number of seconds and nanoseconds elapsed since the
-+// Unix epoch.
-+func (tv *Timeval) Unix() (sec int64, nsec int64) {
-+	return int64(tv.Sec), int64(tv.Usec) * 1000
-+}
-+
-+// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.
-+func (ts *Timespec) Nano() int64 {
-+	return int64(ts.Sec)*1e9 + int64(ts.Nsec)
-+}
-+
-+// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.
-+func (tv *Timeval) Nano() int64 {
-+	return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
-+}
-diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_aix.go
-similarity index 53%
-copy from vendor/golang.org/x/sys/unix/types_netbsd.go
-copy to vendor/golang.org/x/sys/unix/types_aix.go
-index cb95c80a..40d2beed 100644
---- a/vendor/golang.org/x/sys/unix/types_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_aix.go
-@@ -1,11 +1,12 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
- // +build ignore
-+// +build aix
- 
- /*
--Input to cgo -godefs.  See README.md
-+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
- */
- 
- // +godefs map struct_in_addr [4]byte /* in_addr */
-@@ -14,44 +15,37 @@ Input to cgo -godefs.  See README.md
- package unix
- 
- /*
--#define KERNEL
--#include <dirent.h>
--#include <fcntl.h>
--#include <signal.h>
--#include <termios.h>
--#include <stdio.h>
--#include <unistd.h>
--#include <sys/param.h>
- #include <sys/types.h>
--#include <sys/event.h>
--#include <sys/mman.h>
--#include <sys/mount.h>
--#include <sys/ptrace.h>
--#include <sys/resource.h>
--#include <sys/select.h>
--#include <sys/signal.h>
--#include <sys/socket.h>
--#include <sys/stat.h>
--#include <sys/sysctl.h>
- #include <sys/time.h>
--#include <sys/uio.h>
-+#include <sys/limits.h>
- #include <sys/un.h>
--#include <sys/wait.h>
--#include <net/bpf.h>
-+#include <utime.h>
-+#include <sys/utsname.h>
-+#include <sys/poll.h>
-+#include <sys/resource.h>
-+#include <sys/stat.h>
-+#include <sys/statfs.h>
-+#include <sys/termio.h>
-+#include <sys/ioctl.h>
-+
-+#include <termios.h>
-+
- #include <net/if.h>
- #include <net/if_dl.h>
--#include <net/route.h>
- #include <netinet/in.h>
- #include <netinet/icmp6.h>
--#include <netinet/tcp.h>
-+
-+
-+#include <dirent.h>
-+#include <fcntl.h>
- 
- enum {
- 	sizeofPtr = sizeof(void*),
- };
- 
- union sockaddr_all {
--	struct sockaddr s1;	// this one gets used for fields
--	struct sockaddr_in s2;	// these pad it out
-+	struct sockaddr s1;     // this one gets used for fields
-+	struct sockaddr_in s2;  // these pad it out
- 	struct sockaddr_in6 s3;
- 	struct sockaddr_un s4;
- 	struct sockaddr_dl s5;
-@@ -65,14 +59,15 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
-+	PathMax        = C.PATH_MAX
- )
- 
- // Basic types
-@@ -84,32 +79,50 @@ type (
- 	_C_long_long C.longlong
- )
- 
-+type off64 C.off64_t
-+type off C.off_t
-+type Mode_t C.mode_t
-+
- // Time
- 
- type Timespec C.struct_timespec
- 
- type Timeval C.struct_timeval
- 
-+type Timeval32 C.struct_timeval32
-+
-+type Timex C.struct_timex
-+
-+type Time_t C.time_t
-+
-+type Tms C.struct_tms
-+
-+type Utimbuf C.struct_utimbuf
-+
-+type Timezone C.struct_timezone
-+
- // Processes
- 
- type Rusage C.struct_rusage
- 
--type Rlimit C.struct_rlimit
-+type Rlimit C.struct_rlimit64
-+
-+type Pid_t C.pid_t
- 
- type _Gid_t C.gid_t
- 
-+type dev_t C.dev_t
-+
- // Files
- 
- type Stat_t C.struct_stat
- 
--type Statfs_t C.struct_statfs
-+type StatxTimestamp C.struct_statx_timestamp
- 
--type Flock_t C.struct_flock
-+type Statx_t C.struct_statx
- 
- type Dirent C.struct_dirent
- 
--type Fsid C.fsid_t
--
- // Sockets
- 
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -126,7 +139,9 @@ type RawSockaddrAny C.struct_sockaddr_any
- 
- type _Socklen C.socklen_t
- 
--type Linger C.struct_linger
-+type Cmsghdr C.struct_cmsghdr
-+
-+type ICMPv6Filter C.struct_icmp6_filter
- 
- type Iovec C.struct_iovec
- 
-@@ -134,15 +149,11 @@ type IPMreq C.struct_ip_mreq
- 
- type IPv6Mreq C.struct_ipv6_mreq
- 
--type Msghdr C.struct_msghdr
--
--type Cmsghdr C.struct_cmsghdr
--
--type Inet6Pktinfo C.struct_in6_pktinfo
--
- type IPv6MTUInfo C.struct_ip6_mtuinfo
- 
--type ICMPv6Filter C.struct_icmp6_filter
-+type Linger C.struct_linger
-+
-+type Msghdr C.struct_msghdr
- 
- const (
- 	SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
-@@ -153,87 +164,74 @@ const (
- 	SizeofLinger           = C.sizeof_struct_linger
- 	SizeofIPMreq           = C.sizeof_struct_ip_mreq
- 	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
-+	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
- 	SizeofMsghdr           = C.sizeof_struct_msghdr
- 	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
--	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
--	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
- 	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
- )
- 
--// Ptrace requests
-+// Routing and interface messages
- 
- const (
--	PTRACE_TRACEME = C.PT_TRACE_ME
--	PTRACE_CONT    = C.PT_CONTINUE
--	PTRACE_KILL    = C.PT_KILL
-+	SizeofIfMsghdr = C.sizeof_struct_if_msghdr
- )
- 
--// Events (kqueue, kevent)
--
--type Kevent_t C.struct_kevent
-+type IfMsgHdr C.struct_if_msghdr
- 
--// Select
-+// Misc
- 
- type FdSet C.fd_set
- 
--// Routing and interface messages
-+type Utsname C.struct_utsname
- 
--const (
--	SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
--	SizeofIfData           = C.sizeof_struct_if_data
--	SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
--	SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
--	SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
--	SizeofRtMetrics        = C.sizeof_struct_rt_metrics
--)
-+type Ustat_t C.struct_ustat
- 
--type IfMsghdr C.struct_if_msghdr
-+type Sigset_t C.sigset_t
- 
--type IfData C.struct_if_data
-+const (
-+	AT_FDCWD            = C.AT_FDCWD
-+	AT_REMOVEDIR        = C.AT_REMOVEDIR
-+	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-+)
- 
--type IfaMsghdr C.struct_ifa_msghdr
-+// Terminal handling
- 
--type IfAnnounceMsghdr C.struct_if_announcemsghdr
-+type Termios C.struct_termios
- 
--type RtMsghdr C.struct_rt_msghdr
-+type Termio C.struct_termio
- 
--type RtMetrics C.struct_rt_metrics
-+type Winsize C.struct_winsize
- 
--type Mclpool C.struct_mclpool
-+//poll
- 
--// Berkeley packet filter
-+type PollFd struct {
-+	Fd      int32
-+	Events  uint16
-+	Revents uint16
-+}
- 
- const (
--	SizeofBpfVersion = C.sizeof_struct_bpf_version
--	SizeofBpfStat    = C.sizeof_struct_bpf_stat
--	SizeofBpfProgram = C.sizeof_struct_bpf_program
--	SizeofBpfInsn    = C.sizeof_struct_bpf_insn
--	SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
- )
- 
--type BpfVersion C.struct_bpf_version
--
--type BpfStat C.struct_bpf_stat
--
--type BpfProgram C.struct_bpf_program
--
--type BpfInsn C.struct_bpf_insn
--
--type BpfHdr C.struct_bpf_hdr
--
--type BpfTimeval C.struct_bpf_timeval
-+//flock_t
- 
--// Terminal handling
--
--type Termios C.struct_termios
-+type Flock_t C.struct_flock64
- 
--// fchmodat-like syscalls.
-+// Statfs
- 
--const (
--	AT_FDCWD            = C.AT_FDCWD
--	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
--)
-+type Fsid_t C.struct_fsid_t
-+type Fsid64_t C.struct_fsid64_t
- 
--// Sysctl
-+type Statfs_t C.struct_statfs
- 
--type Sysctlnode C.struct_sysctlnode
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go
-index 415124d4..155c2e69 100644
---- a/vendor/golang.org/x/sys/unix/types_darwin.go
-+++ b/vendor/golang.org/x/sys/unix/types_darwin.go
-@@ -19,6 +19,7 @@ package unix
- #define _DARWIN_USE_64_BIT_INODE
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <unistd.h>
-@@ -38,6 +39,7 @@ package unix
- #include <sys/types.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -68,14 +70,14 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- )
- 
- // Basic types
-@@ -252,3 +254,30 @@ const (
- 	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
- 	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go
-index 80b27781..6574f6b6 100644
---- a/vendor/golang.org/x/sys/unix/types_dragonfly.go
-+++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -34,6 +35,7 @@ package unix
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -63,14 +65,14 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- )
- 
- // Basic types
-@@ -98,23 +100,6 @@ type _Gid_t C.gid_t
- 
- // Files
- 
--const ( // Directory mode bits
--	S_IFMT   = C.S_IFMT
--	S_IFIFO  = C.S_IFIFO
--	S_IFCHR  = C.S_IFCHR
--	S_IFDIR  = C.S_IFDIR
--	S_IFBLK  = C.S_IFBLK
--	S_IFREG  = C.S_IFREG
--	S_IFLNK  = C.S_IFLNK
--	S_IFSOCK = C.S_IFSOCK
--	S_ISUID  = C.S_ISUID
--	S_ISGID  = C.S_ISGID
--	S_ISVTX  = C.S_ISVTX
--	S_IRUSR  = C.S_IRUSR
--	S_IWUSR  = C.S_IWUSR
--	S_IXUSR  = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
- 
- type Statfs_t C.struct_statfs
-@@ -125,6 +110,12 @@ type Dirent C.struct_dirent
- 
- type Fsid C.struct_fsid
- 
-+// File system limits
-+
-+const (
-+	PathMax = C.PATH_MAX
-+)
-+
- // Sockets
- 
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -241,9 +232,38 @@ type BpfHdr C.struct_bpf_hdr
- 
- type Termios C.struct_termios
- 
-+type Winsize C.struct_winsize
-+
- // fchmodat-like syscalls.
- 
- const (
- 	AT_FDCWD            = C.AT_FDCWD
- 	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go
-index 934fd7ac..c6fde424 100644
---- a/vendor/golang.org/x/sys/unix/types_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_freebsd.go
-@@ -14,14 +14,19 @@ Input to cgo -godefs.  See README.md
- package unix
- 
- /*
--#define KERNEL
-+#define	_WANT_FREEBSD11_STAT	1
-+#define	_WANT_FREEBSD11_STATFS	1
-+#define	_WANT_FREEBSD11_DIRENT	1
-+#define	_WANT_FREEBSD11_KEVENT  1
-+
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
- #include <unistd.h>
--#include <sys/capability.h>
-+#include <sys/capsicum.h>
- #include <sys/event.h>
- #include <sys/mman.h>
- #include <sys/mount.h>
-@@ -35,6 +40,7 @@ package unix
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -61,50 +67,6 @@ struct sockaddr_any {
- 	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
- };
- 
--// This structure is a duplicate of stat on FreeBSD 8-STABLE.
--// See /usr/include/sys/stat.h.
--struct stat8 {
--#undef st_atimespec	st_atim
--#undef st_mtimespec	st_mtim
--#undef st_ctimespec	st_ctim
--#undef st_birthtimespec	st_birthtim
--	__dev_t   st_dev;
--	ino_t     st_ino;
--	mode_t    st_mode;
--	nlink_t   st_nlink;
--	uid_t     st_uid;
--	gid_t     st_gid;
--	__dev_t   st_rdev;
--#if __BSD_VISIBLE
--	struct  timespec st_atimespec;
--	struct  timespec st_mtimespec;
--	struct  timespec st_ctimespec;
--#else
--	time_t    st_atime;
--	long      __st_atimensec;
--	time_t    st_mtime;
--	long      __st_mtimensec;
--	time_t    st_ctime;
--	long      __st_ctimensec;
--#endif
--	off_t     st_size;
--	blkcnt_t st_blocks;
--	blksize_t st_blksize;
--	fflags_t  st_flags;
--	__uint32_t st_gen;
--	__int32_t st_lspare;
--#if __BSD_VISIBLE
--	struct timespec st_birthtimespec;
--	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
--	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
--#else
--	time_t    st_birthtime;
--	long      st_birthtimensec;
--	unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
--	unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
--#endif
--};
--
- // This structure is a duplicate of if_data on FreeBSD 8-STABLE.
- // See /usr/include/net/if.h.
- struct if_data8 {
-@@ -152,14 +114,14 @@ struct if_msghdr8 {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- )
- 
- // Basic types
-@@ -187,33 +149,33 @@ type _Gid_t C.gid_t
- 
- // Files
- 
--const ( // Directory mode bits
--	S_IFMT   = C.S_IFMT
--	S_IFIFO  = C.S_IFIFO
--	S_IFCHR  = C.S_IFCHR
--	S_IFDIR  = C.S_IFDIR
--	S_IFBLK  = C.S_IFBLK
--	S_IFREG  = C.S_IFREG
--	S_IFLNK  = C.S_IFLNK
--	S_IFSOCK = C.S_IFSOCK
--	S_ISUID  = C.S_ISUID
--	S_ISGID  = C.S_ISGID
--	S_ISVTX  = C.S_ISVTX
--	S_IRUSR  = C.S_IRUSR
--	S_IWUSR  = C.S_IWUSR
--	S_IXUSR  = C.S_IXUSR
-+const (
-+	_statfsVersion = C.STATFS_VERSION
-+	_dirblksiz     = C.DIRBLKSIZ
- )
- 
--type Stat_t C.struct_stat8
-+type Stat_t C.struct_stat
-+
-+type stat_freebsd11_t C.struct_freebsd11_stat
- 
- type Statfs_t C.struct_statfs
- 
-+type statfs_freebsd11_t C.struct_freebsd11_statfs
-+
- type Flock_t C.struct_flock
- 
- type Dirent C.struct_dirent
- 
-+type dirent_freebsd11 C.struct_freebsd11_dirent
-+
- type Fsid C.struct_fsid
- 
-+// File system limits
-+
-+const (
-+	PathMax = C.PATH_MAX
-+)
-+
- // Advice to Fadvise
- 
- const (
-@@ -281,14 +243,58 @@ const (
- // Ptrace requests
- 
- const (
--	PTRACE_TRACEME = C.PT_TRACE_ME
--	PTRACE_CONT    = C.PT_CONTINUE
--	PTRACE_KILL    = C.PT_KILL
-+	PTRACE_ATTACH     = C.PT_ATTACH
-+	PTRACE_CONT       = C.PT_CONTINUE
-+	PTRACE_DETACH     = C.PT_DETACH
-+	PTRACE_GETFPREGS  = C.PT_GETFPREGS
-+	PTRACE_GETFSBASE  = C.PT_GETFSBASE
-+	PTRACE_GETLWPLIST = C.PT_GETLWPLIST
-+	PTRACE_GETNUMLWPS = C.PT_GETNUMLWPS
-+	PTRACE_GETREGS    = C.PT_GETREGS
-+	PTRACE_GETXSTATE  = C.PT_GETXSTATE
-+	PTRACE_IO         = C.PT_IO
-+	PTRACE_KILL       = C.PT_KILL
-+	PTRACE_LWPEVENTS  = C.PT_LWP_EVENTS
-+	PTRACE_LWPINFO    = C.PT_LWPINFO
-+	PTRACE_SETFPREGS  = C.PT_SETFPREGS
-+	PTRACE_SETREGS    = C.PT_SETREGS
-+	PTRACE_SINGLESTEP = C.PT_STEP
-+	PTRACE_TRACEME    = C.PT_TRACE_ME
-+)
-+
-+const (
-+	PIOD_READ_D  = C.PIOD_READ_D
-+	PIOD_WRITE_D = C.PIOD_WRITE_D
-+	PIOD_READ_I  = C.PIOD_READ_I
-+	PIOD_WRITE_I = C.PIOD_WRITE_I
-+)
-+
-+const (
-+	PL_FLAG_BORN   = C.PL_FLAG_BORN
-+	PL_FLAG_EXITED = C.PL_FLAG_EXITED
-+	PL_FLAG_SI     = C.PL_FLAG_SI
-+)
-+
-+const (
-+	TRAP_BRKPT = C.TRAP_BRKPT
-+	TRAP_TRACE = C.TRAP_TRACE
- )
- 
-+type PtraceLwpInfoStruct C.struct_ptrace_lwpinfo
-+
-+type __Siginfo C.struct___siginfo
-+
-+type Sigset_t C.sigset_t
-+
-+type Reg C.struct_reg
-+
-+type FpReg C.struct_fpreg
-+
-+type PtraceIoDesc C.struct_ptrace_io_desc
-+
- // Events (kqueue, kevent)
- 
--type Kevent_t C.struct_kevent
-+type Kevent_t C.struct_kevent_freebsd11
- 
- // Select
- 
-@@ -367,6 +373,34 @@ const (
- 	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
- 
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR      = C.POLLERR
-+	POLLHUP      = C.POLLHUP
-+	POLLIN       = C.POLLIN
-+	POLLINIGNEOF = C.POLLINIGNEOF
-+	POLLNVAL     = C.POLLNVAL
-+	POLLOUT      = C.POLLOUT
-+	POLLPRI      = C.POLLPRI
-+	POLLRDBAND   = C.POLLRDBAND
-+	POLLRDNORM   = C.POLLRDNORM
-+	POLLWRBAND   = C.POLLWRBAND
-+	POLLWRNORM   = C.POLLWRNORM
-+)
-+
- // Capabilities
- 
- type CapRights C.struct_cap_rights
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go
-index cb95c80a..0a81aadb 100644
---- a/vendor/golang.org/x/sys/unix/types_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_netbsd.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -32,10 +33,12 @@ package unix
- #include <sys/signal.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
-+#include <sys/statvfs.h>
- #include <sys/sysctl.h>
- #include <sys/time.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -65,14 +68,14 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- )
- 
- // Basic types
-@@ -104,12 +107,38 @@ type Stat_t C.struct_stat
- 
- type Statfs_t C.struct_statfs
- 
-+type Statvfs_t C.struct_statvfs
-+
- type Flock_t C.struct_flock
- 
- type Dirent C.struct_dirent
- 
- type Fsid C.fsid_t
- 
-+// File system limits
-+
-+const (
-+	PathMax = C.PATH_MAX
-+)
-+
-+// Fstatvfs/Statvfs flags
-+
-+const (
-+	ST_WAIT   = C.ST_WAIT
-+	ST_NOWAIT = C.ST_NOWAIT
-+)
-+
-+// Advice to Fadvise
-+
-+const (
-+	FADV_NORMAL     = C.POSIX_FADV_NORMAL
-+	FADV_RANDOM     = C.POSIX_FADV_RANDOM
-+	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
-+	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
-+	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
-+	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
-+)
-+
- // Sockets
- 
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -227,13 +256,45 @@ type BpfTimeval C.struct_bpf_timeval
- 
- type Termios C.struct_termios
- 
-+type Winsize C.struct_winsize
-+
-+type Ptmget C.struct_ptmget
-+
- // fchmodat-like syscalls.
- 
- const (
- 	AT_FDCWD            = C.AT_FDCWD
-+	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
- 	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
- 
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
-+)
-+
- // Sysctl
- 
- type Sysctlnode C.struct_sysctlnode
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go
-index 392da69b..775cb57d 100644
---- a/vendor/golang.org/x/sys/unix/types_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_openbsd.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -35,7 +36,9 @@ package unix
- #include <sys/time.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
-+#include <uvm/uvmexp.h>
- #include <net/bpf.h>
- #include <net/if.h>
- #include <net/if_dl.h>
-@@ -64,14 +67,14 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- )
- 
- // Basic types
-@@ -99,23 +102,6 @@ type _Gid_t C.gid_t
- 
- // Files
- 
--const ( // Directory mode bits
--	S_IFMT   = C.S_IFMT
--	S_IFIFO  = C.S_IFIFO
--	S_IFCHR  = C.S_IFCHR
--	S_IFDIR  = C.S_IFDIR
--	S_IFBLK  = C.S_IFBLK
--	S_IFREG  = C.S_IFREG
--	S_IFLNK  = C.S_IFLNK
--	S_IFSOCK = C.S_IFSOCK
--	S_ISUID  = C.S_ISUID
--	S_ISGID  = C.S_ISGID
--	S_ISVTX  = C.S_ISVTX
--	S_IRUSR  = C.S_IRUSR
--	S_IWUSR  = C.S_IWUSR
--	S_IXUSR  = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
- 
- type Statfs_t C.struct_statfs
-@@ -126,6 +112,12 @@ type Dirent C.struct_dirent
- 
- type Fsid C.fsid_t
- 
-+// File system limits
-+
-+const (
-+	PathMax = C.PATH_MAX
-+)
-+
- // Sockets
- 
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -243,9 +235,49 @@ type BpfTimeval C.struct_bpf_timeval
- 
- type Termios C.struct_termios
- 
-+type Winsize C.struct_winsize
-+
- // fchmodat-like syscalls.
- 
- const (
- 	AT_FDCWD            = C.AT_FDCWD
-+	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
- 	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// Signal Sets
-+
-+type Sigset_t C.sigset_t
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Uvmexp
-+
-+const SizeofUvmexp = C.sizeof_struct_uvmexp
-+
-+type Uvmexp C.struct_uvmexp
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go
-index 393c7f04..d713f09e 100644
---- a/vendor/golang.org/x/sys/unix/types_solaris.go
-+++ b/vendor/golang.org/x/sys/unix/types_solaris.go
-@@ -24,6 +24,7 @@ package unix
- #include <fcntl.h>
- #include <netdb.h>
- #include <limits.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <termio.h>
-@@ -74,14 +75,14 @@ struct sockaddr_any {
- */
- import "C"
- 
--// Machine characteristics; for internal use.
-+// Machine characteristics
- 
- const (
--	sizeofPtr      = C.sizeofPtr
--	sizeofShort    = C.sizeof_short
--	sizeofInt      = C.sizeof_int
--	sizeofLong     = C.sizeof_long
--	sizeofLongLong = C.sizeof_longlong
-+	SizeofPtr      = C.sizeofPtr
-+	SizeofShort    = C.sizeof_short
-+	SizeofInt      = C.sizeof_int
-+	SizeofLong     = C.sizeof_long
-+	SizeofLongLong = C.sizeof_longlong
- 	PathMax        = C.PATH_MAX
- 	MaxHostNameLen = C.MAXHOSTNAMELEN
- )
-@@ -117,23 +118,6 @@ type _Gid_t C.gid_t
- 
- // Files
- 
--const ( // Directory mode bits
--	S_IFMT   = C.S_IFMT
--	S_IFIFO  = C.S_IFIFO
--	S_IFCHR  = C.S_IFCHR
--	S_IFDIR  = C.S_IFDIR
--	S_IFBLK  = C.S_IFBLK
--	S_IFREG  = C.S_IFREG
--	S_IFLNK  = C.S_IFLNK
--	S_IFSOCK = C.S_IFSOCK
--	S_ISUID  = C.S_ISUID
--	S_ISGID  = C.S_ISGID
--	S_ISVTX  = C.S_ISVTX
--	S_IRUSR  = C.S_IRUSR
--	S_IWUSR  = C.S_IWUSR
--	S_IXUSR  = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
- 
- type Flock_t C.struct_flock
-@@ -174,6 +158,8 @@ type Msghdr C.struct_msghdr
- 
- type Cmsghdr C.struct_cmsghdr
- 
-+type Inet4Pktinfo C.struct_in_pktinfo
-+
- type Inet6Pktinfo C.struct_in6_pktinfo
- 
- type IPv6MTUInfo C.struct_ip6_mtuinfo
-@@ -191,6 +177,7 @@ const (
- 	SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
- 	SizeofMsghdr           = C.sizeof_struct_msghdr
- 	SizeofCmsghdr          = C.sizeof_struct_cmsghdr
-+	SizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo
- 	SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
- 	SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
- 	SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
-@@ -256,10 +243,6 @@ type BpfTimeval C.struct_bpf_timeval
- 
- type BpfHdr C.struct_bpf_hdr
- 
--// sysconf information
--
--const _SC_PAGESIZE = C._SC_PAGESIZE
--
- // Terminal handling
- 
- type Termios C.struct_termios
-@@ -267,3 +250,20 @@ type Termios C.struct_termios
- type Termio C.struct_termio
- 
- type Winsize C.struct_winsize
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+	POLLERR    = C.POLLERR
-+	POLLHUP    = C.POLLHUP
-+	POLLIN     = C.POLLIN
-+	POLLNVAL   = C.POLLNVAL
-+	POLLOUT    = C.POLLOUT
-+	POLLPRI    = C.POLLPRI
-+	POLLRDBAND = C.POLLRDBAND
-+	POLLRDNORM = C.POLLRDNORM
-+	POLLWRBAND = C.POLLWRBAND
-+	POLLWRNORM = C.POLLWRNORM
-+)
-diff --git a/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go
-new file mode 100644
-index 00000000..168d5ae7
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go
-@@ -0,0 +1,42 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+// Unveil implements the unveil syscall.
-+// For more information see unveil(2).
-+// Note that the special case of blocking further
-+// unveil calls is handled by UnveilBlock.
-+func Unveil(path string, flags string) error {
-+	pathPtr, err := syscall.BytePtrFromString(path)
-+	if err != nil {
-+		return err
-+	}
-+	flagsPtr, err := syscall.BytePtrFromString(flags)
-+	if err != nil {
-+		return err
-+	}
-+	_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
-+	if e != 0 {
-+		return e
-+	}
-+	return nil
-+}
-+
-+// UnveilBlock blocks future unveil calls.
-+// For more information see unveil(2).
-+func UnveilBlock() error {
-+	// Both pointers must be nil.
-+	var pathUnsafe, flagsUnsafe unsafe.Pointer
-+	_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
-+	if e != 0 {
-+		return e
-+	}
-+	return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go
-new file mode 100644
-index 00000000..30c1d71f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go
-@@ -0,0 +1,240 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build freebsd netbsd
-+
-+package unix
-+
-+import (
-+	"strings"
-+	"unsafe"
-+)
-+
-+// Derive extattr namespace and attribute name
-+
-+func xattrnamespace(fullattr string) (ns int, attr string, err error) {
-+	s := strings.IndexByte(fullattr, '.')
-+	if s == -1 {
-+		return -1, "", ENOATTR
-+	}
-+
-+	namespace := fullattr[0:s]
-+	attr = fullattr[s+1:]
-+
-+	switch namespace {
-+	case "user":
-+		return EXTATTR_NAMESPACE_USER, attr, nil
-+	case "system":
-+		return EXTATTR_NAMESPACE_SYSTEM, attr, nil
-+	default:
-+		return -1, "", ENOATTR
-+	}
-+}
-+
-+func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
-+	if len(dest) > idx {
-+		return unsafe.Pointer(&dest[idx])
-+	} else {
-+		return unsafe.Pointer(_zero)
-+	}
-+}
-+
-+// FreeBSD and NetBSD implement their own syscalls to handle extended attributes
-+
-+func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsize := len(dest)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return -1, err
-+	}
-+
-+	return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
-+}
-+
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsize := len(dest)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return -1, err
-+	}
-+
-+	return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
-+}
-+
-+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsize := len(dest)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return -1, err
-+	}
-+
-+	return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
-+}
-+
-+// flags are unused on FreeBSD
-+
-+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
-+	var d unsafe.Pointer
-+	if len(data) > 0 {
-+		d = unsafe.Pointer(&data[0])
-+	}
-+	datasiz := len(data)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
-+	return
-+}
-+
-+func Setxattr(file string, attr string, data []byte, flags int) (err error) {
-+	var d unsafe.Pointer
-+	if len(data) > 0 {
-+		d = unsafe.Pointer(&data[0])
-+	}
-+	datasiz := len(data)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
-+	return
-+}
-+
-+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
-+	var d unsafe.Pointer
-+	if len(data) > 0 {
-+		d = unsafe.Pointer(&data[0])
-+	}
-+	datasiz := len(data)
-+
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
-+	return
-+}
-+
-+func Removexattr(file string, attr string) (err error) {
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	err = ExtattrDeleteFile(file, nsid, a)
-+	return
-+}
-+
-+func Fremovexattr(fd int, attr string) (err error) {
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	err = ExtattrDeleteFd(fd, nsid, a)
-+	return
-+}
-+
-+func Lremovexattr(link string, attr string) (err error) {
-+	nsid, a, err := xattrnamespace(attr)
-+	if err != nil {
-+		return
-+	}
-+
-+	err = ExtattrDeleteLink(link, nsid, a)
-+	return
-+}
-+
-+func Listxattr(file string, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsiz := len(dest)
-+
-+	// FreeBSD won't allow you to list xattrs from multiple namespaces
-+	s := 0
-+	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+		stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
-+
-+		/* Errors accessing system attrs are ignored so that
-+		 * we can implement the Linux-like behavior of omitting errors that
-+		 * we don't have read permissions on
-+		 *
-+		 * Linux will still error if we ask for user attributes on a file that
-+		 * we don't have read permissions on, so don't ignore those errors
-+		 */
-+		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+			continue
-+		} else if e != nil {
-+			return s, e
-+		}
-+
-+		s += stmp
-+		destsiz -= s
-+		if destsiz < 0 {
-+			destsiz = 0
-+		}
-+		d = initxattrdest(dest, s)
-+	}
-+
-+	return s, nil
-+}
-+
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsiz := len(dest)
-+
-+	s := 0
-+	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+		stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
-+		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+			continue
-+		} else if e != nil {
-+			return s, e
-+		}
-+
-+		s += stmp
-+		destsiz -= s
-+		if destsiz < 0 {
-+			destsiz = 0
-+		}
-+		d = initxattrdest(dest, s)
-+	}
-+
-+	return s, nil
-+}
-+
-+func Llistxattr(link string, dest []byte) (sz int, err error) {
-+	d := initxattrdest(dest, 0)
-+	destsiz := len(dest)
-+
-+	s := 0
-+	for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+		stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
-+		if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+			continue
-+		} else if e != nil {
-+			return s, e
-+		}
-+
-+		s += stmp
-+		destsiz -= s
-+		if destsiz < 0 {
-+			destsiz = 0
-+		}
-+		d = initxattrdest(dest, s)
-+	}
-+
-+	return s, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
-new file mode 100644
-index 00000000..104994bc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
-@@ -0,0 +1,1384 @@
-+// mkerrors.sh -maix32
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc,aix
-+
-+// Created by cgo -godefs - DO NOT EDIT
-+// cgo -godefs -- -maix32 _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+	AF_APPLETALK                  = 0x10
-+	AF_BYPASS                     = 0x19
-+	AF_CCITT                      = 0xa
-+	AF_CHAOS                      = 0x5
-+	AF_DATAKIT                    = 0x9
-+	AF_DECnet                     = 0xc
-+	AF_DLI                        = 0xd
-+	AF_ECMA                       = 0x8
-+	AF_HYLINK                     = 0xf
-+	AF_IMPLINK                    = 0x3
-+	AF_INET                       = 0x2
-+	AF_INET6                      = 0x18
-+	AF_INTF                       = 0x14
-+	AF_ISO                        = 0x7
-+	AF_LAT                        = 0xe
-+	AF_LINK                       = 0x12
-+	AF_LOCAL                      = 0x1
-+	AF_MAX                        = 0x1e
-+	AF_NDD                        = 0x17
-+	AF_NETWARE                    = 0x16
-+	AF_NS                         = 0x6
-+	AF_OSI                        = 0x7
-+	AF_PUP                        = 0x4
-+	AF_RIF                        = 0x15
-+	AF_ROUTE                      = 0x11
-+	AF_SNA                        = 0xb
-+	AF_UNIX                       = 0x1
-+	AF_UNSPEC                     = 0x0
-+	ALTWERASE                     = 0x400000
-+	ARPHRD_802_3                  = 0x6
-+	ARPHRD_802_5                  = 0x6
-+	ARPHRD_ETHER                  = 0x1
-+	ARPHRD_FDDI                   = 0x1
-+	B0                            = 0x0
-+	B110                          = 0x3
-+	B1200                         = 0x9
-+	B134                          = 0x4
-+	B150                          = 0x5
-+	B1800                         = 0xa
-+	B19200                        = 0xe
-+	B200                          = 0x6
-+	B2400                         = 0xb
-+	B300                          = 0x7
-+	B38400                        = 0xf
-+	B4800                         = 0xc
-+	B50                           = 0x1
-+	B600                          = 0x8
-+	B75                           = 0x2
-+	B9600                         = 0xd
-+	BRKINT                        = 0x2
-+	BS0                           = 0x0
-+	BS1                           = 0x1000
-+	BSDLY                         = 0x1000
-+	CAP_AACCT                     = 0x6
-+	CAP_ARM_APPLICATION           = 0x5
-+	CAP_BYPASS_RAC_VMM            = 0x3
-+	CAP_CLEAR                     = 0x0
-+	CAP_CREDENTIALS               = 0x7
-+	CAP_EFFECTIVE                 = 0x1
-+	CAP_EWLM_AGENT                = 0x4
-+	CAP_INHERITABLE               = 0x2
-+	CAP_MAXIMUM                   = 0x7
-+	CAP_NUMA_ATTACH               = 0x2
-+	CAP_PERMITTED                 = 0x3
-+	CAP_PROPAGATE                 = 0x1
-+	CAP_PROPOGATE                 = 0x1
-+	CAP_SET                       = 0x1
-+	CBAUD                         = 0xf
-+	CFLUSH                        = 0xf
-+	CIBAUD                        = 0xf0000
-+	CLOCAL                        = 0x800
-+	CLOCK_MONOTONIC               = 0xa
-+	CLOCK_PROCESS_CPUTIME_ID      = 0xb
-+	CLOCK_REALTIME                = 0x9
-+	CLOCK_THREAD_CPUTIME_ID       = 0xc
-+	CR0                           = 0x0
-+	CR1                           = 0x100
-+	CR2                           = 0x200
-+	CR3                           = 0x300
-+	CRDLY                         = 0x300
-+	CREAD                         = 0x80
-+	CS5                           = 0x0
-+	CS6                           = 0x10
-+	CS7                           = 0x20
-+	CS8                           = 0x30
-+	CSIOCGIFCONF                  = -0x3ff796dc
-+	CSIZE                         = 0x30
-+	CSMAP_DIR                     = "/usr/lib/nls/csmap/"
-+	CSTART                        = '\021'
-+	CSTOP                         = '\023'
-+	CSTOPB                        = 0x40
-+	CSUSP                         = 0x1a
-+	ECHO                          = 0x8
-+	ECHOCTL                       = 0x20000
-+	ECHOE                         = 0x10
-+	ECHOK                         = 0x20
-+	ECHOKE                        = 0x80000
-+	ECHONL                        = 0x40
-+	ECHOPRT                       = 0x40000
-+	ECH_ICMPID                    = 0x2
-+	ETHERNET_CSMACD               = 0x6
-+	EVENP                         = 0x80
-+	EXCONTINUE                    = 0x0
-+	EXDLOK                        = 0x3
-+	EXIO                          = 0x2
-+	EXPGIO                        = 0x0
-+	EXRESUME                      = 0x2
-+	EXRETURN                      = 0x1
-+	EXSIG                         = 0x4
-+	EXTA                          = 0xe
-+	EXTB                          = 0xf
-+	EXTRAP                        = 0x1
-+	EYEC_RTENTRYA                 = 0x257274656e747241
-+	EYEC_RTENTRYF                 = 0x257274656e747246
-+	E_ACC                         = 0x0
-+	FD_CLOEXEC                    = 0x1
-+	FD_SETSIZE                    = 0xfffe
-+	FF0                           = 0x0
-+	FF1                           = 0x2000
-+	FFDLY                         = 0x2000
-+	FLUSHBAND                     = 0x40
-+	FLUSHLOW                      = 0x8
-+	FLUSHO                        = 0x100000
-+	FLUSHR                        = 0x1
-+	FLUSHRW                       = 0x3
-+	FLUSHW                        = 0x2
-+	F_CLOSEM                      = 0xa
-+	F_DUP2FD                      = 0xe
-+	F_DUPFD                       = 0x0
-+	F_GETFD                       = 0x1
-+	F_GETFL                       = 0x3
-+	F_GETLK                       = 0x5
-+	F_GETLK64                     = 0xb
-+	F_GETOWN                      = 0x8
-+	F_LOCK                        = 0x1
-+	F_OK                          = 0x0
-+	F_RDLCK                       = 0x1
-+	F_SETFD                       = 0x2
-+	F_SETFL                       = 0x4
-+	F_SETLK                       = 0x6
-+	F_SETLK64                     = 0xc
-+	F_SETLKW                      = 0x7
-+	F_SETLKW64                    = 0xd
-+	F_SETOWN                      = 0x9
-+	F_TEST                        = 0x3
-+	F_TLOCK                       = 0x2
-+	F_TSTLK                       = 0xf
-+	F_ULOCK                       = 0x0
-+	F_UNLCK                       = 0x3
-+	F_WRLCK                       = 0x2
-+	HUPCL                         = 0x400
-+	IBSHIFT                       = 0x10
-+	ICANON                        = 0x2
-+	ICMP6_FILTER                  = 0x26
-+	ICMP6_SEC_SEND_DEL            = 0x46
-+	ICMP6_SEC_SEND_GET            = 0x47
-+	ICMP6_SEC_SEND_SET            = 0x44
-+	ICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45
-+	ICRNL                         = 0x100
-+	IEXTEN                        = 0x200000
-+	IFA_FIRSTALIAS                = 0x2000
-+	IFA_ROUTE                     = 0x1
-+	IFF_64BIT                     = 0x4000000
-+	IFF_ALLCAST                   = 0x20000
-+	IFF_ALLMULTI                  = 0x200
-+	IFF_BPF                       = 0x8000000
-+	IFF_BRIDGE                    = 0x40000
-+	IFF_BROADCAST                 = 0x2
-+	IFF_CANTCHANGE                = 0x80c52
-+	IFF_CHECKSUM_OFFLOAD          = 0x10000000
-+	IFF_D1                        = 0x8000
-+	IFF_D2                        = 0x4000
-+	IFF_D3                        = 0x2000
-+	IFF_D4                        = 0x1000
-+	IFF_DEBUG                     = 0x4
-+	IFF_DEVHEALTH                 = 0x4000
-+	IFF_DO_HW_LOOPBACK            = 0x10000
-+	IFF_GROUP_ROUTING             = 0x2000000
-+	IFF_IFBUFMGT                  = 0x800000
-+	IFF_LINK0                     = 0x100000
-+	IFF_LINK1                     = 0x200000
-+	IFF_LINK2                     = 0x400000
-+	IFF_LOOPBACK                  = 0x8
-+	IFF_MULTICAST                 = 0x80000
-+	IFF_NOARP                     = 0x80
-+	IFF_NOECHO                    = 0x800
-+	IFF_NOTRAILERS                = 0x20
-+	IFF_OACTIVE                   = 0x400
-+	IFF_POINTOPOINT               = 0x10
-+	IFF_PROMISC                   = 0x100
-+	IFF_PSEG                      = 0x40000000
-+	IFF_RUNNING                   = 0x40
-+	IFF_SIMPLEX                   = 0x800
-+	IFF_SNAP                      = 0x8000
-+	IFF_TCP_DISABLE_CKSUM         = 0x20000000
-+	IFF_TCP_NOCKSUM               = 0x1000000
-+	IFF_UP                        = 0x1
-+	IFF_VIPA                      = 0x80000000
-+	IFNAMSIZ                      = 0x10
-+	IFO_FLUSH                     = 0x1
-+	IFT_1822                      = 0x2
-+	IFT_AAL5                      = 0x31
-+	IFT_ARCNET                    = 0x23
-+	IFT_ARCNETPLUS                = 0x24
-+	IFT_ATM                       = 0x25
-+	IFT_CEPT                      = 0x13
-+	IFT_CLUSTER                   = 0x3e
-+	IFT_DS3                       = 0x1e
-+	IFT_EON                       = 0x19
-+	IFT_ETHER                     = 0x6
-+	IFT_FCS                       = 0x3a
-+	IFT_FDDI                      = 0xf
-+	IFT_FRELAY                    = 0x20
-+	IFT_FRELAYDCE                 = 0x2c
-+	IFT_GIFTUNNEL                 = 0x3c
-+	IFT_HDH1822                   = 0x3
-+	IFT_HF                        = 0x3d
-+	IFT_HIPPI                     = 0x2f
-+	IFT_HSSI                      = 0x2e
-+	IFT_HY                        = 0xe
-+	IFT_IB                        = 0xc7
-+	IFT_ISDNBASIC                 = 0x14
-+	IFT_ISDNPRIMARY               = 0x15
-+	IFT_ISO88022LLC               = 0x29
-+	IFT_ISO88023                  = 0x7
-+	IFT_ISO88024                  = 0x8
-+	IFT_ISO88025                  = 0x9
-+	IFT_ISO88026                  = 0xa
-+	IFT_LAPB                      = 0x10
-+	IFT_LOCALTALK                 = 0x2a
-+	IFT_LOOP                      = 0x18
-+	IFT_MIOX25                    = 0x26
-+	IFT_MODEM                     = 0x30
-+	IFT_NSIP                      = 0x1b
-+	IFT_OTHER                     = 0x1
-+	IFT_P10                       = 0xc
-+	IFT_P80                       = 0xd
-+	IFT_PARA                      = 0x22
-+	IFT_PPP                       = 0x17
-+	IFT_PROPMUX                   = 0x36
-+	IFT_PROPVIRTUAL               = 0x35
-+	IFT_PTPSERIAL                 = 0x16
-+	IFT_RS232                     = 0x21
-+	IFT_SDLC                      = 0x11
-+	IFT_SIP                       = 0x1f
-+	IFT_SLIP                      = 0x1c
-+	IFT_SMDSDXI                   = 0x2b
-+	IFT_SMDSICIP                  = 0x34
-+	IFT_SN                        = 0x38
-+	IFT_SONET                     = 0x27
-+	IFT_SONETPATH                 = 0x32
-+	IFT_SONETVT                   = 0x33
-+	IFT_SP                        = 0x39
-+	IFT_STARLAN                   = 0xb
-+	IFT_T1                        = 0x12
-+	IFT_TUNNEL                    = 0x3b
-+	IFT_ULTRA                     = 0x1d
-+	IFT_V35                       = 0x2d
-+	IFT_VIPA                      = 0x37
-+	IFT_X25                       = 0x5
-+	IFT_X25DDN                    = 0x4
-+	IFT_X25PLE                    = 0x28
-+	IFT_XETHER                    = 0x1a
-+	IGNBRK                        = 0x1
-+	IGNCR                         = 0x80
-+	IGNPAR                        = 0x4
-+	IMAXBEL                       = 0x10000
-+	INLCR                         = 0x40
-+	INPCK                         = 0x10
-+	IN_CLASSA_HOST                = 0xffffff
-+	IN_CLASSA_MAX                 = 0x80
-+	IN_CLASSA_NET                 = 0xff000000
-+	IN_CLASSA_NSHIFT              = 0x18
-+	IN_CLASSB_HOST                = 0xffff
-+	IN_CLASSB_MAX                 = 0x10000
-+	IN_CLASSB_NET                 = 0xffff0000
-+	IN_CLASSB_NSHIFT              = 0x10
-+	IN_CLASSC_HOST                = 0xff
-+	IN_CLASSC_NET                 = 0xffffff00
-+	IN_CLASSC_NSHIFT              = 0x8
-+	IN_CLASSD_HOST                = 0xfffffff
-+	IN_CLASSD_NET                 = 0xf0000000
-+	IN_CLASSD_NSHIFT              = 0x1c
-+	IN_LOOPBACKNET                = 0x7f
-+	IN_USE                        = 0x1
-+	IPPROTO_AH                    = 0x33
-+	IPPROTO_BIP                   = 0x53
-+	IPPROTO_DSTOPTS               = 0x3c
-+	IPPROTO_EGP                   = 0x8
-+	IPPROTO_EON                   = 0x50
-+	IPPROTO_ESP                   = 0x32
-+	IPPROTO_FRAGMENT              = 0x2c
-+	IPPROTO_GGP                   = 0x3
-+	IPPROTO_GIF                   = 0x8c
-+	IPPROTO_GRE                   = 0x2f
-+	IPPROTO_HOPOPTS               = 0x0
-+	IPPROTO_ICMP                  = 0x1
-+	IPPROTO_ICMPV6                = 0x3a
-+	IPPROTO_IDP                   = 0x16
-+	IPPROTO_IGMP                  = 0x2
-+	IPPROTO_IP                    = 0x0
-+	IPPROTO_IPIP                  = 0x4
-+	IPPROTO_IPV6                  = 0x29
-+	IPPROTO_LOCAL                 = 0x3f
-+	IPPROTO_MAX                   = 0x100
-+	IPPROTO_MH                    = 0x87
-+	IPPROTO_NONE                  = 0x3b
-+	IPPROTO_PUP                   = 0xc
-+	IPPROTO_QOS                   = 0x2d
-+	IPPROTO_RAW                   = 0xff
-+	IPPROTO_ROUTING               = 0x2b
-+	IPPROTO_RSVP                  = 0x2e
-+	IPPROTO_SCTP                  = 0x84
-+	IPPROTO_TCP                   = 0x6
-+	IPPROTO_TP                    = 0x1d
-+	IPPROTO_UDP                   = 0x11
-+	IPV6_ADDRFORM                 = 0x16
-+	IPV6_ADDR_PREFERENCES         = 0x4a
-+	IPV6_ADD_MEMBERSHIP           = 0xc
-+	IPV6_AIXRAWSOCKET             = 0x39
-+	IPV6_CHECKSUM                 = 0x27
-+	IPV6_DONTFRAG                 = 0x2d
-+	IPV6_DROP_MEMBERSHIP          = 0xd
-+	IPV6_DSTOPTS                  = 0x36
-+	IPV6_FLOWINFO_FLOWLABEL       = 0xffffff
-+	IPV6_FLOWINFO_PRIFLOW         = 0xfffffff
-+	IPV6_FLOWINFO_PRIORITY        = 0xf000000
-+	IPV6_FLOWINFO_SRFLAG          = 0x10000000
-+	IPV6_FLOWINFO_VERSION         = 0xf0000000
-+	IPV6_HOPLIMIT                 = 0x28
-+	IPV6_HOPOPTS                  = 0x34
-+	IPV6_JOIN_GROUP               = 0xc
-+	IPV6_LEAVE_GROUP              = 0xd
-+	IPV6_MIPDSTOPTS               = 0x36
-+	IPV6_MULTICAST_HOPS           = 0xa
-+	IPV6_MULTICAST_IF             = 0x9
-+	IPV6_MULTICAST_LOOP           = 0xb
-+	IPV6_NEXTHOP                  = 0x30
-+	IPV6_NOPROBE                  = 0x1c
-+	IPV6_PATHMTU                  = 0x2e
-+	IPV6_PKTINFO                  = 0x21
-+	IPV6_PKTOPTIONS               = 0x24
-+	IPV6_PRIORITY_10              = 0xa000000
-+	IPV6_PRIORITY_11              = 0xb000000
-+	IPV6_PRIORITY_12              = 0xc000000
-+	IPV6_PRIORITY_13              = 0xd000000
-+	IPV6_PRIORITY_14              = 0xe000000
-+	IPV6_PRIORITY_15              = 0xf000000
-+	IPV6_PRIORITY_8               = 0x8000000
-+	IPV6_PRIORITY_9               = 0x9000000
-+	IPV6_PRIORITY_BULK            = 0x4000000
-+	IPV6_PRIORITY_CONTROL         = 0x7000000
-+	IPV6_PRIORITY_FILLER          = 0x1000000
-+	IPV6_PRIORITY_INTERACTIVE     = 0x6000000
-+	IPV6_PRIORITY_RESERVED1       = 0x3000000
-+	IPV6_PRIORITY_RESERVED2       = 0x5000000
-+	IPV6_PRIORITY_UNATTENDED      = 0x2000000
-+	IPV6_PRIORITY_UNCHARACTERIZED = 0x0
-+	IPV6_RECVDSTOPTS              = 0x38
-+	IPV6_RECVHOPLIMIT             = 0x29
-+	IPV6_RECVHOPOPTS              = 0x35
-+	IPV6_RECVHOPS                 = 0x22
-+	IPV6_RECVIF                   = 0x1e
-+	IPV6_RECVPATHMTU              = 0x2f
-+	IPV6_RECVPKTINFO              = 0x23
-+	IPV6_RECVRTHDR                = 0x33
-+	IPV6_RECVSRCRT                = 0x1d
-+	IPV6_RECVTCLASS               = 0x2a
-+	IPV6_RTHDR                    = 0x32
-+	IPV6_RTHDRDSTOPTS             = 0x37
-+	IPV6_RTHDR_TYPE_0             = 0x0
-+	IPV6_RTHDR_TYPE_2             = 0x2
-+	IPV6_SENDIF                   = 0x1f
-+	IPV6_SRFLAG_LOOSE             = 0x0
-+	IPV6_SRFLAG_STRICT            = 0x10000000
-+	IPV6_TCLASS                   = 0x2b
-+	IPV6_TOKEN_LENGTH             = 0x40
-+	IPV6_UNICAST_HOPS             = 0x4
-+	IPV6_USE_MIN_MTU              = 0x2c
-+	IPV6_V6ONLY                   = 0x25
-+	IPV6_VERSION                  = 0x60000000
-+	IP_ADDRFORM                   = 0x16
-+	IP_ADD_MEMBERSHIP             = 0xc
-+	IP_ADD_SOURCE_MEMBERSHIP      = 0x3c
-+	IP_BLOCK_SOURCE               = 0x3a
-+	IP_BROADCAST_IF               = 0x10
-+	IP_CACHE_LINE_SIZE            = 0x80
-+	IP_DEFAULT_MULTICAST_LOOP     = 0x1
-+	IP_DEFAULT_MULTICAST_TTL      = 0x1
-+	IP_DF                         = 0x4000
-+	IP_DHCPMODE                   = 0x11
-+	IP_DONTFRAG                   = 0x19
-+	IP_DROP_MEMBERSHIP            = 0xd
-+	IP_DROP_SOURCE_MEMBERSHIP     = 0x3d
-+	IP_FINDPMTU                   = 0x1a
-+	IP_HDRINCL                    = 0x2
-+	IP_INC_MEMBERSHIPS            = 0x14
-+	IP_INIT_MEMBERSHIP            = 0x14
-+	IP_MAXPACKET                  = 0xffff
-+	IP_MF                         = 0x2000
-+	IP_MSS                        = 0x240
-+	IP_MULTICAST_HOPS             = 0xa
-+	IP_MULTICAST_IF               = 0x9
-+	IP_MULTICAST_LOOP             = 0xb
-+	IP_MULTICAST_TTL              = 0xa
-+	IP_OPT                        = 0x1b
-+	IP_OPTIONS                    = 0x1
-+	IP_PMTUAGE                    = 0x1b
-+	IP_RECVDSTADDR                = 0x7
-+	IP_RECVIF                     = 0x14
-+	IP_RECVIFINFO                 = 0xf
-+	IP_RECVINTERFACE              = 0x20
-+	IP_RECVMACHDR                 = 0xe
-+	IP_RECVOPTS                   = 0x5
-+	IP_RECVRETOPTS                = 0x6
-+	IP_RECVTTL                    = 0x22
-+	IP_RETOPTS                    = 0x8
-+	IP_SOURCE_FILTER              = 0x48
-+	IP_TOS                        = 0x3
-+	IP_TTL                        = 0x4
-+	IP_UNBLOCK_SOURCE             = 0x3b
-+	IP_UNICAST_HOPS               = 0x4
-+	ISIG                          = 0x1
-+	ISTRIP                        = 0x20
-+	IUCLC                         = 0x800
-+	IXANY                         = 0x1000
-+	IXOFF                         = 0x400
-+	IXON                          = 0x200
-+	I_FLUSH                       = 0x20005305
-+	LNOFLSH                       = 0x8000
-+	LOCK_EX                       = 0x2
-+	LOCK_NB                       = 0x4
-+	LOCK_SH                       = 0x1
-+	LOCK_UN                       = 0x8
-+	MADV_DONTNEED                 = 0x4
-+	MADV_NORMAL                   = 0x0
-+	MADV_RANDOM                   = 0x1
-+	MADV_SEQUENTIAL               = 0x2
-+	MADV_SPACEAVAIL               = 0x5
-+	MADV_WILLNEED                 = 0x3
-+	MAP_ANON                      = 0x10
-+	MAP_ANONYMOUS                 = 0x10
-+	MAP_FILE                      = 0x0
-+	MAP_FIXED                     = 0x100
-+	MAP_PRIVATE                   = 0x2
-+	MAP_SHARED                    = 0x1
-+	MAP_TYPE                      = 0xf0
-+	MAP_VARIABLE                  = 0x0
-+	MCAST_BLOCK_SOURCE            = 0x40
-+	MCAST_EXCLUDE                 = 0x2
-+	MCAST_INCLUDE                 = 0x1
-+	MCAST_JOIN_GROUP              = 0x3e
-+	MCAST_JOIN_SOURCE_GROUP       = 0x42
-+	MCAST_LEAVE_GROUP             = 0x3f
-+	MCAST_LEAVE_SOURCE_GROUP      = 0x43
-+	MCAST_SOURCE_FILTER           = 0x49
-+	MCAST_UNBLOCK_SOURCE          = 0x41
-+	MCL_CURRENT                   = 0x100
-+	MCL_FUTURE                    = 0x200
-+	MSG_ANY                       = 0x4
-+	MSG_ARGEXT                    = 0x400
-+	MSG_BAND                      = 0x2
-+	MSG_COMPAT                    = 0x8000
-+	MSG_CTRUNC                    = 0x20
-+	MSG_DONTROUTE                 = 0x4
-+	MSG_EOR                       = 0x8
-+	MSG_HIPRI                     = 0x1
-+	MSG_MAXIOVLEN                 = 0x10
-+	MSG_MPEG2                     = 0x80
-+	MSG_NONBLOCK                  = 0x4000
-+	MSG_NOSIGNAL                  = 0x100
-+	MSG_OOB                       = 0x1
-+	MSG_PEEK                      = 0x2
-+	MSG_TRUNC                     = 0x10
-+	MSG_WAITALL                   = 0x40
-+	MSG_WAITFORONE                = 0x200
-+	MS_ASYNC                      = 0x10
-+	MS_EINTR                      = 0x80
-+	MS_INVALIDATE                 = 0x40
-+	MS_PER_SEC                    = 0x3e8
-+	MS_SYNC                       = 0x20
-+	NFDBITS                       = 0x20
-+	NL0                           = 0x0
-+	NL1                           = 0x4000
-+	NL2                           = 0x8000
-+	NL3                           = 0xc000
-+	NLDLY                         = 0x4000
-+	NOFLSH                        = 0x80
-+	NOFLUSH                       = 0x80000000
-+	OCRNL                         = 0x8
-+	OFDEL                         = 0x80
-+	OFILL                         = 0x40
-+	OLCUC                         = 0x2
-+	ONLCR                         = 0x4
-+	ONLRET                        = 0x20
-+	ONOCR                         = 0x10
-+	ONOEOT                        = 0x80000
-+	OPOST                         = 0x1
-+	OXTABS                        = 0x40000
-+	O_ACCMODE                     = 0x23
-+	O_APPEND                      = 0x8
-+	O_CIO                         = 0x80
-+	O_CIOR                        = 0x800000000
-+	O_CLOEXEC                     = 0x800000
-+	O_CREAT                       = 0x100
-+	O_DEFER                       = 0x2000
-+	O_DELAY                       = 0x4000
-+	O_DIRECT                      = 0x8000000
-+	O_DIRECTORY                   = 0x80000
-+	O_DSYNC                       = 0x400000
-+	O_EFSOFF                      = 0x400000000
-+	O_EFSON                       = 0x200000000
-+	O_EXCL                        = 0x400
-+	O_EXEC                        = 0x20
-+	O_LARGEFILE                   = 0x4000000
-+	O_NDELAY                      = 0x8000
-+	O_NOCACHE                     = 0x100000
-+	O_NOCTTY                      = 0x800
-+	O_NOFOLLOW                    = 0x1000000
-+	O_NONBLOCK                    = 0x4
-+	O_NONE                        = 0x3
-+	O_NSHARE                      = 0x10000
-+	O_RAW                         = 0x100000000
-+	O_RDONLY                      = 0x0
-+	O_RDWR                        = 0x2
-+	O_RSHARE                      = 0x1000
-+	O_RSYNC                       = 0x200000
-+	O_SEARCH                      = 0x20
-+	O_SNAPSHOT                    = 0x40
-+	O_SYNC                        = 0x10
-+	O_TRUNC                       = 0x200
-+	O_TTY_INIT                    = 0x0
-+	O_WRONLY                      = 0x1
-+	PARENB                        = 0x100
-+	PAREXT                        = 0x100000
-+	PARMRK                        = 0x8
-+	PARODD                        = 0x200
-+	PENDIN                        = 0x20000000
-+	PRIO_PGRP                     = 0x1
-+	PRIO_PROCESS                  = 0x0
-+	PRIO_USER                     = 0x2
-+	PROT_EXEC                     = 0x4
-+	PROT_NONE                     = 0x0
-+	PROT_READ                     = 0x1
-+	PROT_WRITE                    = 0x2
-+	PR_64BIT                      = 0x20
-+	PR_ADDR                       = 0x2
-+	PR_ARGEXT                     = 0x400
-+	PR_ATOMIC                     = 0x1
-+	PR_CONNREQUIRED               = 0x4
-+	PR_FASTHZ                     = 0x5
-+	PR_INP                        = 0x40
-+	PR_INTRLEVEL                  = 0x8000
-+	PR_MLS                        = 0x100
-+	PR_MLS_1_LABEL                = 0x200
-+	PR_NOEOR                      = 0x4000
-+	PR_RIGHTS                     = 0x10
-+	PR_SLOWHZ                     = 0x2
-+	PR_WANTRCVD                   = 0x8
-+	RLIMIT_AS                     = 0x6
-+	RLIMIT_CORE                   = 0x4
-+	RLIMIT_CPU                    = 0x0
-+	RLIMIT_DATA                   = 0x2
-+	RLIMIT_FSIZE                  = 0x1
-+	RLIMIT_NOFILE                 = 0x7
-+	RLIMIT_NPROC                  = 0x9
-+	RLIMIT_RSS                    = 0x5
-+	RLIMIT_STACK                  = 0x3
-+	RLIM_INFINITY                 = 0x7fffffff
-+	RTAX_AUTHOR                   = 0x6
-+	RTAX_BRD                      = 0x7
-+	RTAX_DST                      = 0x0
-+	RTAX_GATEWAY                  = 0x1
-+	RTAX_GENMASK                  = 0x3
-+	RTAX_IFA                      = 0x5
-+	RTAX_IFP                      = 0x4
-+	RTAX_MAX                      = 0x8
-+	RTAX_NETMASK                  = 0x2
-+	RTA_AUTHOR                    = 0x40
-+	RTA_BRD                       = 0x80
-+	RTA_DOWNSTREAM                = 0x100
-+	RTA_DST                       = 0x1
-+	RTA_GATEWAY                   = 0x2
-+	RTA_GENMASK                   = 0x8
-+	RTA_IFA                       = 0x20
-+	RTA_IFP                       = 0x10
-+	RTA_NETMASK                   = 0x4
-+	RTC_IA64                      = 0x3
-+	RTC_POWER                     = 0x1
-+	RTC_POWER_PC                  = 0x2
-+	RTF_ACTIVE_DGD                = 0x1000000
-+	RTF_BCE                       = 0x80000
-+	RTF_BLACKHOLE                 = 0x1000
-+	RTF_BROADCAST                 = 0x400000
-+	RTF_BUL                       = 0x2000
-+	RTF_CLONE                     = 0x10000
-+	RTF_CLONED                    = 0x20000
-+	RTF_CLONING                   = 0x100
-+	RTF_DONE                      = 0x40
-+	RTF_DYNAMIC                   = 0x10
-+	RTF_FREE_IN_PROG              = 0x4000000
-+	RTF_GATEWAY                   = 0x2
-+	RTF_HOST                      = 0x4
-+	RTF_LLINFO                    = 0x400
-+	RTF_LOCAL                     = 0x200000
-+	RTF_MASK                      = 0x80
-+	RTF_MODIFIED                  = 0x20
-+	RTF_MULTICAST                 = 0x800000
-+	RTF_PERMANENT6                = 0x8000000
-+	RTF_PINNED                    = 0x100000
-+	RTF_PROTO1                    = 0x8000
-+	RTF_PROTO2                    = 0x4000
-+	RTF_PROTO3                    = 0x40000
-+	RTF_REJECT                    = 0x8
-+	RTF_SMALLMTU                  = 0x40000
-+	RTF_STATIC                    = 0x800
-+	RTF_STOPSRCH                  = 0x2000000
-+	RTF_UNREACHABLE               = 0x10000000
-+	RTF_UP                        = 0x1
-+	RTF_XRESOLVE                  = 0x200
-+	RTM_ADD                       = 0x1
-+	RTM_CHANGE                    = 0x3
-+	RTM_DELADDR                   = 0xd
-+	RTM_DELETE                    = 0x2
-+	RTM_EXPIRE                    = 0xf
-+	RTM_GET                       = 0x4
-+	RTM_GETNEXT                   = 0x11
-+	RTM_IFINFO                    = 0xe
-+	RTM_LOCK                      = 0x8
-+	RTM_LOSING                    = 0x5
-+	RTM_MISS                      = 0x7
-+	RTM_NEWADDR                   = 0xc
-+	RTM_OLDADD                    = 0x9
-+	RTM_OLDDEL                    = 0xa
-+	RTM_REDIRECT                  = 0x6
-+	RTM_RESOLVE                   = 0xb
-+	RTM_RTLOST                    = 0x10
-+	RTM_RTTUNIT                   = 0xf4240
-+	RTM_SAMEADDR                  = 0x12
-+	RTM_SET                       = 0x13
-+	RTM_VERSION                   = 0x2
-+	RTM_VERSION_GR                = 0x4
-+	RTM_VERSION_GR_COMPAT         = 0x3
-+	RTM_VERSION_POLICY            = 0x5
-+	RTM_VERSION_POLICY_EXT        = 0x6
-+	RTM_VERSION_POLICY_PRFN       = 0x7
-+	RTV_EXPIRE                    = 0x4
-+	RTV_HOPCOUNT                  = 0x2
-+	RTV_MTU                       = 0x1
-+	RTV_RPIPE                     = 0x8
-+	RTV_RTT                       = 0x40
-+	RTV_RTTVAR                    = 0x80
-+	RTV_SPIPE                     = 0x10
-+	RTV_SSTHRESH                  = 0x20
-+	RUSAGE_CHILDREN               = -0x1
-+	RUSAGE_SELF                   = 0x0
-+	RUSAGE_THREAD                 = 0x1
-+	SCM_RIGHTS                    = 0x1
-+	SHUT_RD                       = 0x0
-+	SHUT_RDWR                     = 0x2
-+	SHUT_WR                       = 0x1
-+	SIGMAX64                      = 0xff
-+	SIGQUEUE_MAX                  = 0x20
-+	SIOCADDIFVIPA                 = 0x20006942
-+	SIOCADDMTU                    = -0x7ffb9690
-+	SIOCADDMULTI                  = -0x7fdf96cf
-+	SIOCADDNETID                  = -0x7fd796a9
-+	SIOCADDRT                     = -0x7fcf8df6
-+	SIOCAIFADDR                   = -0x7fbf96e6
-+	SIOCATMARK                    = 0x40047307
-+	SIOCDARP                      = -0x7fb396e0
-+	SIOCDELIFVIPA                 = 0x20006943
-+	SIOCDELMTU                    = -0x7ffb968f
-+	SIOCDELMULTI                  = -0x7fdf96ce
-+	SIOCDELPMTU                   = -0x7fd78ff6
-+	SIOCDELRT                     = -0x7fcf8df5
-+	SIOCDIFADDR                   = -0x7fd796e7
-+	SIOCDNETOPT                   = -0x3ffe9680
-+	SIOCDX25XLATE                 = -0x7fd7969b
-+	SIOCFIFADDR                   = -0x7fdf966d
-+	SIOCGARP                      = -0x3fb396da
-+	SIOCGETMTUS                   = 0x2000696f
-+	SIOCGETSGCNT                  = -0x3feb8acc
-+	SIOCGETVIFCNT                 = -0x3feb8acd
-+	SIOCGHIWAT                    = 0x40047301
-+	SIOCGIFADDR                   = -0x3fd796df
-+	SIOCGIFADDRS                  = 0x2000698c
-+	SIOCGIFBAUDRATE               = -0x3fdf9669
-+	SIOCGIFBRDADDR                = -0x3fd796dd
-+	SIOCGIFCONF                   = -0x3ff796bb
-+	SIOCGIFCONFGLOB               = -0x3ff79670
-+	SIOCGIFDSTADDR                = -0x3fd796de
-+	SIOCGIFFLAGS                  = -0x3fd796ef
-+	SIOCGIFGIDLIST                = 0x20006968
-+	SIOCGIFHWADDR                 = -0x3fab966b
-+	SIOCGIFMETRIC                 = -0x3fd796e9
-+	SIOCGIFMTU                    = -0x3fd796aa
-+	SIOCGIFNETMASK                = -0x3fd796db
-+	SIOCGIFOPTIONS                = -0x3fd796d6
-+	SIOCGISNO                     = -0x3fd79695
-+	SIOCGLOADF                    = -0x3ffb967e
-+	SIOCGLOWAT                    = 0x40047303
-+	SIOCGNETOPT                   = -0x3ffe96a5
-+	SIOCGNETOPT1                  = -0x3fdf967f
-+	SIOCGNMTUS                    = 0x2000696e
-+	SIOCGPGRP                     = 0x40047309
-+	SIOCGSIZIFCONF                = 0x4004696a
-+	SIOCGSRCFILTER                = -0x3fe796cb
-+	SIOCGTUNEPHASE                = -0x3ffb9676
-+	SIOCGX25XLATE                 = -0x3fd7969c
-+	SIOCIFATTACH                  = -0x7fdf9699
-+	SIOCIFDETACH                  = -0x7fdf969a
-+	SIOCIFGETPKEY                 = -0x7fdf969b
-+	SIOCIF_ATM_DARP               = -0x7fdf9683
-+	SIOCIF_ATM_DUMPARP            = -0x7fdf9685
-+	SIOCIF_ATM_GARP               = -0x7fdf9682
-+	SIOCIF_ATM_IDLE               = -0x7fdf9686
-+	SIOCIF_ATM_SARP               = -0x7fdf9681
-+	SIOCIF_ATM_SNMPARP            = -0x7fdf9687
-+	SIOCIF_ATM_SVC                = -0x7fdf9684
-+	SIOCIF_ATM_UBR                = -0x7fdf9688
-+	SIOCIF_DEVHEALTH              = -0x7ffb966c
-+	SIOCIF_IB_ARP_INCOMP          = -0x7fdf9677
-+	SIOCIF_IB_ARP_TIMER           = -0x7fdf9678
-+	SIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f
-+	SIOCIF_IB_DEL_ARP             = -0x7fdf967f
-+	SIOCIF_IB_DEL_PINFO           = -0x3fdf9670
-+	SIOCIF_IB_DUMP_ARP            = -0x7fdf9680
-+	SIOCIF_IB_GET_ARP             = -0x7fdf967e
-+	SIOCIF_IB_GET_INFO            = -0x3f879675
-+	SIOCIF_IB_GET_STATS           = -0x3f879672
-+	SIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a
-+	SIOCIF_IB_RESET_STATS         = -0x3f879671
-+	SIOCIF_IB_RESIZE_CQ           = -0x7fdf9679
-+	SIOCIF_IB_SET_ARP             = -0x7fdf967d
-+	SIOCIF_IB_SET_PKEY            = -0x7fdf967c
-+	SIOCIF_IB_SET_PORT            = -0x7fdf967b
-+	SIOCIF_IB_SET_QKEY            = -0x7fdf9676
-+	SIOCIF_IB_SET_QSIZE           = -0x7fdf967a
-+	SIOCLISTIFVIPA                = 0x20006944
-+	SIOCSARP                      = -0x7fb396e2
-+	SIOCSHIWAT                    = 0x80047300
-+	SIOCSIFADDR                   = -0x7fd796f4
-+	SIOCSIFADDRORI                = -0x7fdb9673
-+	SIOCSIFBRDADDR                = -0x7fd796ed
-+	SIOCSIFDSTADDR                = -0x7fd796f2
-+	SIOCSIFFLAGS                  = -0x7fd796f0
-+	SIOCSIFGIDLIST                = 0x20006969
-+	SIOCSIFMETRIC                 = -0x7fd796e8
-+	SIOCSIFMTU                    = -0x7fd796a8
-+	SIOCSIFNETDUMP                = -0x7fd796e4
-+	SIOCSIFNETMASK                = -0x7fd796ea
-+	SIOCSIFOPTIONS                = -0x7fd796d7
-+	SIOCSIFSUBCHAN                = -0x7fd796e5
-+	SIOCSISNO                     = -0x7fd79694
-+	SIOCSLOADF                    = -0x3ffb967d
-+	SIOCSLOWAT                    = 0x80047302
-+	SIOCSNETOPT                   = -0x7ffe96a6
-+	SIOCSPGRP                     = 0x80047308
-+	SIOCSX25XLATE                 = -0x7fd7969d
-+	SOCK_CONN_DGRAM               = 0x6
-+	SOCK_DGRAM                    = 0x2
-+	SOCK_RAW                      = 0x3
-+	SOCK_RDM                      = 0x4
-+	SOCK_SEQPACKET                = 0x5
-+	SOCK_STREAM                   = 0x1
-+	SOL_SOCKET                    = 0xffff
-+	SOMAXCONN                     = 0x400
-+	SO_ACCEPTCONN                 = 0x2
-+	SO_AUDIT                      = 0x8000
-+	SO_BROADCAST                  = 0x20
-+	SO_CKSUMRECV                  = 0x800
-+	SO_DEBUG                      = 0x1
-+	SO_DONTROUTE                  = 0x10
-+	SO_ERROR                      = 0x1007
-+	SO_KEEPALIVE                  = 0x8
-+	SO_KERNACCEPT                 = 0x2000
-+	SO_LINGER                     = 0x80
-+	SO_NOMULTIPATH                = 0x4000
-+	SO_NOREUSEADDR                = 0x1000
-+	SO_OOBINLINE                  = 0x100
-+	SO_PEERID                     = 0x1009
-+	SO_RCVBUF                     = 0x1002
-+	SO_RCVLOWAT                   = 0x1004
-+	SO_RCVTIMEO                   = 0x1006
-+	SO_REUSEADDR                  = 0x4
-+	SO_REUSEPORT                  = 0x200
-+	SO_SNDBUF                     = 0x1001
-+	SO_SNDLOWAT                   = 0x1003
-+	SO_SNDTIMEO                   = 0x1005
-+	SO_TIMESTAMPNS                = 0x100a
-+	SO_TYPE                       = 0x1008
-+	SO_USELOOPBACK                = 0x40
-+	SO_USE_IFBUFS                 = 0x400
-+	S_BANDURG                     = 0x400
-+	S_EMODFMT                     = 0x3c000000
-+	S_ENFMT                       = 0x400
-+	S_ERROR                       = 0x100
-+	S_HANGUP                      = 0x200
-+	S_HIPRI                       = 0x2
-+	S_ICRYPTO                     = 0x80000
-+	S_IEXEC                       = 0x40
-+	S_IFBLK                       = 0x6000
-+	S_IFCHR                       = 0x2000
-+	S_IFDIR                       = 0x4000
-+	S_IFIFO                       = 0x1000
-+	S_IFJOURNAL                   = 0x10000
-+	S_IFLNK                       = 0xa000
-+	S_IFMPX                       = 0x2200
-+	S_IFMT                        = 0xf000
-+	S_IFPDIR                      = 0x4000000
-+	S_IFPSDIR                     = 0x8000000
-+	S_IFPSSDIR                    = 0xc000000
-+	S_IFREG                       = 0x8000
-+	S_IFSOCK                      = 0xc000
-+	S_IFSYSEA                     = 0x30000000
-+	S_INPUT                       = 0x1
-+	S_IREAD                       = 0x100
-+	S_IRGRP                       = 0x20
-+	S_IROTH                       = 0x4
-+	S_IRUSR                       = 0x100
-+	S_IRWXG                       = 0x38
-+	S_IRWXO                       = 0x7
-+	S_IRWXU                       = 0x1c0
-+	S_ISGID                       = 0x400
-+	S_ISUID                       = 0x800
-+	S_ISVTX                       = 0x200
-+	S_ITCB                        = 0x1000000
-+	S_ITP                         = 0x800000
-+	S_IWGRP                       = 0x10
-+	S_IWOTH                       = 0x2
-+	S_IWRITE                      = 0x80
-+	S_IWUSR                       = 0x80
-+	S_IXACL                       = 0x2000000
-+	S_IXATTR                      = 0x40000
-+	S_IXGRP                       = 0x8
-+	S_IXINTERFACE                 = 0x100000
-+	S_IXMOD                       = 0x40000000
-+	S_IXOTH                       = 0x1
-+	S_IXUSR                       = 0x40
-+	S_MSG                         = 0x8
-+	S_OUTPUT                      = 0x4
-+	S_RDBAND                      = 0x20
-+	S_RDNORM                      = 0x10
-+	S_RESERVED1                   = 0x20000
-+	S_RESERVED2                   = 0x200000
-+	S_RESERVED3                   = 0x400000
-+	S_RESERVED4                   = 0x80000000
-+	S_RESFMT1                     = 0x10000000
-+	S_RESFMT10                    = 0x34000000
-+	S_RESFMT11                    = 0x38000000
-+	S_RESFMT12                    = 0x3c000000
-+	S_RESFMT2                     = 0x14000000
-+	S_RESFMT3                     = 0x18000000
-+	S_RESFMT4                     = 0x1c000000
-+	S_RESFMT5                     = 0x20000000
-+	S_RESFMT6                     = 0x24000000
-+	S_RESFMT7                     = 0x28000000
-+	S_RESFMT8                     = 0x2c000000
-+	S_WRBAND                      = 0x80
-+	S_WRNORM                      = 0x40
-+	TAB0                          = 0x0
-+	TAB1                          = 0x400
-+	TAB2                          = 0x800
-+	TAB3                          = 0xc00
-+	TABDLY                        = 0xc00
-+	TCFLSH                        = 0x540c
-+	TCGETA                        = 0x5405
-+	TCGETS                        = 0x5401
-+	TCIFLUSH                      = 0x0
-+	TCIOFF                        = 0x2
-+	TCIOFLUSH                     = 0x2
-+	TCION                         = 0x3
-+	TCOFLUSH                      = 0x1
-+	TCOOFF                        = 0x0
-+	TCOON                         = 0x1
-+	TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800
-+	TCP_ACLADD                    = 0x23
-+	TCP_ACLBIND                   = 0x26
-+	TCP_ACLCLEAR                  = 0x22
-+	TCP_ACLDEL                    = 0x24
-+	TCP_ACLDENY                   = 0x8
-+	TCP_ACLFLUSH                  = 0x21
-+	TCP_ACLGID                    = 0x1
-+	TCP_ACLLS                     = 0x25
-+	TCP_ACLSUBNET                 = 0x4
-+	TCP_ACLUID                    = 0x2
-+	TCP_CWND_DF                   = 0x16
-+	TCP_CWND_IF                   = 0x15
-+	TCP_DELAY_ACK_FIN             = 0x2
-+	TCP_DELAY_ACK_SYN             = 0x1
-+	TCP_FASTNAME                  = 0x101080a
-+	TCP_KEEPCNT                   = 0x13
-+	TCP_KEEPIDLE                  = 0x11
-+	TCP_KEEPINTVL                 = 0x12
-+	TCP_LSPRIV                    = 0x29
-+	TCP_LUID                      = 0x20
-+	TCP_MAXBURST                  = 0x8
-+	TCP_MAXDF                     = 0x64
-+	TCP_MAXIF                     = 0x64
-+	TCP_MAXSEG                    = 0x2
-+	TCP_MAXWIN                    = 0xffff
-+	TCP_MAXWINDOWSCALE            = 0xe
-+	TCP_MAX_SACK                  = 0x4
-+	TCP_MSS                       = 0x5b4
-+	TCP_NODELAY                   = 0x1
-+	TCP_NODELAYACK                = 0x14
-+	TCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19
-+	TCP_NOREDUCE_CWND_IN_FRXMT    = 0x18
-+	TCP_NOTENTER_SSTART           = 0x17
-+	TCP_OPT                       = 0x19
-+	TCP_RFC1323                   = 0x4
-+	TCP_SETPRIV                   = 0x27
-+	TCP_STDURG                    = 0x10
-+	TCP_TIMESTAMP_OPTLEN          = 0xc
-+	TCP_UNSETPRIV                 = 0x28
-+	TCSAFLUSH                     = 0x2
-+	TCSBRK                        = 0x5409
-+	TCSETA                        = 0x5406
-+	TCSETAF                       = 0x5408
-+	TCSETAW                       = 0x5407
-+	TCSETS                        = 0x5402
-+	TCSETSF                       = 0x5404
-+	TCSETSW                       = 0x5403
-+	TCXONC                        = 0x540b
-+	TIMER_ABSTIME                 = 0x3e7
-+	TIMER_MAX                     = 0x20
-+	TIOC                          = 0x5400
-+	TIOCCBRK                      = 0x2000747a
-+	TIOCCDTR                      = 0x20007478
-+	TIOCCONS                      = 0x80047462
-+	TIOCEXCL                      = 0x2000740d
-+	TIOCFLUSH                     = 0x80047410
-+	TIOCGETC                      = 0x40067412
-+	TIOCGETD                      = 0x40047400
-+	TIOCGETP                      = 0x40067408
-+	TIOCGLTC                      = 0x40067474
-+	TIOCGPGRP                     = 0x40047477
-+	TIOCGSID                      = 0x40047448
-+	TIOCGSIZE                     = 0x40087468
-+	TIOCGWINSZ                    = 0x40087468
-+	TIOCHPCL                      = 0x20007402
-+	TIOCLBIC                      = 0x8004747e
-+	TIOCLBIS                      = 0x8004747f
-+	TIOCLGET                      = 0x4004747c
-+	TIOCLSET                      = 0x8004747d
-+	TIOCMBIC                      = 0x8004746b
-+	TIOCMBIS                      = 0x8004746c
-+	TIOCMGET                      = 0x4004746a
-+	TIOCMIWAIT                    = 0x80047464
-+	TIOCMODG                      = 0x40047403
-+	TIOCMODS                      = 0x80047404
-+	TIOCMSET                      = 0x8004746d
-+	TIOCM_CAR                     = 0x40
-+	TIOCM_CD                      = 0x40
-+	TIOCM_CTS                     = 0x20
-+	TIOCM_DSR                     = 0x100
-+	TIOCM_DTR                     = 0x2
-+	TIOCM_LE                      = 0x1
-+	TIOCM_RI                      = 0x80
-+	TIOCM_RNG                     = 0x80
-+	TIOCM_RTS                     = 0x4
-+	TIOCM_SR                      = 0x10
-+	TIOCM_ST                      = 0x8
-+	TIOCNOTTY                     = 0x20007471
-+	TIOCNXCL                      = 0x2000740e
-+	TIOCOUTQ                      = 0x40047473
-+	TIOCPKT                       = 0x80047470
-+	TIOCPKT_DATA                  = 0x0
-+	TIOCPKT_DOSTOP                = 0x20
-+	TIOCPKT_FLUSHREAD             = 0x1
-+	TIOCPKT_FLUSHWRITE            = 0x2
-+	TIOCPKT_NOSTOP                = 0x10
-+	TIOCPKT_START                 = 0x8
-+	TIOCPKT_STOP                  = 0x4
-+	TIOCREMOTE                    = 0x80047469
-+	TIOCSBRK                      = 0x2000747b
-+	TIOCSDTR                      = 0x20007479
-+	TIOCSETC                      = 0x80067411
-+	TIOCSETD                      = 0x80047401
-+	TIOCSETN                      = 0x8006740a
-+	TIOCSETP                      = 0x80067409
-+	TIOCSLTC                      = 0x80067475
-+	TIOCSPGRP                     = 0x80047476
-+	TIOCSSIZE                     = 0x80087467
-+	TIOCSTART                     = 0x2000746e
-+	TIOCSTI                       = 0x80017472
-+	TIOCSTOP                      = 0x2000746f
-+	TIOCSWINSZ                    = 0x80087467
-+	TIOCUCNTL                     = 0x80047466
-+	TOSTOP                        = 0x10000
-+	UTIME_NOW                     = -0x2
-+	UTIME_OMIT                    = -0x3
-+	VDISCRD                       = 0xc
-+	VDSUSP                        = 0xa
-+	VEOF                          = 0x4
-+	VEOL                          = 0x5
-+	VEOL2                         = 0x6
-+	VERASE                        = 0x2
-+	VINTR                         = 0x0
-+	VKILL                         = 0x3
-+	VLNEXT                        = 0xe
-+	VMIN                          = 0x4
-+	VQUIT                         = 0x1
-+	VREPRINT                      = 0xb
-+	VSTART                        = 0x7
-+	VSTOP                         = 0x8
-+	VSTRT                         = 0x7
-+	VSUSP                         = 0x9
-+	VT0                           = 0x0
-+	VT1                           = 0x8000
-+	VTDELAY                       = 0x2000
-+	VTDLY                         = 0x8000
-+	VTIME                         = 0x5
-+	VWERSE                        = 0xd
-+	WPARSTART                     = 0x1
-+	WPARSTOP                      = 0x2
-+	WPARTTYNAME                   = "Global"
-+	XCASE                         = 0x4
-+	XTABS                         = 0xc00
-+	_FDATAFLUSH                   = 0x2000000000
-+)
-+
-+// Errors
-+const (
-+	E2BIG           = syscall.Errno(0x7)
-+	EACCES          = syscall.Errno(0xd)
-+	EADDRINUSE      = syscall.Errno(0x43)
-+	EADDRNOTAVAIL   = syscall.Errno(0x44)
-+	EAFNOSUPPORT    = syscall.Errno(0x42)
-+	EAGAIN          = syscall.Errno(0xb)
-+	EALREADY        = syscall.Errno(0x38)
-+	EBADF           = syscall.Errno(0x9)
-+	EBADMSG         = syscall.Errno(0x78)
-+	EBUSY           = syscall.Errno(0x10)
-+	ECANCELED       = syscall.Errno(0x75)
-+	ECHILD          = syscall.Errno(0xa)
-+	ECHRNG          = syscall.Errno(0x25)
-+	ECLONEME        = syscall.Errno(0x52)
-+	ECONNABORTED    = syscall.Errno(0x48)
-+	ECONNREFUSED    = syscall.Errno(0x4f)
-+	ECONNRESET      = syscall.Errno(0x49)
-+	ECORRUPT        = syscall.Errno(0x59)
-+	EDEADLK         = syscall.Errno(0x2d)
-+	EDESTADDREQ     = syscall.Errno(0x3a)
-+	EDESTADDRREQ    = syscall.Errno(0x3a)
-+	EDIST           = syscall.Errno(0x35)
-+	EDOM            = syscall.Errno(0x21)
-+	EDQUOT          = syscall.Errno(0x58)
-+	EEXIST          = syscall.Errno(0x11)
-+	EFAULT          = syscall.Errno(0xe)
-+	EFBIG           = syscall.Errno(0x1b)
-+	EFORMAT         = syscall.Errno(0x30)
-+	EHOSTDOWN       = syscall.Errno(0x50)
-+	EHOSTUNREACH    = syscall.Errno(0x51)
-+	EIDRM           = syscall.Errno(0x24)
-+	EILSEQ          = syscall.Errno(0x74)
-+	EINPROGRESS     = syscall.Errno(0x37)
-+	EINTR           = syscall.Errno(0x4)
-+	EINVAL          = syscall.Errno(0x16)
-+	EIO             = syscall.Errno(0x5)
-+	EISCONN         = syscall.Errno(0x4b)
-+	EISDIR          = syscall.Errno(0x15)
-+	EL2HLT          = syscall.Errno(0x2c)
-+	EL2NSYNC        = syscall.Errno(0x26)
-+	EL3HLT          = syscall.Errno(0x27)
-+	EL3RST          = syscall.Errno(0x28)
-+	ELNRNG          = syscall.Errno(0x29)
-+	ELOOP           = syscall.Errno(0x55)
-+	EMEDIA          = syscall.Errno(0x6e)
-+	EMFILE          = syscall.Errno(0x18)
-+	EMLINK          = syscall.Errno(0x1f)
-+	EMSGSIZE        = syscall.Errno(0x3b)
-+	EMULTIHOP       = syscall.Errno(0x7d)
-+	ENAMETOOLONG    = syscall.Errno(0x56)
-+	ENETDOWN        = syscall.Errno(0x45)
-+	ENETRESET       = syscall.Errno(0x47)
-+	ENETUNREACH     = syscall.Errno(0x46)
-+	ENFILE          = syscall.Errno(0x17)
-+	ENOATTR         = syscall.Errno(0x70)
-+	ENOBUFS         = syscall.Errno(0x4a)
-+	ENOCONNECT      = syscall.Errno(0x32)
-+	ENOCSI          = syscall.Errno(0x2b)
-+	ENODATA         = syscall.Errno(0x7a)
-+	ENODEV          = syscall.Errno(0x13)
-+	ENOENT          = syscall.Errno(0x2)
-+	ENOEXEC         = syscall.Errno(0x8)
-+	ENOLCK          = syscall.Errno(0x31)
-+	ENOLINK         = syscall.Errno(0x7e)
-+	ENOMEM          = syscall.Errno(0xc)
-+	ENOMSG          = syscall.Errno(0x23)
-+	ENOPROTOOPT     = syscall.Errno(0x3d)
-+	ENOSPC          = syscall.Errno(0x1c)
-+	ENOSR           = syscall.Errno(0x76)
-+	ENOSTR          = syscall.Errno(0x7b)
-+	ENOSYS          = syscall.Errno(0x6d)
-+	ENOTBLK         = syscall.Errno(0xf)
-+	ENOTCONN        = syscall.Errno(0x4c)
-+	ENOTDIR         = syscall.Errno(0x14)
-+	ENOTEMPTY       = syscall.Errno(0x11)
-+	ENOTREADY       = syscall.Errno(0x2e)
-+	ENOTRECOVERABLE = syscall.Errno(0x5e)
-+	ENOTRUST        = syscall.Errno(0x72)
-+	ENOTSOCK        = syscall.Errno(0x39)
-+	ENOTSUP         = syscall.Errno(0x7c)
-+	ENOTTY          = syscall.Errno(0x19)
-+	ENXIO           = syscall.Errno(0x6)
-+	EOPNOTSUPP      = syscall.Errno(0x40)
-+	EOVERFLOW       = syscall.Errno(0x7f)
-+	EOWNERDEAD      = syscall.Errno(0x5f)
-+	EPERM           = syscall.Errno(0x1)
-+	EPFNOSUPPORT    = syscall.Errno(0x41)
-+	EPIPE           = syscall.Errno(0x20)
-+	EPROCLIM        = syscall.Errno(0x53)
-+	EPROTO          = syscall.Errno(0x79)
-+	EPROTONOSUPPORT = syscall.Errno(0x3e)
-+	EPROTOTYPE      = syscall.Errno(0x3c)
-+	ERANGE          = syscall.Errno(0x22)
-+	EREMOTE         = syscall.Errno(0x5d)
-+	ERESTART        = syscall.Errno(0x52)
-+	EROFS           = syscall.Errno(0x1e)
-+	ESAD            = syscall.Errno(0x71)
-+	ESHUTDOWN       = syscall.Errno(0x4d)
-+	ESOCKTNOSUPPORT = syscall.Errno(0x3f)
-+	ESOFT           = syscall.Errno(0x6f)
-+	ESPIPE          = syscall.Errno(0x1d)
-+	ESRCH           = syscall.Errno(0x3)
-+	ESTALE          = syscall.Errno(0x34)
-+	ESYSERROR       = syscall.Errno(0x5a)
-+	ETIME           = syscall.Errno(0x77)
-+	ETIMEDOUT       = syscall.Errno(0x4e)
-+	ETOOMANYREFS    = syscall.Errno(0x73)
-+	ETXTBSY         = syscall.Errno(0x1a)
-+	EUNATCH         = syscall.Errno(0x2a)
-+	EUSERS          = syscall.Errno(0x54)
-+	EWOULDBLOCK     = syscall.Errno(0xb)
-+	EWRPROTECT      = syscall.Errno(0x2f)
-+	EXDEV           = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+	SIGABRT     = syscall.Signal(0x6)
-+	SIGAIO      = syscall.Signal(0x17)
-+	SIGALRM     = syscall.Signal(0xe)
-+	SIGALRM1    = syscall.Signal(0x26)
-+	SIGBUS      = syscall.Signal(0xa)
-+	SIGCAPI     = syscall.Signal(0x31)
-+	SIGCHLD     = syscall.Signal(0x14)
-+	SIGCLD      = syscall.Signal(0x14)
-+	SIGCONT     = syscall.Signal(0x13)
-+	SIGCPUFAIL  = syscall.Signal(0x3b)
-+	SIGDANGER   = syscall.Signal(0x21)
-+	SIGEMT      = syscall.Signal(0x7)
-+	SIGFPE      = syscall.Signal(0x8)
-+	SIGGRANT    = syscall.Signal(0x3c)
-+	SIGHUP      = syscall.Signal(0x1)
-+	SIGILL      = syscall.Signal(0x4)
-+	SIGINT      = syscall.Signal(0x2)
-+	SIGIO       = syscall.Signal(0x17)
-+	SIGIOINT    = syscall.Signal(0x10)
-+	SIGIOT      = syscall.Signal(0x6)
-+	SIGKAP      = syscall.Signal(0x3c)
-+	SIGKILL     = syscall.Signal(0x9)
-+	SIGLOST     = syscall.Signal(0x6)
-+	SIGMAX      = syscall.Signal(0x3f)
-+	SIGMAX32    = syscall.Signal(0x3f)
-+	SIGMIGRATE  = syscall.Signal(0x23)
-+	SIGMSG      = syscall.Signal(0x1b)
-+	SIGPIPE     = syscall.Signal(0xd)
-+	SIGPOLL     = syscall.Signal(0x17)
-+	SIGPRE      = syscall.Signal(0x24)
-+	SIGPROF     = syscall.Signal(0x20)
-+	SIGPTY      = syscall.Signal(0x17)
-+	SIGPWR      = syscall.Signal(0x1d)
-+	SIGQUIT     = syscall.Signal(0x3)
-+	SIGRECONFIG = syscall.Signal(0x3a)
-+	SIGRETRACT  = syscall.Signal(0x3d)
-+	SIGSAK      = syscall.Signal(0x3f)
-+	SIGSEGV     = syscall.Signal(0xb)
-+	SIGSOUND    = syscall.Signal(0x3e)
-+	SIGSTOP     = syscall.Signal(0x11)
-+	SIGSYS      = syscall.Signal(0xc)
-+	SIGSYSERROR = syscall.Signal(0x30)
-+	SIGTALRM    = syscall.Signal(0x26)
-+	SIGTERM     = syscall.Signal(0xf)
-+	SIGTRAP     = syscall.Signal(0x5)
-+	SIGTSTP     = syscall.Signal(0x12)
-+	SIGTTIN     = syscall.Signal(0x15)
-+	SIGTTOU     = syscall.Signal(0x16)
-+	SIGURG      = syscall.Signal(0x10)
-+	SIGUSR1     = syscall.Signal(0x1e)
-+	SIGUSR2     = syscall.Signal(0x1f)
-+	SIGVIRT     = syscall.Signal(0x25)
-+	SIGVTALRM   = syscall.Signal(0x22)
-+	SIGWAITING  = syscall.Signal(0x27)
-+	SIGWINCH    = syscall.Signal(0x1c)
-+	SIGXCPU     = syscall.Signal(0x18)
-+	SIGXFSZ     = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "not owner"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "I/O error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "arg list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file number"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EWOULDBLOCK", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "not enough space"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "ENOTEMPTY", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "file table overflow"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "not a typewriter"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "deadlock condition if locked"},
-+	{46, "ENOTREADY", "device not ready"},
-+	{47, "EWRPROTECT", "write-protected media"},
-+	{48, "EFORMAT", "unformatted or incompatible media"},
-+	{49, "ENOLCK", "no locks available"},
-+	{50, "ENOCONNECT", "cannot Establish Connection"},
-+	{52, "ESTALE", "missing file or filesystem"},
-+	{53, "EDIST", "requests blocked by Administrator"},
-+	{55, "EINPROGRESS", "operation now in progress"},
-+	{56, "EALREADY", "operation already in progress"},
-+	{57, "ENOTSOCK", "socket operation on non-socket"},
-+	{58, "EDESTADDREQ", "destination address required"},
-+	{59, "EMSGSIZE", "message too long"},
-+	{60, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{61, "ENOPROTOOPT", "protocol not available"},
-+	{62, "EPROTONOSUPPORT", "protocol not supported"},
-+	{63, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{64, "EOPNOTSUPP", "operation not supported on socket"},
-+	{65, "EPFNOSUPPORT", "protocol family not supported"},
-+	{66, "EAFNOSUPPORT", "addr family not supported by protocol"},
-+	{67, "EADDRINUSE", "address already in use"},
-+	{68, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{69, "ENETDOWN", "network is down"},
-+	{70, "ENETUNREACH", "network is unreachable"},
-+	{71, "ENETRESET", "network dropped connection on reset"},
-+	{72, "ECONNABORTED", "software caused connection abort"},
-+	{73, "ECONNRESET", "connection reset by peer"},
-+	{74, "ENOBUFS", "no buffer space available"},
-+	{75, "EISCONN", "socket is already connected"},
-+	{76, "ENOTCONN", "socket is not connected"},
-+	{77, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{78, "ETIMEDOUT", "connection timed out"},
-+	{79, "ECONNREFUSED", "connection refused"},
-+	{80, "EHOSTDOWN", "host is down"},
-+	{81, "EHOSTUNREACH", "no route to host"},
-+	{82, "ERESTART", "restart the system call"},
-+	{83, "EPROCLIM", "too many processes"},
-+	{84, "EUSERS", "too many users"},
-+	{85, "ELOOP", "too many levels of symbolic links"},
-+	{86, "ENAMETOOLONG", "file name too long"},
-+	{88, "EDQUOT", "disk quota exceeded"},
-+	{89, "ECORRUPT", "invalid file system control data detected"},
-+	{90, "ESYSERROR", "for future use "},
-+	{93, "EREMOTE", "item is not local to host"},
-+	{94, "ENOTRECOVERABLE", "state not recoverable "},
-+	{95, "EOWNERDEAD", "previous owner died "},
-+	{109, "ENOSYS", "function not implemented"},
-+	{110, "EMEDIA", "media surface error"},
-+	{111, "ESOFT", "I/O completed, but needs relocation"},
-+	{112, "ENOATTR", "no attribute found"},
-+	{113, "ESAD", "security Authentication Denied"},
-+	{114, "ENOTRUST", "not a Trusted Program"},
-+	{115, "ETOOMANYREFS", "too many references: can't splice"},
-+	{116, "EILSEQ", "invalid wide character"},
-+	{117, "ECANCELED", "asynchronous I/O cancelled"},
-+	{118, "ENOSR", "out of STREAMS resources"},
-+	{119, "ETIME", "system call timed out"},
-+	{120, "EBADMSG", "next message has wrong type"},
-+	{121, "EPROTO", "error in protocol"},
-+	{122, "ENODATA", "no message on stream head read q"},
-+	{123, "ENOSTR", "fd not associated with a stream"},
-+	{124, "ENOTSUP", "unsupported attribute value"},
-+	{125, "EMULTIHOP", "multihop is not allowed"},
-+	{126, "ENOLINK", "the server link has been severed"},
-+	{127, "EOVERFLOW", "value too large to be stored in data type"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "IOT/Abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible/complete"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{27, "SIGMSG", "input device data"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGPWR", "power-failure"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPROF", "profiling timer expired"},
-+	{33, "SIGDANGER", "paging space low"},
-+	{34, "SIGVTALRM", "virtual timer expired"},
-+	{35, "SIGMIGRATE", "signal 35"},
-+	{36, "SIGPRE", "signal 36"},
-+	{37, "SIGVIRT", "signal 37"},
-+	{38, "SIGTALRM", "signal 38"},
-+	{39, "SIGWAITING", "signal 39"},
-+	{48, "SIGSYSERROR", "signal 48"},
-+	{49, "SIGCAPI", "signal 49"},
-+	{58, "SIGRECONFIG", "signal 58"},
-+	{59, "SIGCPUFAIL", "CPU Failure Predicted"},
-+	{60, "SIGKAP", "monitor mode granted"},
-+	{61, "SIGRETRACT", "monitor mode retracted"},
-+	{62, "SIGSOUND", "sound completed"},
-+	{63, "SIGSAK", "secure attention"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
-new file mode 100644
-index 00000000..4fc8d306
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
-@@ -0,0 +1,1385 @@
-+// mkerrors.sh -maix64
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc64,aix
-+
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -maix64 _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+	AF_APPLETALK                  = 0x10
-+	AF_BYPASS                     = 0x19
-+	AF_CCITT                      = 0xa
-+	AF_CHAOS                      = 0x5
-+	AF_DATAKIT                    = 0x9
-+	AF_DECnet                     = 0xc
-+	AF_DLI                        = 0xd
-+	AF_ECMA                       = 0x8
-+	AF_HYLINK                     = 0xf
-+	AF_IMPLINK                    = 0x3
-+	AF_INET                       = 0x2
-+	AF_INET6                      = 0x18
-+	AF_INTF                       = 0x14
-+	AF_ISO                        = 0x7
-+	AF_LAT                        = 0xe
-+	AF_LINK                       = 0x12
-+	AF_LOCAL                      = 0x1
-+	AF_MAX                        = 0x1e
-+	AF_NDD                        = 0x17
-+	AF_NETWARE                    = 0x16
-+	AF_NS                         = 0x6
-+	AF_OSI                        = 0x7
-+	AF_PUP                        = 0x4
-+	AF_RIF                        = 0x15
-+	AF_ROUTE                      = 0x11
-+	AF_SNA                        = 0xb
-+	AF_UNIX                       = 0x1
-+	AF_UNSPEC                     = 0x0
-+	ALTWERASE                     = 0x400000
-+	ARPHRD_802_3                  = 0x6
-+	ARPHRD_802_5                  = 0x6
-+	ARPHRD_ETHER                  = 0x1
-+	ARPHRD_FDDI                   = 0x1
-+	B0                            = 0x0
-+	B110                          = 0x3
-+	B1200                         = 0x9
-+	B134                          = 0x4
-+	B150                          = 0x5
-+	B1800                         = 0xa
-+	B19200                        = 0xe
-+	B200                          = 0x6
-+	B2400                         = 0xb
-+	B300                          = 0x7
-+	B38400                        = 0xf
-+	B4800                         = 0xc
-+	B50                           = 0x1
-+	B600                          = 0x8
-+	B75                           = 0x2
-+	B9600                         = 0xd
-+	BRKINT                        = 0x2
-+	BS0                           = 0x0
-+	BS1                           = 0x1000
-+	BSDLY                         = 0x1000
-+	CAP_AACCT                     = 0x6
-+	CAP_ARM_APPLICATION           = 0x5
-+	CAP_BYPASS_RAC_VMM            = 0x3
-+	CAP_CLEAR                     = 0x0
-+	CAP_CREDENTIALS               = 0x7
-+	CAP_EFFECTIVE                 = 0x1
-+	CAP_EWLM_AGENT                = 0x4
-+	CAP_INHERITABLE               = 0x2
-+	CAP_MAXIMUM                   = 0x7
-+	CAP_NUMA_ATTACH               = 0x2
-+	CAP_PERMITTED                 = 0x3
-+	CAP_PROPAGATE                 = 0x1
-+	CAP_PROPOGATE                 = 0x1
-+	CAP_SET                       = 0x1
-+	CBAUD                         = 0xf
-+	CFLUSH                        = 0xf
-+	CIBAUD                        = 0xf0000
-+	CLOCAL                        = 0x800
-+	CLOCK_MONOTONIC               = 0xa
-+	CLOCK_PROCESS_CPUTIME_ID      = 0xb
-+	CLOCK_REALTIME                = 0x9
-+	CLOCK_THREAD_CPUTIME_ID       = 0xc
-+	CR0                           = 0x0
-+	CR1                           = 0x100
-+	CR2                           = 0x200
-+	CR3                           = 0x300
-+	CRDLY                         = 0x300
-+	CREAD                         = 0x80
-+	CS5                           = 0x0
-+	CS6                           = 0x10
-+	CS7                           = 0x20
-+	CS8                           = 0x30
-+	CSIOCGIFCONF                  = -0x3fef96dc
-+	CSIZE                         = 0x30
-+	CSMAP_DIR                     = "/usr/lib/nls/csmap/"
-+	CSTART                        = '\021'
-+	CSTOP                         = '\023'
-+	CSTOPB                        = 0x40
-+	CSUSP                         = 0x1a
-+	ECHO                          = 0x8
-+	ECHOCTL                       = 0x20000
-+	ECHOE                         = 0x10
-+	ECHOK                         = 0x20
-+	ECHOKE                        = 0x80000
-+	ECHONL                        = 0x40
-+	ECHOPRT                       = 0x40000
-+	ECH_ICMPID                    = 0x2
-+	ETHERNET_CSMACD               = 0x6
-+	EVENP                         = 0x80
-+	EXCONTINUE                    = 0x0
-+	EXDLOK                        = 0x3
-+	EXIO                          = 0x2
-+	EXPGIO                        = 0x0
-+	EXRESUME                      = 0x2
-+	EXRETURN                      = 0x1
-+	EXSIG                         = 0x4
-+	EXTA                          = 0xe
-+	EXTB                          = 0xf
-+	EXTRAP                        = 0x1
-+	EYEC_RTENTRYA                 = 0x257274656e747241
-+	EYEC_RTENTRYF                 = 0x257274656e747246
-+	E_ACC                         = 0x0
-+	FD_CLOEXEC                    = 0x1
-+	FD_SETSIZE                    = 0xfffe
-+	FF0                           = 0x0
-+	FF1                           = 0x2000
-+	FFDLY                         = 0x2000
-+	FLUSHBAND                     = 0x40
-+	FLUSHLOW                      = 0x8
-+	FLUSHO                        = 0x100000
-+	FLUSHR                        = 0x1
-+	FLUSHRW                       = 0x3
-+	FLUSHW                        = 0x2
-+	F_CLOSEM                      = 0xa
-+	F_DUP2FD                      = 0xe
-+	F_DUPFD                       = 0x0
-+	F_GETFD                       = 0x1
-+	F_GETFL                       = 0x3
-+	F_GETLK                       = 0xb
-+	F_GETLK64                     = 0xb
-+	F_GETOWN                      = 0x8
-+	F_LOCK                        = 0x1
-+	F_OK                          = 0x0
-+	F_RDLCK                       = 0x1
-+	F_SETFD                       = 0x2
-+	F_SETFL                       = 0x4
-+	F_SETLK                       = 0xc
-+	F_SETLK64                     = 0xc
-+	F_SETLKW                      = 0xd
-+	F_SETLKW64                    = 0xd
-+	F_SETOWN                      = 0x9
-+	F_TEST                        = 0x3
-+	F_TLOCK                       = 0x2
-+	F_TSTLK                       = 0xf
-+	F_ULOCK                       = 0x0
-+	F_UNLCK                       = 0x3
-+	F_WRLCK                       = 0x2
-+	HUPCL                         = 0x400
-+	IBSHIFT                       = 0x10
-+	ICANON                        = 0x2
-+	ICMP6_FILTER                  = 0x26
-+	ICMP6_SEC_SEND_DEL            = 0x46
-+	ICMP6_SEC_SEND_GET            = 0x47
-+	ICMP6_SEC_SEND_SET            = 0x44
-+	ICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45
-+	ICRNL                         = 0x100
-+	IEXTEN                        = 0x200000
-+	IFA_FIRSTALIAS                = 0x2000
-+	IFA_ROUTE                     = 0x1
-+	IFF_64BIT                     = 0x4000000
-+	IFF_ALLCAST                   = 0x20000
-+	IFF_ALLMULTI                  = 0x200
-+	IFF_BPF                       = 0x8000000
-+	IFF_BRIDGE                    = 0x40000
-+	IFF_BROADCAST                 = 0x2
-+	IFF_CANTCHANGE                = 0x80c52
-+	IFF_CHECKSUM_OFFLOAD          = 0x10000000
-+	IFF_D1                        = 0x8000
-+	IFF_D2                        = 0x4000
-+	IFF_D3                        = 0x2000
-+	IFF_D4                        = 0x1000
-+	IFF_DEBUG                     = 0x4
-+	IFF_DEVHEALTH                 = 0x4000
-+	IFF_DO_HW_LOOPBACK            = 0x10000
-+	IFF_GROUP_ROUTING             = 0x2000000
-+	IFF_IFBUFMGT                  = 0x800000
-+	IFF_LINK0                     = 0x100000
-+	IFF_LINK1                     = 0x200000
-+	IFF_LINK2                     = 0x400000
-+	IFF_LOOPBACK                  = 0x8
-+	IFF_MULTICAST                 = 0x80000
-+	IFF_NOARP                     = 0x80
-+	IFF_NOECHO                    = 0x800
-+	IFF_NOTRAILERS                = 0x20
-+	IFF_OACTIVE                   = 0x400
-+	IFF_POINTOPOINT               = 0x10
-+	IFF_PROMISC                   = 0x100
-+	IFF_PSEG                      = 0x40000000
-+	IFF_RUNNING                   = 0x40
-+	IFF_SIMPLEX                   = 0x800
-+	IFF_SNAP                      = 0x8000
-+	IFF_TCP_DISABLE_CKSUM         = 0x20000000
-+	IFF_TCP_NOCKSUM               = 0x1000000
-+	IFF_UP                        = 0x1
-+	IFF_VIPA                      = 0x80000000
-+	IFNAMSIZ                      = 0x10
-+	IFO_FLUSH                     = 0x1
-+	IFT_1822                      = 0x2
-+	IFT_AAL5                      = 0x31
-+	IFT_ARCNET                    = 0x23
-+	IFT_ARCNETPLUS                = 0x24
-+	IFT_ATM                       = 0x25
-+	IFT_CEPT                      = 0x13
-+	IFT_CLUSTER                   = 0x3e
-+	IFT_DS3                       = 0x1e
-+	IFT_EON                       = 0x19
-+	IFT_ETHER                     = 0x6
-+	IFT_FCS                       = 0x3a
-+	IFT_FDDI                      = 0xf
-+	IFT_FRELAY                    = 0x20
-+	IFT_FRELAYDCE                 = 0x2c
-+	IFT_GIFTUNNEL                 = 0x3c
-+	IFT_HDH1822                   = 0x3
-+	IFT_HF                        = 0x3d
-+	IFT_HIPPI                     = 0x2f
-+	IFT_HSSI                      = 0x2e
-+	IFT_HY                        = 0xe
-+	IFT_IB                        = 0xc7
-+	IFT_ISDNBASIC                 = 0x14
-+	IFT_ISDNPRIMARY               = 0x15
-+	IFT_ISO88022LLC               = 0x29
-+	IFT_ISO88023                  = 0x7
-+	IFT_ISO88024                  = 0x8
-+	IFT_ISO88025                  = 0x9
-+	IFT_ISO88026                  = 0xa
-+	IFT_LAPB                      = 0x10
-+	IFT_LOCALTALK                 = 0x2a
-+	IFT_LOOP                      = 0x18
-+	IFT_MIOX25                    = 0x26
-+	IFT_MODEM                     = 0x30
-+	IFT_NSIP                      = 0x1b
-+	IFT_OTHER                     = 0x1
-+	IFT_P10                       = 0xc
-+	IFT_P80                       = 0xd
-+	IFT_PARA                      = 0x22
-+	IFT_PPP                       = 0x17
-+	IFT_PROPMUX                   = 0x36
-+	IFT_PROPVIRTUAL               = 0x35
-+	IFT_PTPSERIAL                 = 0x16
-+	IFT_RS232                     = 0x21
-+	IFT_SDLC                      = 0x11
-+	IFT_SIP                       = 0x1f
-+	IFT_SLIP                      = 0x1c
-+	IFT_SMDSDXI                   = 0x2b
-+	IFT_SMDSICIP                  = 0x34
-+	IFT_SN                        = 0x38
-+	IFT_SONET                     = 0x27
-+	IFT_SONETPATH                 = 0x32
-+	IFT_SONETVT                   = 0x33
-+	IFT_SP                        = 0x39
-+	IFT_STARLAN                   = 0xb
-+	IFT_T1                        = 0x12
-+	IFT_TUNNEL                    = 0x3b
-+	IFT_ULTRA                     = 0x1d
-+	IFT_V35                       = 0x2d
-+	IFT_VIPA                      = 0x37
-+	IFT_X25                       = 0x5
-+	IFT_X25DDN                    = 0x4
-+	IFT_X25PLE                    = 0x28
-+	IFT_XETHER                    = 0x1a
-+	IGNBRK                        = 0x1
-+	IGNCR                         = 0x80
-+	IGNPAR                        = 0x4
-+	IMAXBEL                       = 0x10000
-+	INLCR                         = 0x40
-+	INPCK                         = 0x10
-+	IN_CLASSA_HOST                = 0xffffff
-+	IN_CLASSA_MAX                 = 0x80
-+	IN_CLASSA_NET                 = 0xff000000
-+	IN_CLASSA_NSHIFT              = 0x18
-+	IN_CLASSB_HOST                = 0xffff
-+	IN_CLASSB_MAX                 = 0x10000
-+	IN_CLASSB_NET                 = 0xffff0000
-+	IN_CLASSB_NSHIFT              = 0x10
-+	IN_CLASSC_HOST                = 0xff
-+	IN_CLASSC_NET                 = 0xffffff00
-+	IN_CLASSC_NSHIFT              = 0x8
-+	IN_CLASSD_HOST                = 0xfffffff
-+	IN_CLASSD_NET                 = 0xf0000000
-+	IN_CLASSD_NSHIFT              = 0x1c
-+	IN_LOOPBACKNET                = 0x7f
-+	IN_USE                        = 0x1
-+	IPPROTO_AH                    = 0x33
-+	IPPROTO_BIP                   = 0x53
-+	IPPROTO_DSTOPTS               = 0x3c
-+	IPPROTO_EGP                   = 0x8
-+	IPPROTO_EON                   = 0x50
-+	IPPROTO_ESP                   = 0x32
-+	IPPROTO_FRAGMENT              = 0x2c
-+	IPPROTO_GGP                   = 0x3
-+	IPPROTO_GIF                   = 0x8c
-+	IPPROTO_GRE                   = 0x2f
-+	IPPROTO_HOPOPTS               = 0x0
-+	IPPROTO_ICMP                  = 0x1
-+	IPPROTO_ICMPV6                = 0x3a
-+	IPPROTO_IDP                   = 0x16
-+	IPPROTO_IGMP                  = 0x2
-+	IPPROTO_IP                    = 0x0
-+	IPPROTO_IPIP                  = 0x4
-+	IPPROTO_IPV6                  = 0x29
-+	IPPROTO_LOCAL                 = 0x3f
-+	IPPROTO_MAX                   = 0x100
-+	IPPROTO_MH                    = 0x87
-+	IPPROTO_NONE                  = 0x3b
-+	IPPROTO_PUP                   = 0xc
-+	IPPROTO_QOS                   = 0x2d
-+	IPPROTO_RAW                   = 0xff
-+	IPPROTO_ROUTING               = 0x2b
-+	IPPROTO_RSVP                  = 0x2e
-+	IPPROTO_SCTP                  = 0x84
-+	IPPROTO_TCP                   = 0x6
-+	IPPROTO_TP                    = 0x1d
-+	IPPROTO_UDP                   = 0x11
-+	IPV6_ADDRFORM                 = 0x16
-+	IPV6_ADDR_PREFERENCES         = 0x4a
-+	IPV6_ADD_MEMBERSHIP           = 0xc
-+	IPV6_AIXRAWSOCKET             = 0x39
-+	IPV6_CHECKSUM                 = 0x27
-+	IPV6_DONTFRAG                 = 0x2d
-+	IPV6_DROP_MEMBERSHIP          = 0xd
-+	IPV6_DSTOPTS                  = 0x36
-+	IPV6_FLOWINFO_FLOWLABEL       = 0xffffff
-+	IPV6_FLOWINFO_PRIFLOW         = 0xfffffff
-+	IPV6_FLOWINFO_PRIORITY        = 0xf000000
-+	IPV6_FLOWINFO_SRFLAG          = 0x10000000
-+	IPV6_FLOWINFO_VERSION         = 0xf0000000
-+	IPV6_HOPLIMIT                 = 0x28
-+	IPV6_HOPOPTS                  = 0x34
-+	IPV6_JOIN_GROUP               = 0xc
-+	IPV6_LEAVE_GROUP              = 0xd
-+	IPV6_MIPDSTOPTS               = 0x36
-+	IPV6_MULTICAST_HOPS           = 0xa
-+	IPV6_MULTICAST_IF             = 0x9
-+	IPV6_MULTICAST_LOOP           = 0xb
-+	IPV6_NEXTHOP                  = 0x30
-+	IPV6_NOPROBE                  = 0x1c
-+	IPV6_PATHMTU                  = 0x2e
-+	IPV6_PKTINFO                  = 0x21
-+	IPV6_PKTOPTIONS               = 0x24
-+	IPV6_PRIORITY_10              = 0xa000000
-+	IPV6_PRIORITY_11              = 0xb000000
-+	IPV6_PRIORITY_12              = 0xc000000
-+	IPV6_PRIORITY_13              = 0xd000000
-+	IPV6_PRIORITY_14              = 0xe000000
-+	IPV6_PRIORITY_15              = 0xf000000
-+	IPV6_PRIORITY_8               = 0x8000000
-+	IPV6_PRIORITY_9               = 0x9000000
-+	IPV6_PRIORITY_BULK            = 0x4000000
-+	IPV6_PRIORITY_CONTROL         = 0x7000000
-+	IPV6_PRIORITY_FILLER          = 0x1000000
-+	IPV6_PRIORITY_INTERACTIVE     = 0x6000000
-+	IPV6_PRIORITY_RESERVED1       = 0x3000000
-+	IPV6_PRIORITY_RESERVED2       = 0x5000000
-+	IPV6_PRIORITY_UNATTENDED      = 0x2000000
-+	IPV6_PRIORITY_UNCHARACTERIZED = 0x0
-+	IPV6_RECVDSTOPTS              = 0x38
-+	IPV6_RECVHOPLIMIT             = 0x29
-+	IPV6_RECVHOPOPTS              = 0x35
-+	IPV6_RECVHOPS                 = 0x22
-+	IPV6_RECVIF                   = 0x1e
-+	IPV6_RECVPATHMTU              = 0x2f
-+	IPV6_RECVPKTINFO              = 0x23
-+	IPV6_RECVRTHDR                = 0x33
-+	IPV6_RECVSRCRT                = 0x1d
-+	IPV6_RECVTCLASS               = 0x2a
-+	IPV6_RTHDR                    = 0x32
-+	IPV6_RTHDRDSTOPTS             = 0x37
-+	IPV6_RTHDR_TYPE_0             = 0x0
-+	IPV6_RTHDR_TYPE_2             = 0x2
-+	IPV6_SENDIF                   = 0x1f
-+	IPV6_SRFLAG_LOOSE             = 0x0
-+	IPV6_SRFLAG_STRICT            = 0x10000000
-+	IPV6_TCLASS                   = 0x2b
-+	IPV6_TOKEN_LENGTH             = 0x40
-+	IPV6_UNICAST_HOPS             = 0x4
-+	IPV6_USE_MIN_MTU              = 0x2c
-+	IPV6_V6ONLY                   = 0x25
-+	IPV6_VERSION                  = 0x60000000
-+	IP_ADDRFORM                   = 0x16
-+	IP_ADD_MEMBERSHIP             = 0xc
-+	IP_ADD_SOURCE_MEMBERSHIP      = 0x3c
-+	IP_BLOCK_SOURCE               = 0x3a
-+	IP_BROADCAST_IF               = 0x10
-+	IP_CACHE_LINE_SIZE            = 0x80
-+	IP_DEFAULT_MULTICAST_LOOP     = 0x1
-+	IP_DEFAULT_MULTICAST_TTL      = 0x1
-+	IP_DF                         = 0x4000
-+	IP_DHCPMODE                   = 0x11
-+	IP_DONTFRAG                   = 0x19
-+	IP_DROP_MEMBERSHIP            = 0xd
-+	IP_DROP_SOURCE_MEMBERSHIP     = 0x3d
-+	IP_FINDPMTU                   = 0x1a
-+	IP_HDRINCL                    = 0x2
-+	IP_INC_MEMBERSHIPS            = 0x14
-+	IP_INIT_MEMBERSHIP            = 0x14
-+	IP_MAXPACKET                  = 0xffff
-+	IP_MF                         = 0x2000
-+	IP_MSS                        = 0x240
-+	IP_MULTICAST_HOPS             = 0xa
-+	IP_MULTICAST_IF               = 0x9
-+	IP_MULTICAST_LOOP             = 0xb
-+	IP_MULTICAST_TTL              = 0xa
-+	IP_OPT                        = 0x1b
-+	IP_OPTIONS                    = 0x1
-+	IP_PMTUAGE                    = 0x1b
-+	IP_RECVDSTADDR                = 0x7
-+	IP_RECVIF                     = 0x14
-+	IP_RECVIFINFO                 = 0xf
-+	IP_RECVINTERFACE              = 0x20
-+	IP_RECVMACHDR                 = 0xe
-+	IP_RECVOPTS                   = 0x5
-+	IP_RECVRETOPTS                = 0x6
-+	IP_RECVTTL                    = 0x22
-+	IP_RETOPTS                    = 0x8
-+	IP_SOURCE_FILTER              = 0x48
-+	IP_TOS                        = 0x3
-+	IP_TTL                        = 0x4
-+	IP_UNBLOCK_SOURCE             = 0x3b
-+	IP_UNICAST_HOPS               = 0x4
-+	ISIG                          = 0x1
-+	ISTRIP                        = 0x20
-+	IUCLC                         = 0x800
-+	IXANY                         = 0x1000
-+	IXOFF                         = 0x400
-+	IXON                          = 0x200
-+	I_FLUSH                       = 0x20005305
-+	LNOFLSH                       = 0x8000
-+	LOCK_EX                       = 0x2
-+	LOCK_NB                       = 0x4
-+	LOCK_SH                       = 0x1
-+	LOCK_UN                       = 0x8
-+	MADV_DONTNEED                 = 0x4
-+	MADV_NORMAL                   = 0x0
-+	MADV_RANDOM                   = 0x1
-+	MADV_SEQUENTIAL               = 0x2
-+	MADV_SPACEAVAIL               = 0x5
-+	MADV_WILLNEED                 = 0x3
-+	MAP_ANON                      = 0x10
-+	MAP_ANONYMOUS                 = 0x10
-+	MAP_FILE                      = 0x0
-+	MAP_FIXED                     = 0x100
-+	MAP_PRIVATE                   = 0x2
-+	MAP_SHARED                    = 0x1
-+	MAP_TYPE                      = 0xf0
-+	MAP_VARIABLE                  = 0x0
-+	MCAST_BLOCK_SOURCE            = 0x40
-+	MCAST_EXCLUDE                 = 0x2
-+	MCAST_INCLUDE                 = 0x1
-+	MCAST_JOIN_GROUP              = 0x3e
-+	MCAST_JOIN_SOURCE_GROUP       = 0x42
-+	MCAST_LEAVE_GROUP             = 0x3f
-+	MCAST_LEAVE_SOURCE_GROUP      = 0x43
-+	MCAST_SOURCE_FILTER           = 0x49
-+	MCAST_UNBLOCK_SOURCE          = 0x41
-+	MCL_CURRENT                   = 0x100
-+	MCL_FUTURE                    = 0x200
-+	MSG_ANY                       = 0x4
-+	MSG_ARGEXT                    = 0x400
-+	MSG_BAND                      = 0x2
-+	MSG_COMPAT                    = 0x8000
-+	MSG_CTRUNC                    = 0x20
-+	MSG_DONTROUTE                 = 0x4
-+	MSG_EOR                       = 0x8
-+	MSG_HIPRI                     = 0x1
-+	MSG_MAXIOVLEN                 = 0x10
-+	MSG_MPEG2                     = 0x80
-+	MSG_NONBLOCK                  = 0x4000
-+	MSG_NOSIGNAL                  = 0x100
-+	MSG_OOB                       = 0x1
-+	MSG_PEEK                      = 0x2
-+	MSG_TRUNC                     = 0x10
-+	MSG_WAITALL                   = 0x40
-+	MSG_WAITFORONE                = 0x200
-+	MS_ASYNC                      = 0x10
-+	MS_EINTR                      = 0x80
-+	MS_INVALIDATE                 = 0x40
-+	MS_PER_SEC                    = 0x3e8
-+	MS_SYNC                       = 0x20
-+	NFDBITS                       = 0x40
-+	NL0                           = 0x0
-+	NL1                           = 0x4000
-+	NL2                           = 0x8000
-+	NL3                           = 0xc000
-+	NLDLY                         = 0x4000
-+	NOFLSH                        = 0x80
-+	NOFLUSH                       = 0x80000000
-+	OCRNL                         = 0x8
-+	OFDEL                         = 0x80
-+	OFILL                         = 0x40
-+	OLCUC                         = 0x2
-+	ONLCR                         = 0x4
-+	ONLRET                        = 0x20
-+	ONOCR                         = 0x10
-+	ONOEOT                        = 0x80000
-+	OPOST                         = 0x1
-+	OXTABS                        = 0x40000
-+	O_ACCMODE                     = 0x23
-+	O_APPEND                      = 0x8
-+	O_CIO                         = 0x80
-+	O_CIOR                        = 0x800000000
-+	O_CLOEXEC                     = 0x800000
-+	O_CREAT                       = 0x100
-+	O_DEFER                       = 0x2000
-+	O_DELAY                       = 0x4000
-+	O_DIRECT                      = 0x8000000
-+	O_DIRECTORY                   = 0x80000
-+	O_DSYNC                       = 0x400000
-+	O_EFSOFF                      = 0x400000000
-+	O_EFSON                       = 0x200000000
-+	O_EXCL                        = 0x400
-+	O_EXEC                        = 0x20
-+	O_LARGEFILE                   = 0x4000000
-+	O_NDELAY                      = 0x8000
-+	O_NOCACHE                     = 0x100000
-+	O_NOCTTY                      = 0x800
-+	O_NOFOLLOW                    = 0x1000000
-+	O_NONBLOCK                    = 0x4
-+	O_NONE                        = 0x3
-+	O_NSHARE                      = 0x10000
-+	O_RAW                         = 0x100000000
-+	O_RDONLY                      = 0x0
-+	O_RDWR                        = 0x2
-+	O_RSHARE                      = 0x1000
-+	O_RSYNC                       = 0x200000
-+	O_SEARCH                      = 0x20
-+	O_SNAPSHOT                    = 0x40
-+	O_SYNC                        = 0x10
-+	O_TRUNC                       = 0x200
-+	O_TTY_INIT                    = 0x0
-+	O_WRONLY                      = 0x1
-+	PARENB                        = 0x100
-+	PAREXT                        = 0x100000
-+	PARMRK                        = 0x8
-+	PARODD                        = 0x200
-+	PENDIN                        = 0x20000000
-+	PRIO_PGRP                     = 0x1
-+	PRIO_PROCESS                  = 0x0
-+	PRIO_USER                     = 0x2
-+	PROT_EXEC                     = 0x4
-+	PROT_NONE                     = 0x0
-+	PROT_READ                     = 0x1
-+	PROT_WRITE                    = 0x2
-+	PR_64BIT                      = 0x20
-+	PR_ADDR                       = 0x2
-+	PR_ARGEXT                     = 0x400
-+	PR_ATOMIC                     = 0x1
-+	PR_CONNREQUIRED               = 0x4
-+	PR_FASTHZ                     = 0x5
-+	PR_INP                        = 0x40
-+	PR_INTRLEVEL                  = 0x8000
-+	PR_MLS                        = 0x100
-+	PR_MLS_1_LABEL                = 0x200
-+	PR_NOEOR                      = 0x4000
-+	PR_RIGHTS                     = 0x10
-+	PR_SLOWHZ                     = 0x2
-+	PR_WANTRCVD                   = 0x8
-+	RLIMIT_AS                     = 0x6
-+	RLIMIT_CORE                   = 0x4
-+	RLIMIT_CPU                    = 0x0
-+	RLIMIT_DATA                   = 0x2
-+	RLIMIT_FSIZE                  = 0x1
-+	RLIMIT_NOFILE                 = 0x7
-+	RLIMIT_NPROC                  = 0x9
-+	RLIMIT_RSS                    = 0x5
-+	RLIMIT_STACK                  = 0x3
-+	RLIM_INFINITY                 = 0x7fffffffffffffff
-+	RTAX_AUTHOR                   = 0x6
-+	RTAX_BRD                      = 0x7
-+	RTAX_DST                      = 0x0
-+	RTAX_GATEWAY                  = 0x1
-+	RTAX_GENMASK                  = 0x3
-+	RTAX_IFA                      = 0x5
-+	RTAX_IFP                      = 0x4
-+	RTAX_MAX                      = 0x8
-+	RTAX_NETMASK                  = 0x2
-+	RTA_AUTHOR                    = 0x40
-+	RTA_BRD                       = 0x80
-+	RTA_DOWNSTREAM                = 0x100
-+	RTA_DST                       = 0x1
-+	RTA_GATEWAY                   = 0x2
-+	RTA_GENMASK                   = 0x8
-+	RTA_IFA                       = 0x20
-+	RTA_IFP                       = 0x10
-+	RTA_NETMASK                   = 0x4
-+	RTC_IA64                      = 0x3
-+	RTC_POWER                     = 0x1
-+	RTC_POWER_PC                  = 0x2
-+	RTF_ACTIVE_DGD                = 0x1000000
-+	RTF_BCE                       = 0x80000
-+	RTF_BLACKHOLE                 = 0x1000
-+	RTF_BROADCAST                 = 0x400000
-+	RTF_BUL                       = 0x2000
-+	RTF_CLONE                     = 0x10000
-+	RTF_CLONED                    = 0x20000
-+	RTF_CLONING                   = 0x100
-+	RTF_DONE                      = 0x40
-+	RTF_DYNAMIC                   = 0x10
-+	RTF_FREE_IN_PROG              = 0x4000000
-+	RTF_GATEWAY                   = 0x2
-+	RTF_HOST                      = 0x4
-+	RTF_LLINFO                    = 0x400
-+	RTF_LOCAL                     = 0x200000
-+	RTF_MASK                      = 0x80
-+	RTF_MODIFIED                  = 0x20
-+	RTF_MULTICAST                 = 0x800000
-+	RTF_PERMANENT6                = 0x8000000
-+	RTF_PINNED                    = 0x100000
-+	RTF_PROTO1                    = 0x8000
-+	RTF_PROTO2                    = 0x4000
-+	RTF_PROTO3                    = 0x40000
-+	RTF_REJECT                    = 0x8
-+	RTF_SMALLMTU                  = 0x40000
-+	RTF_STATIC                    = 0x800
-+	RTF_STOPSRCH                  = 0x2000000
-+	RTF_UNREACHABLE               = 0x10000000
-+	RTF_UP                        = 0x1
-+	RTF_XRESOLVE                  = 0x200
-+	RTM_ADD                       = 0x1
-+	RTM_CHANGE                    = 0x3
-+	RTM_DELADDR                   = 0xd
-+	RTM_DELETE                    = 0x2
-+	RTM_EXPIRE                    = 0xf
-+	RTM_GET                       = 0x4
-+	RTM_GETNEXT                   = 0x11
-+	RTM_IFINFO                    = 0xe
-+	RTM_LOCK                      = 0x8
-+	RTM_LOSING                    = 0x5
-+	RTM_MISS                      = 0x7
-+	RTM_NEWADDR                   = 0xc
-+	RTM_OLDADD                    = 0x9
-+	RTM_OLDDEL                    = 0xa
-+	RTM_REDIRECT                  = 0x6
-+	RTM_RESOLVE                   = 0xb
-+	RTM_RTLOST                    = 0x10
-+	RTM_RTTUNIT                   = 0xf4240
-+	RTM_SAMEADDR                  = 0x12
-+	RTM_SET                       = 0x13
-+	RTM_VERSION                   = 0x2
-+	RTM_VERSION_GR                = 0x4
-+	RTM_VERSION_GR_COMPAT         = 0x3
-+	RTM_VERSION_POLICY            = 0x5
-+	RTM_VERSION_POLICY_EXT        = 0x6
-+	RTM_VERSION_POLICY_PRFN       = 0x7
-+	RTV_EXPIRE                    = 0x4
-+	RTV_HOPCOUNT                  = 0x2
-+	RTV_MTU                       = 0x1
-+	RTV_RPIPE                     = 0x8
-+	RTV_RTT                       = 0x40
-+	RTV_RTTVAR                    = 0x80
-+	RTV_SPIPE                     = 0x10
-+	RTV_SSTHRESH                  = 0x20
-+	RUSAGE_CHILDREN               = -0x1
-+	RUSAGE_SELF                   = 0x0
-+	RUSAGE_THREAD                 = 0x1
-+	SCM_RIGHTS                    = 0x1
-+	SHUT_RD                       = 0x0
-+	SHUT_RDWR                     = 0x2
-+	SHUT_WR                       = 0x1
-+	SIGMAX64                      = 0xff
-+	SIGQUEUE_MAX                  = 0x20
-+	SIOCADDIFVIPA                 = 0x20006942
-+	SIOCADDMTU                    = -0x7ffb9690
-+	SIOCADDMULTI                  = -0x7fdf96cf
-+	SIOCADDNETID                  = -0x7fd796a9
-+	SIOCADDRT                     = -0x7fc78df6
-+	SIOCAIFADDR                   = -0x7fbf96e6
-+	SIOCATMARK                    = 0x40047307
-+	SIOCDARP                      = -0x7fb396e0
-+	SIOCDELIFVIPA                 = 0x20006943
-+	SIOCDELMTU                    = -0x7ffb968f
-+	SIOCDELMULTI                  = -0x7fdf96ce
-+	SIOCDELPMTU                   = -0x7fd78ff6
-+	SIOCDELRT                     = -0x7fc78df5
-+	SIOCDIFADDR                   = -0x7fd796e7
-+	SIOCDNETOPT                   = -0x3ffe9680
-+	SIOCDX25XLATE                 = -0x7fd7969b
-+	SIOCFIFADDR                   = -0x7fdf966d
-+	SIOCGARP                      = -0x3fb396da
-+	SIOCGETMTUS                   = 0x2000696f
-+	SIOCGETSGCNT                  = -0x3feb8acc
-+	SIOCGETVIFCNT                 = -0x3feb8acd
-+	SIOCGHIWAT                    = 0x40047301
-+	SIOCGIFADDR                   = -0x3fd796df
-+	SIOCGIFADDRS                  = 0x2000698c
-+	SIOCGIFBAUDRATE               = -0x3fdf9669
-+	SIOCGIFBRDADDR                = -0x3fd796dd
-+	SIOCGIFCONF                   = -0x3fef96bb
-+	SIOCGIFCONFGLOB               = -0x3fef9670
-+	SIOCGIFDSTADDR                = -0x3fd796de
-+	SIOCGIFFLAGS                  = -0x3fd796ef
-+	SIOCGIFGIDLIST                = 0x20006968
-+	SIOCGIFHWADDR                 = -0x3fab966b
-+	SIOCGIFMETRIC                 = -0x3fd796e9
-+	SIOCGIFMTU                    = -0x3fd796aa
-+	SIOCGIFNETMASK                = -0x3fd796db
-+	SIOCGIFOPTIONS                = -0x3fd796d6
-+	SIOCGISNO                     = -0x3fd79695
-+	SIOCGLOADF                    = -0x3ffb967e
-+	SIOCGLOWAT                    = 0x40047303
-+	SIOCGNETOPT                   = -0x3ffe96a5
-+	SIOCGNETOPT1                  = -0x3fdf967f
-+	SIOCGNMTUS                    = 0x2000696e
-+	SIOCGPGRP                     = 0x40047309
-+	SIOCGSIZIFCONF                = 0x4004696a
-+	SIOCGSRCFILTER                = -0x3fe796cb
-+	SIOCGTUNEPHASE                = -0x3ffb9676
-+	SIOCGX25XLATE                 = -0x3fd7969c
-+	SIOCIFATTACH                  = -0x7fdf9699
-+	SIOCIFDETACH                  = -0x7fdf969a
-+	SIOCIFGETPKEY                 = -0x7fdf969b
-+	SIOCIF_ATM_DARP               = -0x7fdf9683
-+	SIOCIF_ATM_DUMPARP            = -0x7fdf9685
-+	SIOCIF_ATM_GARP               = -0x7fdf9682
-+	SIOCIF_ATM_IDLE               = -0x7fdf9686
-+	SIOCIF_ATM_SARP               = -0x7fdf9681
-+	SIOCIF_ATM_SNMPARP            = -0x7fdf9687
-+	SIOCIF_ATM_SVC                = -0x7fdf9684
-+	SIOCIF_ATM_UBR                = -0x7fdf9688
-+	SIOCIF_DEVHEALTH              = -0x7ffb966c
-+	SIOCIF_IB_ARP_INCOMP          = -0x7fdf9677
-+	SIOCIF_IB_ARP_TIMER           = -0x7fdf9678
-+	SIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f
-+	SIOCIF_IB_DEL_ARP             = -0x7fdf967f
-+	SIOCIF_IB_DEL_PINFO           = -0x3fdf9670
-+	SIOCIF_IB_DUMP_ARP            = -0x7fdf9680
-+	SIOCIF_IB_GET_ARP             = -0x7fdf967e
-+	SIOCIF_IB_GET_INFO            = -0x3f879675
-+	SIOCIF_IB_GET_STATS           = -0x3f879672
-+	SIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a
-+	SIOCIF_IB_RESET_STATS         = -0x3f879671
-+	SIOCIF_IB_RESIZE_CQ           = -0x7fdf9679
-+	SIOCIF_IB_SET_ARP             = -0x7fdf967d
-+	SIOCIF_IB_SET_PKEY            = -0x7fdf967c
-+	SIOCIF_IB_SET_PORT            = -0x7fdf967b
-+	SIOCIF_IB_SET_QKEY            = -0x7fdf9676
-+	SIOCIF_IB_SET_QSIZE           = -0x7fdf967a
-+	SIOCLISTIFVIPA                = 0x20006944
-+	SIOCSARP                      = -0x7fb396e2
-+	SIOCSHIWAT                    = 0xffffffff80047300
-+	SIOCSIFADDR                   = -0x7fd796f4
-+	SIOCSIFADDRORI                = -0x7fdb9673
-+	SIOCSIFBRDADDR                = -0x7fd796ed
-+	SIOCSIFDSTADDR                = -0x7fd796f2
-+	SIOCSIFFLAGS                  = -0x7fd796f0
-+	SIOCSIFGIDLIST                = 0x20006969
-+	SIOCSIFMETRIC                 = -0x7fd796e8
-+	SIOCSIFMTU                    = -0x7fd796a8
-+	SIOCSIFNETDUMP                = -0x7fd796e4
-+	SIOCSIFNETMASK                = -0x7fd796ea
-+	SIOCSIFOPTIONS                = -0x7fd796d7
-+	SIOCSIFSUBCHAN                = -0x7fd796e5
-+	SIOCSISNO                     = -0x7fd79694
-+	SIOCSLOADF                    = -0x3ffb967d
-+	SIOCSLOWAT                    = 0xffffffff80047302
-+	SIOCSNETOPT                   = -0x7ffe96a6
-+	SIOCSPGRP                     = 0xffffffff80047308
-+	SIOCSX25XLATE                 = -0x7fd7969d
-+	SOCK_CONN_DGRAM               = 0x6
-+	SOCK_DGRAM                    = 0x2
-+	SOCK_RAW                      = 0x3
-+	SOCK_RDM                      = 0x4
-+	SOCK_SEQPACKET                = 0x5
-+	SOCK_STREAM                   = 0x1
-+	SOL_SOCKET                    = 0xffff
-+	SOMAXCONN                     = 0x400
-+	SO_ACCEPTCONN                 = 0x2
-+	SO_AUDIT                      = 0x8000
-+	SO_BROADCAST                  = 0x20
-+	SO_CKSUMRECV                  = 0x800
-+	SO_DEBUG                      = 0x1
-+	SO_DONTROUTE                  = 0x10
-+	SO_ERROR                      = 0x1007
-+	SO_KEEPALIVE                  = 0x8
-+	SO_KERNACCEPT                 = 0x2000
-+	SO_LINGER                     = 0x80
-+	SO_NOMULTIPATH                = 0x4000
-+	SO_NOREUSEADDR                = 0x1000
-+	SO_OOBINLINE                  = 0x100
-+	SO_PEERID                     = 0x1009
-+	SO_RCVBUF                     = 0x1002
-+	SO_RCVLOWAT                   = 0x1004
-+	SO_RCVTIMEO                   = 0x1006
-+	SO_REUSEADDR                  = 0x4
-+	SO_REUSEPORT                  = 0x200
-+	SO_SNDBUF                     = 0x1001
-+	SO_SNDLOWAT                   = 0x1003
-+	SO_SNDTIMEO                   = 0x1005
-+	SO_TIMESTAMPNS                = 0x100a
-+	SO_TYPE                       = 0x1008
-+	SO_USELOOPBACK                = 0x40
-+	SO_USE_IFBUFS                 = 0x400
-+	S_BANDURG                     = 0x400
-+	S_EMODFMT                     = 0x3c000000
-+	S_ENFMT                       = 0x400
-+	S_ERROR                       = 0x100
-+	S_HANGUP                      = 0x200
-+	S_HIPRI                       = 0x2
-+	S_ICRYPTO                     = 0x80000
-+	S_IEXEC                       = 0x40
-+	S_IFBLK                       = 0x6000
-+	S_IFCHR                       = 0x2000
-+	S_IFDIR                       = 0x4000
-+	S_IFIFO                       = 0x1000
-+	S_IFJOURNAL                   = 0x10000
-+	S_IFLNK                       = 0xa000
-+	S_IFMPX                       = 0x2200
-+	S_IFMT                        = 0xf000
-+	S_IFPDIR                      = 0x4000000
-+	S_IFPSDIR                     = 0x8000000
-+	S_IFPSSDIR                    = 0xc000000
-+	S_IFREG                       = 0x8000
-+	S_IFSOCK                      = 0xc000
-+	S_IFSYSEA                     = 0x30000000
-+	S_INPUT                       = 0x1
-+	S_IREAD                       = 0x100
-+	S_IRGRP                       = 0x20
-+	S_IROTH                       = 0x4
-+	S_IRUSR                       = 0x100
-+	S_IRWXG                       = 0x38
-+	S_IRWXO                       = 0x7
-+	S_IRWXU                       = 0x1c0
-+	S_ISGID                       = 0x400
-+	S_ISUID                       = 0x800
-+	S_ISVTX                       = 0x200
-+	S_ITCB                        = 0x1000000
-+	S_ITP                         = 0x800000
-+	S_IWGRP                       = 0x10
-+	S_IWOTH                       = 0x2
-+	S_IWRITE                      = 0x80
-+	S_IWUSR                       = 0x80
-+	S_IXACL                       = 0x2000000
-+	S_IXATTR                      = 0x40000
-+	S_IXGRP                       = 0x8
-+	S_IXINTERFACE                 = 0x100000
-+	S_IXMOD                       = 0x40000000
-+	S_IXOTH                       = 0x1
-+	S_IXUSR                       = 0x40
-+	S_MSG                         = 0x8
-+	S_OUTPUT                      = 0x4
-+	S_RDBAND                      = 0x20
-+	S_RDNORM                      = 0x10
-+	S_RESERVED1                   = 0x20000
-+	S_RESERVED2                   = 0x200000
-+	S_RESERVED3                   = 0x400000
-+	S_RESERVED4                   = 0x80000000
-+	S_RESFMT1                     = 0x10000000
-+	S_RESFMT10                    = 0x34000000
-+	S_RESFMT11                    = 0x38000000
-+	S_RESFMT12                    = 0x3c000000
-+	S_RESFMT2                     = 0x14000000
-+	S_RESFMT3                     = 0x18000000
-+	S_RESFMT4                     = 0x1c000000
-+	S_RESFMT5                     = 0x20000000
-+	S_RESFMT6                     = 0x24000000
-+	S_RESFMT7                     = 0x28000000
-+	S_RESFMT8                     = 0x2c000000
-+	S_WRBAND                      = 0x80
-+	S_WRNORM                      = 0x40
-+	TAB0                          = 0x0
-+	TAB1                          = 0x400
-+	TAB2                          = 0x800
-+	TAB3                          = 0xc00
-+	TABDLY                        = 0xc00
-+	TCFLSH                        = 0x540c
-+	TCGETA                        = 0x5405
-+	TCGETS                        = 0x5401
-+	TCIFLUSH                      = 0x0
-+	TCIOFF                        = 0x2
-+	TCIOFLUSH                     = 0x2
-+	TCION                         = 0x3
-+	TCOFLUSH                      = 0x1
-+	TCOOFF                        = 0x0
-+	TCOON                         = 0x1
-+	TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800
-+	TCP_ACLADD                    = 0x23
-+	TCP_ACLBIND                   = 0x26
-+	TCP_ACLCLEAR                  = 0x22
-+	TCP_ACLDEL                    = 0x24
-+	TCP_ACLDENY                   = 0x8
-+	TCP_ACLFLUSH                  = 0x21
-+	TCP_ACLGID                    = 0x1
-+	TCP_ACLLS                     = 0x25
-+	TCP_ACLSUBNET                 = 0x4
-+	TCP_ACLUID                    = 0x2
-+	TCP_CWND_DF                   = 0x16
-+	TCP_CWND_IF                   = 0x15
-+	TCP_DELAY_ACK_FIN             = 0x2
-+	TCP_DELAY_ACK_SYN             = 0x1
-+	TCP_FASTNAME                  = 0x101080a
-+	TCP_KEEPCNT                   = 0x13
-+	TCP_KEEPIDLE                  = 0x11
-+	TCP_KEEPINTVL                 = 0x12
-+	TCP_LSPRIV                    = 0x29
-+	TCP_LUID                      = 0x20
-+	TCP_MAXBURST                  = 0x8
-+	TCP_MAXDF                     = 0x64
-+	TCP_MAXIF                     = 0x64
-+	TCP_MAXSEG                    = 0x2
-+	TCP_MAXWIN                    = 0xffff
-+	TCP_MAXWINDOWSCALE            = 0xe
-+	TCP_MAX_SACK                  = 0x4
-+	TCP_MSS                       = 0x5b4
-+	TCP_NODELAY                   = 0x1
-+	TCP_NODELAYACK                = 0x14
-+	TCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19
-+	TCP_NOREDUCE_CWND_IN_FRXMT    = 0x18
-+	TCP_NOTENTER_SSTART           = 0x17
-+	TCP_OPT                       = 0x19
-+	TCP_RFC1323                   = 0x4
-+	TCP_SETPRIV                   = 0x27
-+	TCP_STDURG                    = 0x10
-+	TCP_TIMESTAMP_OPTLEN          = 0xc
-+	TCP_UNSETPRIV                 = 0x28
-+	TCSAFLUSH                     = 0x2
-+	TCSBRK                        = 0x5409
-+	TCSETA                        = 0x5406
-+	TCSETAF                       = 0x5408
-+	TCSETAW                       = 0x5407
-+	TCSETS                        = 0x5402
-+	TCSETSF                       = 0x5404
-+	TCSETSW                       = 0x5403
-+	TCXONC                        = 0x540b
-+	TIMER_ABSTIME                 = 0x3e7
-+	TIMER_MAX                     = 0x20
-+	TIOC                          = 0x5400
-+	TIOCCBRK                      = 0x2000747a
-+	TIOCCDTR                      = 0x20007478
-+	TIOCCONS                      = 0xffffffff80047462
-+	TIOCEXCL                      = 0x2000740d
-+	TIOCFLUSH                     = 0xffffffff80047410
-+	TIOCGETC                      = 0x40067412
-+	TIOCGETD                      = 0x40047400
-+	TIOCGETP                      = 0x40067408
-+	TIOCGLTC                      = 0x40067474
-+	TIOCGPGRP                     = 0x40047477
-+	TIOCGSID                      = 0x40047448
-+	TIOCGSIZE                     = 0x40087468
-+	TIOCGWINSZ                    = 0x40087468
-+	TIOCHPCL                      = 0x20007402
-+	TIOCLBIC                      = 0xffffffff8004747e
-+	TIOCLBIS                      = 0xffffffff8004747f
-+	TIOCLGET                      = 0x4004747c
-+	TIOCLSET                      = 0xffffffff8004747d
-+	TIOCMBIC                      = 0xffffffff8004746b
-+	TIOCMBIS                      = 0xffffffff8004746c
-+	TIOCMGET                      = 0x4004746a
-+	TIOCMIWAIT                    = 0xffffffff80047464
-+	TIOCMODG                      = 0x40047403
-+	TIOCMODS                      = 0xffffffff80047404
-+	TIOCMSET                      = 0xffffffff8004746d
-+	TIOCM_CAR                     = 0x40
-+	TIOCM_CD                      = 0x40
-+	TIOCM_CTS                     = 0x20
-+	TIOCM_DSR                     = 0x100
-+	TIOCM_DTR                     = 0x2
-+	TIOCM_LE                      = 0x1
-+	TIOCM_RI                      = 0x80
-+	TIOCM_RNG                     = 0x80
-+	TIOCM_RTS                     = 0x4
-+	TIOCM_SR                      = 0x10
-+	TIOCM_ST                      = 0x8
-+	TIOCNOTTY                     = 0x20007471
-+	TIOCNXCL                      = 0x2000740e
-+	TIOCOUTQ                      = 0x40047473
-+	TIOCPKT                       = 0xffffffff80047470
-+	TIOCPKT_DATA                  = 0x0
-+	TIOCPKT_DOSTOP                = 0x20
-+	TIOCPKT_FLUSHREAD             = 0x1
-+	TIOCPKT_FLUSHWRITE            = 0x2
-+	TIOCPKT_NOSTOP                = 0x10
-+	TIOCPKT_START                 = 0x8
-+	TIOCPKT_STOP                  = 0x4
-+	TIOCREMOTE                    = 0xffffffff80047469
-+	TIOCSBRK                      = 0x2000747b
-+	TIOCSDTR                      = 0x20007479
-+	TIOCSETC                      = 0xffffffff80067411
-+	TIOCSETD                      = 0xffffffff80047401
-+	TIOCSETN                      = 0xffffffff8006740a
-+	TIOCSETP                      = 0xffffffff80067409
-+	TIOCSLTC                      = 0xffffffff80067475
-+	TIOCSPGRP                     = 0xffffffff80047476
-+	TIOCSSIZE                     = 0xffffffff80087467
-+	TIOCSTART                     = 0x2000746e
-+	TIOCSTI                       = 0xffffffff80017472
-+	TIOCSTOP                      = 0x2000746f
-+	TIOCSWINSZ                    = 0xffffffff80087467
-+	TIOCUCNTL                     = 0xffffffff80047466
-+	TOSTOP                        = 0x10000
-+	UTIME_NOW                     = -0x2
-+	UTIME_OMIT                    = -0x3
-+	VDISCRD                       = 0xc
-+	VDSUSP                        = 0xa
-+	VEOF                          = 0x4
-+	VEOL                          = 0x5
-+	VEOL2                         = 0x6
-+	VERASE                        = 0x2
-+	VINTR                         = 0x0
-+	VKILL                         = 0x3
-+	VLNEXT                        = 0xe
-+	VMIN                          = 0x4
-+	VQUIT                         = 0x1
-+	VREPRINT                      = 0xb
-+	VSTART                        = 0x7
-+	VSTOP                         = 0x8
-+	VSTRT                         = 0x7
-+	VSUSP                         = 0x9
-+	VT0                           = 0x0
-+	VT1                           = 0x8000
-+	VTDELAY                       = 0x2000
-+	VTDLY                         = 0x8000
-+	VTIME                         = 0x5
-+	VWERSE                        = 0xd
-+	WPARSTART                     = 0x1
-+	WPARSTOP                      = 0x2
-+	WPARTTYNAME                   = "Global"
-+	XCASE                         = 0x4
-+	XTABS                         = 0xc00
-+	_FDATAFLUSH                   = 0x2000000000
-+)
-+
-+// Errors
-+const (
-+	E2BIG           = syscall.Errno(0x7)
-+	EACCES          = syscall.Errno(0xd)
-+	EADDRINUSE      = syscall.Errno(0x43)
-+	EADDRNOTAVAIL   = syscall.Errno(0x44)
-+	EAFNOSUPPORT    = syscall.Errno(0x42)
-+	EAGAIN          = syscall.Errno(0xb)
-+	EALREADY        = syscall.Errno(0x38)
-+	EBADF           = syscall.Errno(0x9)
-+	EBADMSG         = syscall.Errno(0x78)
-+	EBUSY           = syscall.Errno(0x10)
-+	ECANCELED       = syscall.Errno(0x75)
-+	ECHILD          = syscall.Errno(0xa)
-+	ECHRNG          = syscall.Errno(0x25)
-+	ECLONEME        = syscall.Errno(0x52)
-+	ECONNABORTED    = syscall.Errno(0x48)
-+	ECONNREFUSED    = syscall.Errno(0x4f)
-+	ECONNRESET      = syscall.Errno(0x49)
-+	ECORRUPT        = syscall.Errno(0x59)
-+	EDEADLK         = syscall.Errno(0x2d)
-+	EDESTADDREQ     = syscall.Errno(0x3a)
-+	EDESTADDRREQ    = syscall.Errno(0x3a)
-+	EDIST           = syscall.Errno(0x35)
-+	EDOM            = syscall.Errno(0x21)
-+	EDQUOT          = syscall.Errno(0x58)
-+	EEXIST          = syscall.Errno(0x11)
-+	EFAULT          = syscall.Errno(0xe)
-+	EFBIG           = syscall.Errno(0x1b)
-+	EFORMAT         = syscall.Errno(0x30)
-+	EHOSTDOWN       = syscall.Errno(0x50)
-+	EHOSTUNREACH    = syscall.Errno(0x51)
-+	EIDRM           = syscall.Errno(0x24)
-+	EILSEQ          = syscall.Errno(0x74)
-+	EINPROGRESS     = syscall.Errno(0x37)
-+	EINTR           = syscall.Errno(0x4)
-+	EINVAL          = syscall.Errno(0x16)
-+	EIO             = syscall.Errno(0x5)
-+	EISCONN         = syscall.Errno(0x4b)
-+	EISDIR          = syscall.Errno(0x15)
-+	EL2HLT          = syscall.Errno(0x2c)
-+	EL2NSYNC        = syscall.Errno(0x26)
-+	EL3HLT          = syscall.Errno(0x27)
-+	EL3RST          = syscall.Errno(0x28)
-+	ELNRNG          = syscall.Errno(0x29)
-+	ELOOP           = syscall.Errno(0x55)
-+	EMEDIA          = syscall.Errno(0x6e)
-+	EMFILE          = syscall.Errno(0x18)
-+	EMLINK          = syscall.Errno(0x1f)
-+	EMSGSIZE        = syscall.Errno(0x3b)
-+	EMULTIHOP       = syscall.Errno(0x7d)
-+	ENAMETOOLONG    = syscall.Errno(0x56)
-+	ENETDOWN        = syscall.Errno(0x45)
-+	ENETRESET       = syscall.Errno(0x47)
-+	ENETUNREACH     = syscall.Errno(0x46)
-+	ENFILE          = syscall.Errno(0x17)
-+	ENOATTR         = syscall.Errno(0x70)
-+	ENOBUFS         = syscall.Errno(0x4a)
-+	ENOCONNECT      = syscall.Errno(0x32)
-+	ENOCSI          = syscall.Errno(0x2b)
-+	ENODATA         = syscall.Errno(0x7a)
-+	ENODEV          = syscall.Errno(0x13)
-+	ENOENT          = syscall.Errno(0x2)
-+	ENOEXEC         = syscall.Errno(0x8)
-+	ENOLCK          = syscall.Errno(0x31)
-+	ENOLINK         = syscall.Errno(0x7e)
-+	ENOMEM          = syscall.Errno(0xc)
-+	ENOMSG          = syscall.Errno(0x23)
-+	ENOPROTOOPT     = syscall.Errno(0x3d)
-+	ENOSPC          = syscall.Errno(0x1c)
-+	ENOSR           = syscall.Errno(0x76)
-+	ENOSTR          = syscall.Errno(0x7b)
-+	ENOSYS          = syscall.Errno(0x6d)
-+	ENOTBLK         = syscall.Errno(0xf)
-+	ENOTCONN        = syscall.Errno(0x4c)
-+	ENOTDIR         = syscall.Errno(0x14)
-+	ENOTEMPTY       = syscall.Errno(0x11)
-+	ENOTREADY       = syscall.Errno(0x2e)
-+	ENOTRECOVERABLE = syscall.Errno(0x5e)
-+	ENOTRUST        = syscall.Errno(0x72)
-+	ENOTSOCK        = syscall.Errno(0x39)
-+	ENOTSUP         = syscall.Errno(0x7c)
-+	ENOTTY          = syscall.Errno(0x19)
-+	ENXIO           = syscall.Errno(0x6)
-+	EOPNOTSUPP      = syscall.Errno(0x40)
-+	EOVERFLOW       = syscall.Errno(0x7f)
-+	EOWNERDEAD      = syscall.Errno(0x5f)
-+	EPERM           = syscall.Errno(0x1)
-+	EPFNOSUPPORT    = syscall.Errno(0x41)
-+	EPIPE           = syscall.Errno(0x20)
-+	EPROCLIM        = syscall.Errno(0x53)
-+	EPROTO          = syscall.Errno(0x79)
-+	EPROTONOSUPPORT = syscall.Errno(0x3e)
-+	EPROTOTYPE      = syscall.Errno(0x3c)
-+	ERANGE          = syscall.Errno(0x22)
-+	EREMOTE         = syscall.Errno(0x5d)
-+	ERESTART        = syscall.Errno(0x52)
-+	EROFS           = syscall.Errno(0x1e)
-+	ESAD            = syscall.Errno(0x71)
-+	ESHUTDOWN       = syscall.Errno(0x4d)
-+	ESOCKTNOSUPPORT = syscall.Errno(0x3f)
-+	ESOFT           = syscall.Errno(0x6f)
-+	ESPIPE          = syscall.Errno(0x1d)
-+	ESRCH           = syscall.Errno(0x3)
-+	ESTALE          = syscall.Errno(0x34)
-+	ESYSERROR       = syscall.Errno(0x5a)
-+	ETIME           = syscall.Errno(0x77)
-+	ETIMEDOUT       = syscall.Errno(0x4e)
-+	ETOOMANYREFS    = syscall.Errno(0x73)
-+	ETXTBSY         = syscall.Errno(0x1a)
-+	EUNATCH         = syscall.Errno(0x2a)
-+	EUSERS          = syscall.Errno(0x54)
-+	EWOULDBLOCK     = syscall.Errno(0xb)
-+	EWRPROTECT      = syscall.Errno(0x2f)
-+	EXDEV           = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+	SIGABRT     = syscall.Signal(0x6)
-+	SIGAIO      = syscall.Signal(0x17)
-+	SIGALRM     = syscall.Signal(0xe)
-+	SIGALRM1    = syscall.Signal(0x26)
-+	SIGBUS      = syscall.Signal(0xa)
-+	SIGCAPI     = syscall.Signal(0x31)
-+	SIGCHLD     = syscall.Signal(0x14)
-+	SIGCLD      = syscall.Signal(0x14)
-+	SIGCONT     = syscall.Signal(0x13)
-+	SIGCPUFAIL  = syscall.Signal(0x3b)
-+	SIGDANGER   = syscall.Signal(0x21)
-+	SIGEMT      = syscall.Signal(0x7)
-+	SIGFPE      = syscall.Signal(0x8)
-+	SIGGRANT    = syscall.Signal(0x3c)
-+	SIGHUP      = syscall.Signal(0x1)
-+	SIGILL      = syscall.Signal(0x4)
-+	SIGINT      = syscall.Signal(0x2)
-+	SIGIO       = syscall.Signal(0x17)
-+	SIGIOINT    = syscall.Signal(0x10)
-+	SIGIOT      = syscall.Signal(0x6)
-+	SIGKAP      = syscall.Signal(0x3c)
-+	SIGKILL     = syscall.Signal(0x9)
-+	SIGLOST     = syscall.Signal(0x6)
-+	SIGMAX      = syscall.Signal(0xff)
-+	SIGMAX32    = syscall.Signal(0x3f)
-+	SIGMIGRATE  = syscall.Signal(0x23)
-+	SIGMSG      = syscall.Signal(0x1b)
-+	SIGPIPE     = syscall.Signal(0xd)
-+	SIGPOLL     = syscall.Signal(0x17)
-+	SIGPRE      = syscall.Signal(0x24)
-+	SIGPROF     = syscall.Signal(0x20)
-+	SIGPTY      = syscall.Signal(0x17)
-+	SIGPWR      = syscall.Signal(0x1d)
-+	SIGQUIT     = syscall.Signal(0x3)
-+	SIGRECONFIG = syscall.Signal(0x3a)
-+	SIGRETRACT  = syscall.Signal(0x3d)
-+	SIGSAK      = syscall.Signal(0x3f)
-+	SIGSEGV     = syscall.Signal(0xb)
-+	SIGSOUND    = syscall.Signal(0x3e)
-+	SIGSTOP     = syscall.Signal(0x11)
-+	SIGSYS      = syscall.Signal(0xc)
-+	SIGSYSERROR = syscall.Signal(0x30)
-+	SIGTALRM    = syscall.Signal(0x26)
-+	SIGTERM     = syscall.Signal(0xf)
-+	SIGTRAP     = syscall.Signal(0x5)
-+	SIGTSTP     = syscall.Signal(0x12)
-+	SIGTTIN     = syscall.Signal(0x15)
-+	SIGTTOU     = syscall.Signal(0x16)
-+	SIGURG      = syscall.Signal(0x10)
-+	SIGUSR1     = syscall.Signal(0x1e)
-+	SIGUSR2     = syscall.Signal(0x1f)
-+	SIGVIRT     = syscall.Signal(0x25)
-+	SIGVTALRM   = syscall.Signal(0x22)
-+	SIGWAITING  = syscall.Signal(0x27)
-+	SIGWINCH    = syscall.Signal(0x1c)
-+	SIGXCPU     = syscall.Signal(0x18)
-+	SIGXFSZ     = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "not owner"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "I/O error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "arg list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file number"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EWOULDBLOCK", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "not enough space"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "ENOTEMPTY", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "file table overflow"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "not a typewriter"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "deadlock condition if locked"},
-+	{46, "ENOTREADY", "device not ready"},
-+	{47, "EWRPROTECT", "write-protected media"},
-+	{48, "EFORMAT", "unformatted or incompatible media"},
-+	{49, "ENOLCK", "no locks available"},
-+	{50, "ENOCONNECT", "cannot Establish Connection"},
-+	{52, "ESTALE", "missing file or filesystem"},
-+	{53, "EDIST", "requests blocked by Administrator"},
-+	{55, "EINPROGRESS", "operation now in progress"},
-+	{56, "EALREADY", "operation already in progress"},
-+	{57, "ENOTSOCK", "socket operation on non-socket"},
-+	{58, "EDESTADDREQ", "destination address required"},
-+	{59, "EMSGSIZE", "message too long"},
-+	{60, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{61, "ENOPROTOOPT", "protocol not available"},
-+	{62, "EPROTONOSUPPORT", "protocol not supported"},
-+	{63, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{64, "EOPNOTSUPP", "operation not supported on socket"},
-+	{65, "EPFNOSUPPORT", "protocol family not supported"},
-+	{66, "EAFNOSUPPORT", "addr family not supported by protocol"},
-+	{67, "EADDRINUSE", "address already in use"},
-+	{68, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{69, "ENETDOWN", "network is down"},
-+	{70, "ENETUNREACH", "network is unreachable"},
-+	{71, "ENETRESET", "network dropped connection on reset"},
-+	{72, "ECONNABORTED", "software caused connection abort"},
-+	{73, "ECONNRESET", "connection reset by peer"},
-+	{74, "ENOBUFS", "no buffer space available"},
-+	{75, "EISCONN", "socket is already connected"},
-+	{76, "ENOTCONN", "socket is not connected"},
-+	{77, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{78, "ETIMEDOUT", "connection timed out"},
-+	{79, "ECONNREFUSED", "connection refused"},
-+	{80, "EHOSTDOWN", "host is down"},
-+	{81, "EHOSTUNREACH", "no route to host"},
-+	{82, "ERESTART", "restart the system call"},
-+	{83, "EPROCLIM", "too many processes"},
-+	{84, "EUSERS", "too many users"},
-+	{85, "ELOOP", "too many levels of symbolic links"},
-+	{86, "ENAMETOOLONG", "file name too long"},
-+	{88, "EDQUOT", "disk quota exceeded"},
-+	{89, "ECORRUPT", "invalid file system control data detected"},
-+	{90, "ESYSERROR", "for future use "},
-+	{93, "EREMOTE", "item is not local to host"},
-+	{94, "ENOTRECOVERABLE", "state not recoverable "},
-+	{95, "EOWNERDEAD", "previous owner died "},
-+	{109, "ENOSYS", "function not implemented"},
-+	{110, "EMEDIA", "media surface error"},
-+	{111, "ESOFT", "I/O completed, but needs relocation"},
-+	{112, "ENOATTR", "no attribute found"},
-+	{113, "ESAD", "security Authentication Denied"},
-+	{114, "ENOTRUST", "not a Trusted Program"},
-+	{115, "ETOOMANYREFS", "too many references: can't splice"},
-+	{116, "EILSEQ", "invalid wide character"},
-+	{117, "ECANCELED", "asynchronous I/O cancelled"},
-+	{118, "ENOSR", "out of STREAMS resources"},
-+	{119, "ETIME", "system call timed out"},
-+	{120, "EBADMSG", "next message has wrong type"},
-+	{121, "EPROTO", "error in protocol"},
-+	{122, "ENODATA", "no message on stream head read q"},
-+	{123, "ENOSTR", "fd not associated with a stream"},
-+	{124, "ENOTSUP", "unsupported attribute value"},
-+	{125, "EMULTIHOP", "multihop is not allowed"},
-+	{126, "ENOLINK", "the server link has been severed"},
-+	{127, "EOVERFLOW", "value too large to be stored in data type"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "IOT/Abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible/complete"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{27, "SIGMSG", "input device data"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGPWR", "power-failure"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPROF", "profiling timer expired"},
-+	{33, "SIGDANGER", "paging space low"},
-+	{34, "SIGVTALRM", "virtual timer expired"},
-+	{35, "SIGMIGRATE", "signal 35"},
-+	{36, "SIGPRE", "signal 36"},
-+	{37, "SIGVIRT", "signal 37"},
-+	{38, "SIGTALRM", "signal 38"},
-+	{39, "SIGWAITING", "signal 39"},
-+	{48, "SIGSYSERROR", "signal 48"},
-+	{49, "SIGCAPI", "signal 49"},
-+	{58, "SIGRECONFIG", "signal 58"},
-+	{59, "SIGCPUFAIL", "CPU Failure Predicted"},
-+	{60, "SIGGRANT", "monitor mode granted"},
-+	{61, "SIGRETRACT", "monitor mode retracted"},
-+	{62, "SIGSOUND", "sound completed"},
-+	{63, "SIGMAX32", "secure attention"},
-+	{255, "SIGMAX", "signal 255"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-index 1c68758b..6217cdba 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-@@ -3,7 +3,7 @@
- 
- // +build 386,darwin
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
- 
- package unix
-@@ -49,6 +49,86 @@ const (
- 	AF_UNSPEC                         = 0x0
- 	AF_UTUN                           = 0x26
- 	ALTWERASE                         = 0x200
-+	ATTR_BIT_MAP_COUNT                = 0x5
-+	ATTR_CMN_ACCESSMASK               = 0x20000
-+	ATTR_CMN_ACCTIME                  = 0x1000
-+	ATTR_CMN_ADDEDTIME                = 0x10000000
-+	ATTR_CMN_BKUPTIME                 = 0x2000
-+	ATTR_CMN_CHGTIME                  = 0x800
-+	ATTR_CMN_CRTIME                   = 0x200
-+	ATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000
-+	ATTR_CMN_DEVID                    = 0x2
-+	ATTR_CMN_DOCUMENT_ID              = 0x100000
-+	ATTR_CMN_ERROR                    = 0x20000000
-+	ATTR_CMN_EXTENDED_SECURITY        = 0x400000
-+	ATTR_CMN_FILEID                   = 0x2000000
-+	ATTR_CMN_FLAGS                    = 0x40000
-+	ATTR_CMN_FNDRINFO                 = 0x4000
-+	ATTR_CMN_FSID                     = 0x4
-+	ATTR_CMN_FULLPATH                 = 0x8000000
-+	ATTR_CMN_GEN_COUNT                = 0x80000
-+	ATTR_CMN_GRPID                    = 0x10000
-+	ATTR_CMN_GRPUUID                  = 0x1000000
-+	ATTR_CMN_MODTIME                  = 0x400
-+	ATTR_CMN_NAME                     = 0x1
-+	ATTR_CMN_NAMEDATTRCOUNT           = 0x80000
-+	ATTR_CMN_NAMEDATTRLIST            = 0x100000
-+	ATTR_CMN_OBJID                    = 0x20
-+	ATTR_CMN_OBJPERMANENTID           = 0x40
-+	ATTR_CMN_OBJTAG                   = 0x10
-+	ATTR_CMN_OBJTYPE                  = 0x8
-+	ATTR_CMN_OWNERID                  = 0x8000
-+	ATTR_CMN_PARENTID                 = 0x4000000
-+	ATTR_CMN_PAROBJID                 = 0x80
-+	ATTR_CMN_RETURNED_ATTRS           = 0x80000000
-+	ATTR_CMN_SCRIPT                   = 0x100
-+	ATTR_CMN_SETMASK                  = 0x41c7ff00
-+	ATTR_CMN_USERACCESS               = 0x200000
-+	ATTR_CMN_UUID                     = 0x800000
-+	ATTR_CMN_VALIDMASK                = 0xffffffff
-+	ATTR_CMN_VOLSETMASK               = 0x6700
-+	ATTR_FILE_ALLOCSIZE               = 0x4
-+	ATTR_FILE_CLUMPSIZE               = 0x10
-+	ATTR_FILE_DATAALLOCSIZE           = 0x400
-+	ATTR_FILE_DATAEXTENTS             = 0x800
-+	ATTR_FILE_DATALENGTH              = 0x200
-+	ATTR_FILE_DEVTYPE                 = 0x20
-+	ATTR_FILE_FILETYPE                = 0x40
-+	ATTR_FILE_FORKCOUNT               = 0x80
-+	ATTR_FILE_FORKLIST                = 0x100
-+	ATTR_FILE_IOBLOCKSIZE             = 0x8
-+	ATTR_FILE_LINKCOUNT               = 0x1
-+	ATTR_FILE_RSRCALLOCSIZE           = 0x2000
-+	ATTR_FILE_RSRCEXTENTS             = 0x4000
-+	ATTR_FILE_RSRCLENGTH              = 0x1000
-+	ATTR_FILE_SETMASK                 = 0x20
-+	ATTR_FILE_TOTALSIZE               = 0x2
-+	ATTR_FILE_VALIDMASK               = 0x37ff
-+	ATTR_VOL_ALLOCATIONCLUMP          = 0x40
-+	ATTR_VOL_ATTRIBUTES               = 0x40000000
-+	ATTR_VOL_CAPABILITIES             = 0x20000
-+	ATTR_VOL_DIRCOUNT                 = 0x400
-+	ATTR_VOL_ENCODINGSUSED            = 0x10000
-+	ATTR_VOL_FILECOUNT                = 0x200
-+	ATTR_VOL_FSTYPE                   = 0x1
-+	ATTR_VOL_INFO                     = 0x80000000
-+	ATTR_VOL_IOBLOCKSIZE              = 0x80
-+	ATTR_VOL_MAXOBJCOUNT              = 0x800
-+	ATTR_VOL_MINALLOCATION            = 0x20
-+	ATTR_VOL_MOUNTEDDEVICE            = 0x8000
-+	ATTR_VOL_MOUNTFLAGS               = 0x4000
-+	ATTR_VOL_MOUNTPOINT               = 0x1000
-+	ATTR_VOL_NAME                     = 0x2000
-+	ATTR_VOL_OBJCOUNT                 = 0x100
-+	ATTR_VOL_QUOTA_SIZE               = 0x10000000
-+	ATTR_VOL_RESERVED_SIZE            = 0x20000000
-+	ATTR_VOL_SETMASK                  = 0x80002000
-+	ATTR_VOL_SIGNATURE                = 0x2
-+	ATTR_VOL_SIZE                     = 0x4
-+	ATTR_VOL_SPACEAVAIL               = 0x10
-+	ATTR_VOL_SPACEFREE                = 0x8
-+	ATTR_VOL_UUID                     = 0x40000
-+	ATTR_VOL_VALIDMASK                = 0xf007ffff
- 	B0                                = 0x0
- 	B110                              = 0x6e
- 	B115200                           = 0x1c200
-@@ -169,6 +249,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DLT_A429                          = 0xb8
-@@ -390,6 +472,11 @@ const (
- 	FF1                               = 0x4000
- 	FFDLY                             = 0x4000
- 	FLUSHO                            = 0x800000
-+	FSOPT_ATTR_CMN_EXTENDED           = 0x20
-+	FSOPT_NOFOLLOW                    = 0x1
-+	FSOPT_NOINMEMUPDATE               = 0x2
-+	FSOPT_PACK_INVAL_ATTRS            = 0x8
-+	FSOPT_REPORT_FULLSIZE             = 0x4
- 	F_ADDFILESIGS                     = 0x3d
- 	F_ADDFILESIGS_FOR_DYLD_SIM        = 0x53
- 	F_ADDFILESIGS_RETURN              = 0x61
-@@ -425,6 +512,7 @@ const (
- 	F_PATHPKG_CHECK                   = 0x34
- 	F_PEOFPOSMODE                     = 0x3
- 	F_PREALLOCATE                     = 0x2a
-+	F_PUNCHHOLE                       = 0x63
- 	F_RDADVISE                        = 0x2c
- 	F_RDAHEAD                         = 0x2d
- 	F_RDLCK                           = 0x1
-@@ -441,10 +529,12 @@ const (
- 	F_SINGLE_WRITER                   = 0x4c
- 	F_THAW_FS                         = 0x36
- 	F_TRANSCODEKEY                    = 0x4b
-+	F_TRIM_ACTIVE_FILE                = 0x64
- 	F_UNLCK                           = 0x2
- 	F_VOLPOSMODE                      = 0x4
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -681,6 +771,7 @@ const (
- 	IPV6_FAITH                        = 0x1d
- 	IPV6_FLOWINFO_MASK                = 0xffffff0f
- 	IPV6_FLOWLABEL_MASK               = 0xffff0f00
-+	IPV6_FLOW_ECN_MASK                = 0x300
- 	IPV6_FRAGTTL                      = 0x3c
- 	IPV6_FW_ADD                       = 0x1e
- 	IPV6_FW_DEL                       = 0x1f
-@@ -771,6 +862,7 @@ const (
- 	IP_RECVOPTS                       = 0x5
- 	IP_RECVPKTINFO                    = 0x1a
- 	IP_RECVRETOPTS                    = 0x6
-+	IP_RECVTOS                        = 0x1b
- 	IP_RECVTTL                        = 0x18
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
-@@ -789,6 +881,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -884,6 +980,7 @@ const (
- 	NET_RT_MAXID                      = 0xa
- 	NET_RT_STAT                       = 0x4
- 	NET_RT_TRASH                      = 0x5
-+	NFDBITS                           = 0x20
- 	NL0                               = 0x0
- 	NL1                               = 0x100
- 	NL2                               = 0x200
-@@ -1377,6 +1474,12 @@ const (
- 	WORDSIZE                          = 0x20
- 	WSTOPPED                          = 0x8
- 	WUNTRACED                         = 0x2
-+	XATTR_CREATE                      = 0x2
-+	XATTR_NODEFAULT                   = 0x10
-+	XATTR_NOFOLLOW                    = 0x1
-+	XATTR_NOSECURITY                  = 0x8
-+	XATTR_REPLACE                     = 0x4
-+	XATTR_SHOWCOMPRESSION             = 0x20
- )
- 
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "device not configured",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource deadlock avoided",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "resource busy",
--	17:  "file exists",
--	18:  "cross-device link",
--	19:  "operation not supported by device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "result too large",
--	35:  "resource temporarily unavailable",
--	36:  "operation now in progress",
--	37:  "operation already in progress",
--	38:  "socket operation on non-socket",
--	39:  "destination address required",
--	40:  "message too long",
--	41:  "protocol wrong type for socket",
--	42:  "protocol not available",
--	43:  "protocol not supported",
--	44:  "socket type not supported",
--	45:  "operation not supported",
--	46:  "protocol family not supported",
--	47:  "address family not supported by protocol family",
--	48:  "address already in use",
--	49:  "can't assign requested address",
--	50:  "network is down",
--	51:  "network is unreachable",
--	52:  "network dropped connection on reset",
--	53:  "software caused connection abort",
--	54:  "connection reset by peer",
--	55:  "no buffer space available",
--	56:  "socket is already connected",
--	57:  "socket is not connected",
--	58:  "can't send after socket shutdown",
--	59:  "too many references: can't splice",
--	60:  "operation timed out",
--	61:  "connection refused",
--	62:  "too many levels of symbolic links",
--	63:  "file name too long",
--	64:  "host is down",
--	65:  "no route to host",
--	66:  "directory not empty",
--	67:  "too many processes",
--	68:  "too many users",
--	69:  "disc quota exceeded",
--	70:  "stale NFS file handle",
--	71:  "too many levels of remote in path",
--	72:  "RPC struct is bad",
--	73:  "RPC version wrong",
--	74:  "RPC prog. not avail",
--	75:  "program version wrong",
--	76:  "bad procedure for program",
--	77:  "no locks available",
--	78:  "function not implemented",
--	79:  "inappropriate file type or format",
--	80:  "authentication error",
--	81:  "need authenticator",
--	82:  "device power is off",
--	83:  "device error",
--	84:  "value too large to be stored in data type",
--	85:  "bad executable (or shared library)",
--	86:  "bad CPU type in executable",
--	87:  "shared library version mismatch",
--	88:  "malformed Mach-o file",
--	89:  "operation canceled",
--	90:  "identifier removed",
--	91:  "no message of desired type",
--	92:  "illegal byte sequence",
--	93:  "attribute not found",
--	94:  "bad message",
--	95:  "EMULTIHOP (Reserved)",
--	96:  "no message available on STREAM",
--	97:  "ENOLINK (Reserved)",
--	98:  "no STREAM resources",
--	99:  "not a STREAM",
--	100: "protocol error",
--	101: "STREAM ioctl timeout",
--	102: "operation not supported on socket",
--	103: "policy not found",
--	104: "state not recoverable",
--	105: "previous owner died",
--	106: "interface output queue is full",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "ENOTSUP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EPWROFF", "device power is off"},
-+	{83, "EDEVERR", "device error"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EBADEXEC", "bad executable (or shared library)"},
-+	{86, "EBADARCH", "bad CPU type in executable"},
-+	{87, "ESHLIBVERS", "shared library version mismatch"},
-+	{88, "EBADMACHO", "malformed Mach-o file"},
-+	{89, "ECANCELED", "operation canceled"},
-+	{90, "EIDRM", "identifier removed"},
-+	{91, "ENOMSG", "no message of desired type"},
-+	{92, "EILSEQ", "illegal byte sequence"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EBADMSG", "bad message"},
-+	{95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+	{96, "ENODATA", "no message available on STREAM"},
-+	{97, "ENOLINK", "ENOLINK (Reserved)"},
-+	{98, "ENOSR", "no STREAM resources"},
-+	{99, "ENOSTR", "not a STREAM"},
-+	{100, "EPROTO", "protocol error"},
-+	{101, "ETIME", "STREAM ioctl timeout"},
-+	{102, "EOPNOTSUPP", "operation not supported on socket"},
-+	{103, "ENOPOLICY", "policy not found"},
-+	{104, "ENOTRECOVERABLE", "state not recoverable"},
-+	{105, "EOWNERDEAD", "previous owner died"},
-+	{106, "EQFULL", "interface output queue is full"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-index 48f63d4f..e3ff2ee3 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-@@ -3,7 +3,7 @@
- 
- // +build amd64,darwin
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -49,6 +49,86 @@ const (
- 	AF_UNSPEC                         = 0x0
- 	AF_UTUN                           = 0x26
- 	ALTWERASE                         = 0x200
-+	ATTR_BIT_MAP_COUNT                = 0x5
-+	ATTR_CMN_ACCESSMASK               = 0x20000
-+	ATTR_CMN_ACCTIME                  = 0x1000
-+	ATTR_CMN_ADDEDTIME                = 0x10000000
-+	ATTR_CMN_BKUPTIME                 = 0x2000
-+	ATTR_CMN_CHGTIME                  = 0x800
-+	ATTR_CMN_CRTIME                   = 0x200
-+	ATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000
-+	ATTR_CMN_DEVID                    = 0x2
-+	ATTR_CMN_DOCUMENT_ID              = 0x100000
-+	ATTR_CMN_ERROR                    = 0x20000000
-+	ATTR_CMN_EXTENDED_SECURITY        = 0x400000
-+	ATTR_CMN_FILEID                   = 0x2000000
-+	ATTR_CMN_FLAGS                    = 0x40000
-+	ATTR_CMN_FNDRINFO                 = 0x4000
-+	ATTR_CMN_FSID                     = 0x4
-+	ATTR_CMN_FULLPATH                 = 0x8000000
-+	ATTR_CMN_GEN_COUNT                = 0x80000
-+	ATTR_CMN_GRPID                    = 0x10000
-+	ATTR_CMN_GRPUUID                  = 0x1000000
-+	ATTR_CMN_MODTIME                  = 0x400
-+	ATTR_CMN_NAME                     = 0x1
-+	ATTR_CMN_NAMEDATTRCOUNT           = 0x80000
-+	ATTR_CMN_NAMEDATTRLIST            = 0x100000
-+	ATTR_CMN_OBJID                    = 0x20
-+	ATTR_CMN_OBJPERMANENTID           = 0x40
-+	ATTR_CMN_OBJTAG                   = 0x10
-+	ATTR_CMN_OBJTYPE                  = 0x8
-+	ATTR_CMN_OWNERID                  = 0x8000
-+	ATTR_CMN_PARENTID                 = 0x4000000
-+	ATTR_CMN_PAROBJID                 = 0x80
-+	ATTR_CMN_RETURNED_ATTRS           = 0x80000000
-+	ATTR_CMN_SCRIPT                   = 0x100
-+	ATTR_CMN_SETMASK                  = 0x41c7ff00
-+	ATTR_CMN_USERACCESS               = 0x200000
-+	ATTR_CMN_UUID                     = 0x800000
-+	ATTR_CMN_VALIDMASK                = 0xffffffff
-+	ATTR_CMN_VOLSETMASK               = 0x6700
-+	ATTR_FILE_ALLOCSIZE               = 0x4
-+	ATTR_FILE_CLUMPSIZE               = 0x10
-+	ATTR_FILE_DATAALLOCSIZE           = 0x400
-+	ATTR_FILE_DATAEXTENTS             = 0x800
-+	ATTR_FILE_DATALENGTH              = 0x200
-+	ATTR_FILE_DEVTYPE                 = 0x20
-+	ATTR_FILE_FILETYPE                = 0x40
-+	ATTR_FILE_FORKCOUNT               = 0x80
-+	ATTR_FILE_FORKLIST                = 0x100
-+	ATTR_FILE_IOBLOCKSIZE             = 0x8
-+	ATTR_FILE_LINKCOUNT               = 0x1
-+	ATTR_FILE_RSRCALLOCSIZE           = 0x2000
-+	ATTR_FILE_RSRCEXTENTS             = 0x4000
-+	ATTR_FILE_RSRCLENGTH              = 0x1000
-+	ATTR_FILE_SETMASK                 = 0x20
-+	ATTR_FILE_TOTALSIZE               = 0x2
-+	ATTR_FILE_VALIDMASK               = 0x37ff
-+	ATTR_VOL_ALLOCATIONCLUMP          = 0x40
-+	ATTR_VOL_ATTRIBUTES               = 0x40000000
-+	ATTR_VOL_CAPABILITIES             = 0x20000
-+	ATTR_VOL_DIRCOUNT                 = 0x400
-+	ATTR_VOL_ENCODINGSUSED            = 0x10000
-+	ATTR_VOL_FILECOUNT                = 0x200
-+	ATTR_VOL_FSTYPE                   = 0x1
-+	ATTR_VOL_INFO                     = 0x80000000
-+	ATTR_VOL_IOBLOCKSIZE              = 0x80
-+	ATTR_VOL_MAXOBJCOUNT              = 0x800
-+	ATTR_VOL_MINALLOCATION            = 0x20
-+	ATTR_VOL_MOUNTEDDEVICE            = 0x8000
-+	ATTR_VOL_MOUNTFLAGS               = 0x4000
-+	ATTR_VOL_MOUNTPOINT               = 0x1000
-+	ATTR_VOL_NAME                     = 0x2000
-+	ATTR_VOL_OBJCOUNT                 = 0x100
-+	ATTR_VOL_QUOTA_SIZE               = 0x10000000
-+	ATTR_VOL_RESERVED_SIZE            = 0x20000000
-+	ATTR_VOL_SETMASK                  = 0x80002000
-+	ATTR_VOL_SIGNATURE                = 0x2
-+	ATTR_VOL_SIZE                     = 0x4
-+	ATTR_VOL_SPACEAVAIL               = 0x10
-+	ATTR_VOL_SPACEFREE                = 0x8
-+	ATTR_VOL_UUID                     = 0x40000
-+	ATTR_VOL_VALIDMASK                = 0xf007ffff
- 	B0                                = 0x0
- 	B110                              = 0x6e
- 	B115200                           = 0x1c200
-@@ -169,6 +249,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DLT_A429                          = 0xb8
-@@ -390,6 +472,11 @@ const (
- 	FF1                               = 0x4000
- 	FFDLY                             = 0x4000
- 	FLUSHO                            = 0x800000
-+	FSOPT_ATTR_CMN_EXTENDED           = 0x20
-+	FSOPT_NOFOLLOW                    = 0x1
-+	FSOPT_NOINMEMUPDATE               = 0x2
-+	FSOPT_PACK_INVAL_ATTRS            = 0x8
-+	FSOPT_REPORT_FULLSIZE             = 0x4
- 	F_ADDFILESIGS                     = 0x3d
- 	F_ADDFILESIGS_FOR_DYLD_SIM        = 0x53
- 	F_ADDFILESIGS_RETURN              = 0x61
-@@ -425,6 +512,7 @@ const (
- 	F_PATHPKG_CHECK                   = 0x34
- 	F_PEOFPOSMODE                     = 0x3
- 	F_PREALLOCATE                     = 0x2a
-+	F_PUNCHHOLE                       = 0x63
- 	F_RDADVISE                        = 0x2c
- 	F_RDAHEAD                         = 0x2d
- 	F_RDLCK                           = 0x1
-@@ -441,10 +529,12 @@ const (
- 	F_SINGLE_WRITER                   = 0x4c
- 	F_THAW_FS                         = 0x36
- 	F_TRANSCODEKEY                    = 0x4b
-+	F_TRIM_ACTIVE_FILE                = 0x64
- 	F_UNLCK                           = 0x2
- 	F_VOLPOSMODE                      = 0x4
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -681,6 +771,7 @@ const (
- 	IPV6_FAITH                        = 0x1d
- 	IPV6_FLOWINFO_MASK                = 0xffffff0f
- 	IPV6_FLOWLABEL_MASK               = 0xffff0f00
-+	IPV6_FLOW_ECN_MASK                = 0x300
- 	IPV6_FRAGTTL                      = 0x3c
- 	IPV6_FW_ADD                       = 0x1e
- 	IPV6_FW_DEL                       = 0x1f
-@@ -771,6 +862,7 @@ const (
- 	IP_RECVOPTS                       = 0x5
- 	IP_RECVPKTINFO                    = 0x1a
- 	IP_RECVRETOPTS                    = 0x6
-+	IP_RECVTOS                        = 0x1b
- 	IP_RECVTTL                        = 0x18
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
-@@ -789,6 +881,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -884,6 +980,7 @@ const (
- 	NET_RT_MAXID                      = 0xa
- 	NET_RT_STAT                       = 0x4
- 	NET_RT_TRASH                      = 0x5
-+	NFDBITS                           = 0x20
- 	NL0                               = 0x0
- 	NL1                               = 0x100
- 	NL2                               = 0x200
-@@ -1377,6 +1474,12 @@ const (
- 	WORDSIZE                          = 0x40
- 	WSTOPPED                          = 0x8
- 	WUNTRACED                         = 0x2
-+	XATTR_CREATE                      = 0x2
-+	XATTR_NODEFAULT                   = 0x10
-+	XATTR_NOFOLLOW                    = 0x1
-+	XATTR_NOSECURITY                  = 0x8
-+	XATTR_REPLACE                     = 0x4
-+	XATTR_SHOWCOMPRESSION             = 0x20
- )
- 
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "device not configured",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource deadlock avoided",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "resource busy",
--	17:  "file exists",
--	18:  "cross-device link",
--	19:  "operation not supported by device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "result too large",
--	35:  "resource temporarily unavailable",
--	36:  "operation now in progress",
--	37:  "operation already in progress",
--	38:  "socket operation on non-socket",
--	39:  "destination address required",
--	40:  "message too long",
--	41:  "protocol wrong type for socket",
--	42:  "protocol not available",
--	43:  "protocol not supported",
--	44:  "socket type not supported",
--	45:  "operation not supported",
--	46:  "protocol family not supported",
--	47:  "address family not supported by protocol family",
--	48:  "address already in use",
--	49:  "can't assign requested address",
--	50:  "network is down",
--	51:  "network is unreachable",
--	52:  "network dropped connection on reset",
--	53:  "software caused connection abort",
--	54:  "connection reset by peer",
--	55:  "no buffer space available",
--	56:  "socket is already connected",
--	57:  "socket is not connected",
--	58:  "can't send after socket shutdown",
--	59:  "too many references: can't splice",
--	60:  "operation timed out",
--	61:  "connection refused",
--	62:  "too many levels of symbolic links",
--	63:  "file name too long",
--	64:  "host is down",
--	65:  "no route to host",
--	66:  "directory not empty",
--	67:  "too many processes",
--	68:  "too many users",
--	69:  "disc quota exceeded",
--	70:  "stale NFS file handle",
--	71:  "too many levels of remote in path",
--	72:  "RPC struct is bad",
--	73:  "RPC version wrong",
--	74:  "RPC prog. not avail",
--	75:  "program version wrong",
--	76:  "bad procedure for program",
--	77:  "no locks available",
--	78:  "function not implemented",
--	79:  "inappropriate file type or format",
--	80:  "authentication error",
--	81:  "need authenticator",
--	82:  "device power is off",
--	83:  "device error",
--	84:  "value too large to be stored in data type",
--	85:  "bad executable (or shared library)",
--	86:  "bad CPU type in executable",
--	87:  "shared library version mismatch",
--	88:  "malformed Mach-o file",
--	89:  "operation canceled",
--	90:  "identifier removed",
--	91:  "no message of desired type",
--	92:  "illegal byte sequence",
--	93:  "attribute not found",
--	94:  "bad message",
--	95:  "EMULTIHOP (Reserved)",
--	96:  "no message available on STREAM",
--	97:  "ENOLINK (Reserved)",
--	98:  "no STREAM resources",
--	99:  "not a STREAM",
--	100: "protocol error",
--	101: "STREAM ioctl timeout",
--	102: "operation not supported on socket",
--	103: "policy not found",
--	104: "state not recoverable",
--	105: "previous owner died",
--	106: "interface output queue is full",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "ENOTSUP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EPWROFF", "device power is off"},
-+	{83, "EDEVERR", "device error"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EBADEXEC", "bad executable (or shared library)"},
-+	{86, "EBADARCH", "bad CPU type in executable"},
-+	{87, "ESHLIBVERS", "shared library version mismatch"},
-+	{88, "EBADMACHO", "malformed Mach-o file"},
-+	{89, "ECANCELED", "operation canceled"},
-+	{90, "EIDRM", "identifier removed"},
-+	{91, "ENOMSG", "no message of desired type"},
-+	{92, "EILSEQ", "illegal byte sequence"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EBADMSG", "bad message"},
-+	{95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+	{96, "ENODATA", "no message available on STREAM"},
-+	{97, "ENOLINK", "ENOLINK (Reserved)"},
-+	{98, "ENOSR", "no STREAM resources"},
-+	{99, "ENOSTR", "not a STREAM"},
-+	{100, "EPROTO", "protocol error"},
-+	{101, "ETIME", "STREAM ioctl timeout"},
-+	{102, "EOPNOTSUPP", "operation not supported on socket"},
-+	{103, "ENOPOLICY", "policy not found"},
-+	{104, "ENOTRECOVERABLE", "state not recoverable"},
-+	{105, "EOWNERDEAD", "previous owner died"},
-+	{106, "EQFULL", "interface output queue is full"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-index 24cb522d..3e417571 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-@@ -3,7 +3,7 @@
- 
- // +build arm,darwin
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- _const.go
- 
- package unix
-@@ -49,6 +49,86 @@ const (
- 	AF_UNSPEC                         = 0x0
- 	AF_UTUN                           = 0x26
- 	ALTWERASE                         = 0x200
-+	ATTR_BIT_MAP_COUNT                = 0x5
-+	ATTR_CMN_ACCESSMASK               = 0x20000
-+	ATTR_CMN_ACCTIME                  = 0x1000
-+	ATTR_CMN_ADDEDTIME                = 0x10000000
-+	ATTR_CMN_BKUPTIME                 = 0x2000
-+	ATTR_CMN_CHGTIME                  = 0x800
-+	ATTR_CMN_CRTIME                   = 0x200
-+	ATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000
-+	ATTR_CMN_DEVID                    = 0x2
-+	ATTR_CMN_DOCUMENT_ID              = 0x100000
-+	ATTR_CMN_ERROR                    = 0x20000000
-+	ATTR_CMN_EXTENDED_SECURITY        = 0x400000
-+	ATTR_CMN_FILEID                   = 0x2000000
-+	ATTR_CMN_FLAGS                    = 0x40000
-+	ATTR_CMN_FNDRINFO                 = 0x4000
-+	ATTR_CMN_FSID                     = 0x4
-+	ATTR_CMN_FULLPATH                 = 0x8000000
-+	ATTR_CMN_GEN_COUNT                = 0x80000
-+	ATTR_CMN_GRPID                    = 0x10000
-+	ATTR_CMN_GRPUUID                  = 0x1000000
-+	ATTR_CMN_MODTIME                  = 0x400
-+	ATTR_CMN_NAME                     = 0x1
-+	ATTR_CMN_NAMEDATTRCOUNT           = 0x80000
-+	ATTR_CMN_NAMEDATTRLIST            = 0x100000
-+	ATTR_CMN_OBJID                    = 0x20
-+	ATTR_CMN_OBJPERMANENTID           = 0x40
-+	ATTR_CMN_OBJTAG                   = 0x10
-+	ATTR_CMN_OBJTYPE                  = 0x8
-+	ATTR_CMN_OWNERID                  = 0x8000
-+	ATTR_CMN_PARENTID                 = 0x4000000
-+	ATTR_CMN_PAROBJID                 = 0x80
-+	ATTR_CMN_RETURNED_ATTRS           = 0x80000000
-+	ATTR_CMN_SCRIPT                   = 0x100
-+	ATTR_CMN_SETMASK                  = 0x41c7ff00
-+	ATTR_CMN_USERACCESS               = 0x200000
-+	ATTR_CMN_UUID                     = 0x800000
-+	ATTR_CMN_VALIDMASK                = 0xffffffff
-+	ATTR_CMN_VOLSETMASK               = 0x6700
-+	ATTR_FILE_ALLOCSIZE               = 0x4
-+	ATTR_FILE_CLUMPSIZE               = 0x10
-+	ATTR_FILE_DATAALLOCSIZE           = 0x400
-+	ATTR_FILE_DATAEXTENTS             = 0x800
-+	ATTR_FILE_DATALENGTH              = 0x200
-+	ATTR_FILE_DEVTYPE                 = 0x20
-+	ATTR_FILE_FILETYPE                = 0x40
-+	ATTR_FILE_FORKCOUNT               = 0x80
-+	ATTR_FILE_FORKLIST                = 0x100
-+	ATTR_FILE_IOBLOCKSIZE             = 0x8
-+	ATTR_FILE_LINKCOUNT               = 0x1
-+	ATTR_FILE_RSRCALLOCSIZE           = 0x2000
-+	ATTR_FILE_RSRCEXTENTS             = 0x4000
-+	ATTR_FILE_RSRCLENGTH              = 0x1000
-+	ATTR_FILE_SETMASK                 = 0x20
-+	ATTR_FILE_TOTALSIZE               = 0x2
-+	ATTR_FILE_VALIDMASK               = 0x37ff
-+	ATTR_VOL_ALLOCATIONCLUMP          = 0x40
-+	ATTR_VOL_ATTRIBUTES               = 0x40000000
-+	ATTR_VOL_CAPABILITIES             = 0x20000
-+	ATTR_VOL_DIRCOUNT                 = 0x400
-+	ATTR_VOL_ENCODINGSUSED            = 0x10000
-+	ATTR_VOL_FILECOUNT                = 0x200
-+	ATTR_VOL_FSTYPE                   = 0x1
-+	ATTR_VOL_INFO                     = 0x80000000
-+	ATTR_VOL_IOBLOCKSIZE              = 0x80
-+	ATTR_VOL_MAXOBJCOUNT              = 0x800
-+	ATTR_VOL_MINALLOCATION            = 0x20
-+	ATTR_VOL_MOUNTEDDEVICE            = 0x8000
-+	ATTR_VOL_MOUNTFLAGS               = 0x4000
-+	ATTR_VOL_MOUNTPOINT               = 0x1000
-+	ATTR_VOL_NAME                     = 0x2000
-+	ATTR_VOL_OBJCOUNT                 = 0x100
-+	ATTR_VOL_QUOTA_SIZE               = 0x10000000
-+	ATTR_VOL_RESERVED_SIZE            = 0x20000000
-+	ATTR_VOL_SETMASK                  = 0x80002000
-+	ATTR_VOL_SIGNATURE                = 0x2
-+	ATTR_VOL_SIZE                     = 0x4
-+	ATTR_VOL_SPACEAVAIL               = 0x10
-+	ATTR_VOL_SPACEFREE                = 0x8
-+	ATTR_VOL_UUID                     = 0x40000
-+	ATTR_VOL_VALIDMASK                = 0xf007ffff
- 	B0                                = 0x0
- 	B110                              = 0x6e
- 	B115200                           = 0x1c200
-@@ -169,6 +249,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DLT_A429                          = 0xb8
-@@ -390,6 +472,11 @@ const (
- 	FF1                               = 0x4000
- 	FFDLY                             = 0x4000
- 	FLUSHO                            = 0x800000
-+	FSOPT_ATTR_CMN_EXTENDED           = 0x20
-+	FSOPT_NOFOLLOW                    = 0x1
-+	FSOPT_NOINMEMUPDATE               = 0x2
-+	FSOPT_PACK_INVAL_ATTRS            = 0x8
-+	FSOPT_REPORT_FULLSIZE             = 0x4
- 	F_ADDFILESIGS                     = 0x3d
- 	F_ADDFILESIGS_FOR_DYLD_SIM        = 0x53
- 	F_ADDFILESIGS_RETURN              = 0x61
-@@ -425,6 +512,7 @@ const (
- 	F_PATHPKG_CHECK                   = 0x34
- 	F_PEOFPOSMODE                     = 0x3
- 	F_PREALLOCATE                     = 0x2a
-+	F_PUNCHHOLE                       = 0x63
- 	F_RDADVISE                        = 0x2c
- 	F_RDAHEAD                         = 0x2d
- 	F_RDLCK                           = 0x1
-@@ -441,10 +529,12 @@ const (
- 	F_SINGLE_WRITER                   = 0x4c
- 	F_THAW_FS                         = 0x36
- 	F_TRANSCODEKEY                    = 0x4b
-+	F_TRIM_ACTIVE_FILE                = 0x64
- 	F_UNLCK                           = 0x2
- 	F_VOLPOSMODE                      = 0x4
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -681,6 +771,7 @@ const (
- 	IPV6_FAITH                        = 0x1d
- 	IPV6_FLOWINFO_MASK                = 0xffffff0f
- 	IPV6_FLOWLABEL_MASK               = 0xffff0f00
-+	IPV6_FLOW_ECN_MASK                = 0x300
- 	IPV6_FRAGTTL                      = 0x3c
- 	IPV6_FW_ADD                       = 0x1e
- 	IPV6_FW_DEL                       = 0x1f
-@@ -771,6 +862,7 @@ const (
- 	IP_RECVOPTS                       = 0x5
- 	IP_RECVPKTINFO                    = 0x1a
- 	IP_RECVRETOPTS                    = 0x6
-+	IP_RECVTOS                        = 0x1b
- 	IP_RECVTTL                        = 0x18
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
-@@ -789,6 +881,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -884,6 +980,7 @@ const (
- 	NET_RT_MAXID                      = 0xa
- 	NET_RT_STAT                       = 0x4
- 	NET_RT_TRASH                      = 0x5
-+	NFDBITS                           = 0x20
- 	NL0                               = 0x0
- 	NL1                               = 0x100
- 	NL2                               = 0x200
-@@ -1377,6 +1474,12 @@ const (
- 	WORDSIZE                          = 0x40
- 	WSTOPPED                          = 0x8
- 	WUNTRACED                         = 0x2
-+	XATTR_CREATE                      = 0x2
-+	XATTR_NODEFAULT                   = 0x10
-+	XATTR_NOFOLLOW                    = 0x1
-+	XATTR_NOSECURITY                  = 0x8
-+	XATTR_REPLACE                     = 0x4
-+	XATTR_SHOWCOMPRESSION             = 0x20
- )
- 
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "device not configured",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource deadlock avoided",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "resource busy",
--	17:  "file exists",
--	18:  "cross-device link",
--	19:  "operation not supported by device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "result too large",
--	35:  "resource temporarily unavailable",
--	36:  "operation now in progress",
--	37:  "operation already in progress",
--	38:  "socket operation on non-socket",
--	39:  "destination address required",
--	40:  "message too long",
--	41:  "protocol wrong type for socket",
--	42:  "protocol not available",
--	43:  "protocol not supported",
--	44:  "socket type not supported",
--	45:  "operation not supported",
--	46:  "protocol family not supported",
--	47:  "address family not supported by protocol family",
--	48:  "address already in use",
--	49:  "can't assign requested address",
--	50:  "network is down",
--	51:  "network is unreachable",
--	52:  "network dropped connection on reset",
--	53:  "software caused connection abort",
--	54:  "connection reset by peer",
--	55:  "no buffer space available",
--	56:  "socket is already connected",
--	57:  "socket is not connected",
--	58:  "can't send after socket shutdown",
--	59:  "too many references: can't splice",
--	60:  "operation timed out",
--	61:  "connection refused",
--	62:  "too many levels of symbolic links",
--	63:  "file name too long",
--	64:  "host is down",
--	65:  "no route to host",
--	66:  "directory not empty",
--	67:  "too many processes",
--	68:  "too many users",
--	69:  "disc quota exceeded",
--	70:  "stale NFS file handle",
--	71:  "too many levels of remote in path",
--	72:  "RPC struct is bad",
--	73:  "RPC version wrong",
--	74:  "RPC prog. not avail",
--	75:  "program version wrong",
--	76:  "bad procedure for program",
--	77:  "no locks available",
--	78:  "function not implemented",
--	79:  "inappropriate file type or format",
--	80:  "authentication error",
--	81:  "need authenticator",
--	82:  "device power is off",
--	83:  "device error",
--	84:  "value too large to be stored in data type",
--	85:  "bad executable (or shared library)",
--	86:  "bad CPU type in executable",
--	87:  "shared library version mismatch",
--	88:  "malformed Mach-o file",
--	89:  "operation canceled",
--	90:  "identifier removed",
--	91:  "no message of desired type",
--	92:  "illegal byte sequence",
--	93:  "attribute not found",
--	94:  "bad message",
--	95:  "EMULTIHOP (Reserved)",
--	96:  "no message available on STREAM",
--	97:  "ENOLINK (Reserved)",
--	98:  "no STREAM resources",
--	99:  "not a STREAM",
--	100: "protocol error",
--	101: "STREAM ioctl timeout",
--	102: "operation not supported on socket",
--	103: "policy not found",
--	104: "state not recoverable",
--	105: "previous owner died",
--	106: "interface output queue is full",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "ENOTSUP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EPWROFF", "device power is off"},
-+	{83, "EDEVERR", "device error"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EBADEXEC", "bad executable (or shared library)"},
-+	{86, "EBADARCH", "bad CPU type in executable"},
-+	{87, "ESHLIBVERS", "shared library version mismatch"},
-+	{88, "EBADMACHO", "malformed Mach-o file"},
-+	{89, "ECANCELED", "operation canceled"},
-+	{90, "EIDRM", "identifier removed"},
-+	{91, "ENOMSG", "no message of desired type"},
-+	{92, "EILSEQ", "illegal byte sequence"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EBADMSG", "bad message"},
-+	{95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+	{96, "ENODATA", "no message available on STREAM"},
-+	{97, "ENOLINK", "ENOLINK (Reserved)"},
-+	{98, "ENOSR", "no STREAM resources"},
-+	{99, "ENOSTR", "not a STREAM"},
-+	{100, "EPROTO", "protocol error"},
-+	{101, "ETIME", "STREAM ioctl timeout"},
-+	{102, "EOPNOTSUPP", "operation not supported on socket"},
-+	{103, "ENOPOLICY", "policy not found"},
-+	{104, "ENOTRECOVERABLE", "state not recoverable"},
-+	{105, "EOWNERDEAD", "previous owner died"},
-+	{106, "EQFULL", "interface output queue is full"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-index cc8cc5b5..cbd8ed18 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-@@ -3,7 +3,7 @@
- 
- // +build arm64,darwin
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -49,6 +49,86 @@ const (
- 	AF_UNSPEC                         = 0x0
- 	AF_UTUN                           = 0x26
- 	ALTWERASE                         = 0x200
-+	ATTR_BIT_MAP_COUNT                = 0x5
-+	ATTR_CMN_ACCESSMASK               = 0x20000
-+	ATTR_CMN_ACCTIME                  = 0x1000
-+	ATTR_CMN_ADDEDTIME                = 0x10000000
-+	ATTR_CMN_BKUPTIME                 = 0x2000
-+	ATTR_CMN_CHGTIME                  = 0x800
-+	ATTR_CMN_CRTIME                   = 0x200
-+	ATTR_CMN_DATA_PROTECT_FLAGS       = 0x40000000
-+	ATTR_CMN_DEVID                    = 0x2
-+	ATTR_CMN_DOCUMENT_ID              = 0x100000
-+	ATTR_CMN_ERROR                    = 0x20000000
-+	ATTR_CMN_EXTENDED_SECURITY        = 0x400000
-+	ATTR_CMN_FILEID                   = 0x2000000
-+	ATTR_CMN_FLAGS                    = 0x40000
-+	ATTR_CMN_FNDRINFO                 = 0x4000
-+	ATTR_CMN_FSID                     = 0x4
-+	ATTR_CMN_FULLPATH                 = 0x8000000
-+	ATTR_CMN_GEN_COUNT                = 0x80000
-+	ATTR_CMN_GRPID                    = 0x10000
-+	ATTR_CMN_GRPUUID                  = 0x1000000
-+	ATTR_CMN_MODTIME                  = 0x400
-+	ATTR_CMN_NAME                     = 0x1
-+	ATTR_CMN_NAMEDATTRCOUNT           = 0x80000
-+	ATTR_CMN_NAMEDATTRLIST            = 0x100000
-+	ATTR_CMN_OBJID                    = 0x20
-+	ATTR_CMN_OBJPERMANENTID           = 0x40
-+	ATTR_CMN_OBJTAG                   = 0x10
-+	ATTR_CMN_OBJTYPE                  = 0x8
-+	ATTR_CMN_OWNERID                  = 0x8000
-+	ATTR_CMN_PARENTID                 = 0x4000000
-+	ATTR_CMN_PAROBJID                 = 0x80
-+	ATTR_CMN_RETURNED_ATTRS           = 0x80000000
-+	ATTR_CMN_SCRIPT                   = 0x100
-+	ATTR_CMN_SETMASK                  = 0x41c7ff00
-+	ATTR_CMN_USERACCESS               = 0x200000
-+	ATTR_CMN_UUID                     = 0x800000
-+	ATTR_CMN_VALIDMASK                = 0xffffffff
-+	ATTR_CMN_VOLSETMASK               = 0x6700
-+	ATTR_FILE_ALLOCSIZE               = 0x4
-+	ATTR_FILE_CLUMPSIZE               = 0x10
-+	ATTR_FILE_DATAALLOCSIZE           = 0x400
-+	ATTR_FILE_DATAEXTENTS             = 0x800
-+	ATTR_FILE_DATALENGTH              = 0x200
-+	ATTR_FILE_DEVTYPE                 = 0x20
-+	ATTR_FILE_FILETYPE                = 0x40
-+	ATTR_FILE_FORKCOUNT               = 0x80
-+	ATTR_FILE_FORKLIST                = 0x100
-+	ATTR_FILE_IOBLOCKSIZE             = 0x8
-+	ATTR_FILE_LINKCOUNT               = 0x1
-+	ATTR_FILE_RSRCALLOCSIZE           = 0x2000
-+	ATTR_FILE_RSRCEXTENTS             = 0x4000
-+	ATTR_FILE_RSRCLENGTH              = 0x1000
-+	ATTR_FILE_SETMASK                 = 0x20
-+	ATTR_FILE_TOTALSIZE               = 0x2
-+	ATTR_FILE_VALIDMASK               = 0x37ff
-+	ATTR_VOL_ALLOCATIONCLUMP          = 0x40
-+	ATTR_VOL_ATTRIBUTES               = 0x40000000
-+	ATTR_VOL_CAPABILITIES             = 0x20000
-+	ATTR_VOL_DIRCOUNT                 = 0x400
-+	ATTR_VOL_ENCODINGSUSED            = 0x10000
-+	ATTR_VOL_FILECOUNT                = 0x200
-+	ATTR_VOL_FSTYPE                   = 0x1
-+	ATTR_VOL_INFO                     = 0x80000000
-+	ATTR_VOL_IOBLOCKSIZE              = 0x80
-+	ATTR_VOL_MAXOBJCOUNT              = 0x800
-+	ATTR_VOL_MINALLOCATION            = 0x20
-+	ATTR_VOL_MOUNTEDDEVICE            = 0x8000
-+	ATTR_VOL_MOUNTFLAGS               = 0x4000
-+	ATTR_VOL_MOUNTPOINT               = 0x1000
-+	ATTR_VOL_NAME                     = 0x2000
-+	ATTR_VOL_OBJCOUNT                 = 0x100
-+	ATTR_VOL_QUOTA_SIZE               = 0x10000000
-+	ATTR_VOL_RESERVED_SIZE            = 0x20000000
-+	ATTR_VOL_SETMASK                  = 0x80002000
-+	ATTR_VOL_SIGNATURE                = 0x2
-+	ATTR_VOL_SIZE                     = 0x4
-+	ATTR_VOL_SPACEAVAIL               = 0x10
-+	ATTR_VOL_SPACEFREE                = 0x8
-+	ATTR_VOL_UUID                     = 0x40000
-+	ATTR_VOL_VALIDMASK                = 0xf007ffff
- 	B0                                = 0x0
- 	B110                              = 0x6e
- 	B115200                           = 0x1c200
-@@ -169,6 +249,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DLT_A429                          = 0xb8
-@@ -390,6 +472,11 @@ const (
- 	FF1                               = 0x4000
- 	FFDLY                             = 0x4000
- 	FLUSHO                            = 0x800000
-+	FSOPT_ATTR_CMN_EXTENDED           = 0x20
-+	FSOPT_NOFOLLOW                    = 0x1
-+	FSOPT_NOINMEMUPDATE               = 0x2
-+	FSOPT_PACK_INVAL_ATTRS            = 0x8
-+	FSOPT_REPORT_FULLSIZE             = 0x4
- 	F_ADDFILESIGS                     = 0x3d
- 	F_ADDFILESIGS_FOR_DYLD_SIM        = 0x53
- 	F_ADDFILESIGS_RETURN              = 0x61
-@@ -425,6 +512,7 @@ const (
- 	F_PATHPKG_CHECK                   = 0x34
- 	F_PEOFPOSMODE                     = 0x3
- 	F_PREALLOCATE                     = 0x2a
-+	F_PUNCHHOLE                       = 0x63
- 	F_RDADVISE                        = 0x2c
- 	F_RDAHEAD                         = 0x2d
- 	F_RDLCK                           = 0x1
-@@ -441,10 +529,12 @@ const (
- 	F_SINGLE_WRITER                   = 0x4c
- 	F_THAW_FS                         = 0x36
- 	F_TRANSCODEKEY                    = 0x4b
-+	F_TRIM_ACTIVE_FILE                = 0x64
- 	F_UNLCK                           = 0x2
- 	F_VOLPOSMODE                      = 0x4
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -681,6 +771,7 @@ const (
- 	IPV6_FAITH                        = 0x1d
- 	IPV6_FLOWINFO_MASK                = 0xffffff0f
- 	IPV6_FLOWLABEL_MASK               = 0xffff0f00
-+	IPV6_FLOW_ECN_MASK                = 0x300
- 	IPV6_FRAGTTL                      = 0x3c
- 	IPV6_FW_ADD                       = 0x1e
- 	IPV6_FW_DEL                       = 0x1f
-@@ -771,6 +862,7 @@ const (
- 	IP_RECVOPTS                       = 0x5
- 	IP_RECVPKTINFO                    = 0x1a
- 	IP_RECVRETOPTS                    = 0x6
-+	IP_RECVTOS                        = 0x1b
- 	IP_RECVTTL                        = 0x18
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
-@@ -789,6 +881,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -884,6 +980,7 @@ const (
- 	NET_RT_MAXID                      = 0xa
- 	NET_RT_STAT                       = 0x4
- 	NET_RT_TRASH                      = 0x5
-+	NFDBITS                           = 0x20
- 	NL0                               = 0x0
- 	NL1                               = 0x100
- 	NL2                               = 0x200
-@@ -1377,6 +1474,12 @@ const (
- 	WORDSIZE                          = 0x40
- 	WSTOPPED                          = 0x8
- 	WUNTRACED                         = 0x2
-+	XATTR_CREATE                      = 0x2
-+	XATTR_NODEFAULT                   = 0x10
-+	XATTR_NOFOLLOW                    = 0x1
-+	XATTR_NOSECURITY                  = 0x8
-+	XATTR_REPLACE                     = 0x4
-+	XATTR_SHOWCOMPRESSION             = 0x20
- )
- 
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "device not configured",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource deadlock avoided",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "resource busy",
--	17:  "file exists",
--	18:  "cross-device link",
--	19:  "operation not supported by device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "result too large",
--	35:  "resource temporarily unavailable",
--	36:  "operation now in progress",
--	37:  "operation already in progress",
--	38:  "socket operation on non-socket",
--	39:  "destination address required",
--	40:  "message too long",
--	41:  "protocol wrong type for socket",
--	42:  "protocol not available",
--	43:  "protocol not supported",
--	44:  "socket type not supported",
--	45:  "operation not supported",
--	46:  "protocol family not supported",
--	47:  "address family not supported by protocol family",
--	48:  "address already in use",
--	49:  "can't assign requested address",
--	50:  "network is down",
--	51:  "network is unreachable",
--	52:  "network dropped connection on reset",
--	53:  "software caused connection abort",
--	54:  "connection reset by peer",
--	55:  "no buffer space available",
--	56:  "socket is already connected",
--	57:  "socket is not connected",
--	58:  "can't send after socket shutdown",
--	59:  "too many references: can't splice",
--	60:  "operation timed out",
--	61:  "connection refused",
--	62:  "too many levels of symbolic links",
--	63:  "file name too long",
--	64:  "host is down",
--	65:  "no route to host",
--	66:  "directory not empty",
--	67:  "too many processes",
--	68:  "too many users",
--	69:  "disc quota exceeded",
--	70:  "stale NFS file handle",
--	71:  "too many levels of remote in path",
--	72:  "RPC struct is bad",
--	73:  "RPC version wrong",
--	74:  "RPC prog. not avail",
--	75:  "program version wrong",
--	76:  "bad procedure for program",
--	77:  "no locks available",
--	78:  "function not implemented",
--	79:  "inappropriate file type or format",
--	80:  "authentication error",
--	81:  "need authenticator",
--	82:  "device power is off",
--	83:  "device error",
--	84:  "value too large to be stored in data type",
--	85:  "bad executable (or shared library)",
--	86:  "bad CPU type in executable",
--	87:  "shared library version mismatch",
--	88:  "malformed Mach-o file",
--	89:  "operation canceled",
--	90:  "identifier removed",
--	91:  "no message of desired type",
--	92:  "illegal byte sequence",
--	93:  "attribute not found",
--	94:  "bad message",
--	95:  "EMULTIHOP (Reserved)",
--	96:  "no message available on STREAM",
--	97:  "ENOLINK (Reserved)",
--	98:  "no STREAM resources",
--	99:  "not a STREAM",
--	100: "protocol error",
--	101: "STREAM ioctl timeout",
--	102: "operation not supported on socket",
--	103: "policy not found",
--	104: "state not recoverable",
--	105: "previous owner died",
--	106: "interface output queue is full",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "ENOTSUP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EPWROFF", "device power is off"},
-+	{83, "EDEVERR", "device error"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EBADEXEC", "bad executable (or shared library)"},
-+	{86, "EBADARCH", "bad CPU type in executable"},
-+	{87, "ESHLIBVERS", "shared library version mismatch"},
-+	{88, "EBADMACHO", "malformed Mach-o file"},
-+	{89, "ECANCELED", "operation canceled"},
-+	{90, "EIDRM", "identifier removed"},
-+	{91, "ENOMSG", "no message of desired type"},
-+	{92, "EILSEQ", "illegal byte sequence"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EBADMSG", "bad message"},
-+	{95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+	{96, "ENODATA", "no message available on STREAM"},
-+	{97, "ENOLINK", "ENOLINK (Reserved)"},
-+	{98, "ENOSR", "no STREAM resources"},
-+	{99, "ENOSTR", "not a STREAM"},
-+	{100, "EPROTO", "protocol error"},
-+	{101, "ETIME", "STREAM ioctl timeout"},
-+	{102, "EOPNOTSUPP", "operation not supported on socket"},
-+	{103, "ENOPOLICY", "policy not found"},
-+	{104, "ENOTRECOVERABLE", "state not recoverable"},
-+	{105, "EOWNERDEAD", "previous owner died"},
-+	{106, "EQFULL", "interface output queue is full"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-index 8f40598b..61304717 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-@@ -3,7 +3,7 @@
- 
- // +build amd64,dragonfly
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -168,6 +168,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DLT_A429                          = 0xb8
-@@ -353,6 +355,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -835,6 +838,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -873,6 +880,40 @@ const (
- 	MAP_VPAGETABLE                    = 0x2000
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_AUTOMOUNTED                   = 0x20
-+	MNT_CMDFLAGS                      = 0xf0000
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DELEXPORT                     = 0x20000
-+	MNT_EXKERB                        = 0x800
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXPUBLIC                      = 0x20000000
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_FORCE                         = 0x80000
-+	MNT_IGNORE                        = 0x800000
-+	MNT_LAZY                          = 0x4
-+	MNT_LOCAL                         = 0x1000
-+	MNT_NOATIME                       = 0x10000000
-+	MNT_NOCLUSTERR                    = 0x40000000
-+	MNT_NOCLUSTERW                    = 0x80000000
-+	MNT_NODEV                         = 0x10
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOSYMFOLLOW                   = 0x400000
-+	MNT_NOWAIT                        = 0x2
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x200000
-+	MNT_SUIDDIR                       = 0x100000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_TRIM                          = 0x1000000
-+	MNT_UPDATE                        = 0x10000
-+	MNT_USER                          = 0x8000
-+	MNT_VISFLAGMASK                   = 0xf1f0ffff
-+	MNT_WAIT                          = 0x1
- 	MSG_CMSG_CLOEXEC                  = 0x1000
- 	MSG_CTRUNC                        = 0x20
- 	MSG_DONTROUTE                     = 0x4
-@@ -897,6 +938,7 @@ const (
- 	NET_RT_FLAGS                      = 0x2
- 	NET_RT_IFLIST                     = 0x3
- 	NET_RT_MAXID                      = 0x4
-+	NFDBITS                           = 0x40
- 	NOFLSH                            = 0x80000000
- 	NOKERNINFO                        = 0x2000000
- 	NOTE_ATTRIB                       = 0x8
-@@ -973,7 +1015,10 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-@@ -1158,6 +1203,36 @@ const (
- 	SO_TIMESTAMP                      = 0x400
- 	SO_TYPE                           = 0x1008
- 	SO_USELOOPBACK                    = 0x40
-+	S_BLKSIZE                         = 0x200
-+	S_IEXEC                           = 0x40
-+	S_IFBLK                           = 0x6000
-+	S_IFCHR                           = 0x2000
-+	S_IFDB                            = 0x9000
-+	S_IFDIR                           = 0x4000
-+	S_IFIFO                           = 0x1000
-+	S_IFLNK                           = 0xa000
-+	S_IFMT                            = 0xf000
-+	S_IFREG                           = 0x8000
-+	S_IFSOCK                          = 0xc000
-+	S_IFWHT                           = 0xe000
-+	S_IREAD                           = 0x100
-+	S_IRGRP                           = 0x20
-+	S_IROTH                           = 0x4
-+	S_IRUSR                           = 0x100
-+	S_IRWXG                           = 0x38
-+	S_IRWXO                           = 0x7
-+	S_IRWXU                           = 0x1c0
-+	S_ISGID                           = 0x400
-+	S_ISTXT                           = 0x200
-+	S_ISUID                           = 0x800
-+	S_ISVTX                           = 0x200
-+	S_IWGRP                           = 0x10
-+	S_IWOTH                           = 0x2
-+	S_IWRITE                          = 0x80
-+	S_IWUSR                           = 0x80
-+	S_IXGRP                           = 0x8
-+	S_IXOTH                           = 0x1
-+	S_IXUSR                           = 0x40
- 	TCIFLUSH                          = 0x1
- 	TCIOFF                            = 0x3
- 	TCIOFLUSH                         = 0x3
-@@ -1427,142 +1502,150 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "operation timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "operation canceled",
--	86: "illegal byte sequence",
--	87: "attribute not found",
--	88: "programming error",
--	89: "bad message",
--	90: "multihop attempted",
--	91: "link has been severed",
--	92: "protocol error",
--	93: "no medium found",
--	94: "unknown error: 94",
--	95: "unknown error: 95",
--	96: "unknown error: 96",
--	97: "unknown error: 97",
--	98: "unknown error: 98",
--	99: "unknown error: 99",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "ECANCELED", "operation canceled"},
-+	{86, "EILSEQ", "illegal byte sequence"},
-+	{87, "ENOATTR", "attribute not found"},
-+	{88, "EDOOFUS", "programming error"},
-+	{89, "EBADMSG", "bad message"},
-+	{90, "EMULTIHOP", "multihop attempted"},
-+	{91, "ENOLINK", "link has been severed"},
-+	{92, "EPROTO", "protocol error"},
-+	{93, "ENOMEDIUM", "no medium found"},
-+	{94, "EUNUSED94", "unknown error: 94"},
-+	{95, "EUNUSED95", "unknown error: 95"},
-+	{96, "EUNUSED96", "unknown error: 96"},
-+	{97, "EUNUSED97", "unknown error: 97"},
-+	{98, "EUNUSED98", "unknown error: 98"},
-+	{99, "ELAST", "unknown error: 99"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "thread Scheduler",
--	33: "checkPoint",
--	34: "checkPointExit",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "thread Scheduler"},
-+	{33, "SIGCKPT", "checkPoint"},
-+	{34, "SIGCKPTEXIT", "checkPointExit"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-index 1d3eec44..84824587 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-@@ -3,7 +3,7 @@
- 
- // +build 386,freebsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
- 
- package unix
-@@ -351,8 +351,26 @@ const (
- 	CSTOP                          = 0x13
- 	CSTOPB                         = 0x400
- 	CSUSP                          = 0x1a
-+	CTL_HW                         = 0x6
-+	CTL_KERN                       = 0x1
- 	CTL_MAXNAME                    = 0x18
- 	CTL_NET                        = 0x4
-+	DIOCGATTR                      = 0xc144648e
-+	DIOCGDELETE                    = 0x80106488
-+	DIOCGFLUSH                     = 0x20006487
-+	DIOCGFRONTSTUFF                = 0x40086486
-+	DIOCGFWHEADS                   = 0x40046483
-+	DIOCGFWSECTORS                 = 0x40046482
-+	DIOCGIDENT                     = 0x41006489
-+	DIOCGMEDIASIZE                 = 0x40086481
-+	DIOCGPHYSPATH                  = 0x4400648d
-+	DIOCGPROVIDERNAME              = 0x4400648a
-+	DIOCGSECTORSIZE                = 0x40046480
-+	DIOCGSTRIPEOFFSET              = 0x4008648c
-+	DIOCGSTRIPESIZE                = 0x4008648b
-+	DIOCSKERNELDUMP                = 0x804c6490
-+	DIOCSKERNELDUMP_FREEBSD11      = 0x80046485
-+	DIOCZONECMD                    = 0xc06c648f
- 	DLT_A429                       = 0xb8
- 	DLT_A653_ICM                   = 0xb9
- 	DLT_AIRONET_HEADER             = 0x78
-@@ -377,11 +395,14 @@ const (
- 	DLT_CHAOS                      = 0x5
- 	DLT_CHDLC                      = 0x68
- 	DLT_CISCO_IOS                  = 0x76
-+	DLT_CLASS_NETBSD_RAWAF         = 0x2240000
- 	DLT_C_HDLC                     = 0x68
- 	DLT_C_HDLC_WITH_DIR            = 0xcd
- 	DLT_DBUS                       = 0xe7
- 	DLT_DECT                       = 0xdd
-+	DLT_DISPLAYPORT_AUX            = 0x113
- 	DLT_DOCSIS                     = 0x8f
-+	DLT_DOCSIS31_XRA31             = 0x111
- 	DLT_DVB_CI                     = 0xeb
- 	DLT_ECONET                     = 0x73
- 	DLT_EN10MB                     = 0x1
-@@ -391,6 +412,7 @@ const (
- 	DLT_ERF                        = 0xc5
- 	DLT_ERF_ETH                    = 0xaf
- 	DLT_ERF_POS                    = 0xb0
-+	DLT_ETHERNET_MPACKET           = 0x112
- 	DLT_FC_2                       = 0xe0
- 	DLT_FC_2_WITH_FRAME_DELIMS     = 0xe1
- 	DLT_FDDI                       = 0xa
-@@ -404,7 +426,6 @@ const (
- 	DLT_GPRS_LLC                   = 0xa9
- 	DLT_GSMTAP_ABIS                = 0xda
- 	DLT_GSMTAP_UM                  = 0xd9
--	DLT_HHDLC                      = 0x79
- 	DLT_IBM_SN                     = 0x92
- 	DLT_IBM_SP                     = 0x91
- 	DLT_IEEE802                    = 0x6
-@@ -427,6 +448,7 @@ const (
- 	DLT_IPV4                       = 0xe4
- 	DLT_IPV6                       = 0xe5
- 	DLT_IP_OVER_FC                 = 0x7a
-+	DLT_ISO_14443                  = 0x108
- 	DLT_JUNIPER_ATM1               = 0x89
- 	DLT_JUNIPER_ATM2               = 0x87
- 	DLT_JUNIPER_ATM_CEMIC          = 0xee
-@@ -459,8 +481,9 @@ const (
- 	DLT_LINUX_PPP_WITHDIRECTION    = 0xa6
- 	DLT_LINUX_SLL                  = 0x71
- 	DLT_LOOP                       = 0x6c
-+	DLT_LORATAP                    = 0x10e
- 	DLT_LTALK                      = 0x72
--	DLT_MATCHING_MAX               = 0x104
-+	DLT_MATCHING_MAX               = 0x113
- 	DLT_MATCHING_MIN               = 0x68
- 	DLT_MFR                        = 0xb6
- 	DLT_MOST                       = 0xd3
-@@ -476,14 +499,16 @@ const (
- 	DLT_NFC_LLCP                   = 0xf5
- 	DLT_NFLOG                      = 0xef
- 	DLT_NG40                       = 0xf4
-+	DLT_NORDIC_BLE                 = 0x110
- 	DLT_NULL                       = 0x0
-+	DLT_OPENFLOW                   = 0x10b
- 	DLT_PCI_EXP                    = 0x7d
- 	DLT_PFLOG                      = 0x75
- 	DLT_PFSYNC                     = 0x79
- 	DLT_PKTAP                      = 0x102
- 	DLT_PPI                        = 0xc0
- 	DLT_PPP                        = 0x9
--	DLT_PPP_BSDOS                  = 0x10
-+	DLT_PPP_BSDOS                  = 0xe
- 	DLT_PPP_ETHER                  = 0x33
- 	DLT_PPP_PPPD                   = 0xa6
- 	DLT_PPP_SERIAL                 = 0x32
-@@ -494,19 +519,25 @@ const (
- 	DLT_PRONET                     = 0x4
- 	DLT_RAIF1                      = 0xc6
- 	DLT_RAW                        = 0xc
-+	DLT_RDS                        = 0x109
-+	DLT_REDBACK_SMARTEDGE          = 0x20
- 	DLT_RIO                        = 0x7c
- 	DLT_RTAC_SERIAL                = 0xfa
- 	DLT_SCCP                       = 0x8e
- 	DLT_SCTP                       = 0xf8
-+	DLT_SDLC                       = 0x10c
- 	DLT_SITA                       = 0xc4
- 	DLT_SLIP                       = 0x8
--	DLT_SLIP_BSDOS                 = 0xf
-+	DLT_SLIP_BSDOS                 = 0xd
- 	DLT_STANAG_5066_D_PDU          = 0xed
- 	DLT_SUNATM                     = 0x7b
- 	DLT_SYMANTEC_FIREWALL          = 0x63
-+	DLT_TI_LLN_SNIFFER             = 0x10d
- 	DLT_TZSP                       = 0x80
- 	DLT_USB                        = 0xba
- 	DLT_USBPCAP                    = 0xf9
-+	DLT_USB_DARWIN                 = 0x10a
-+	DLT_USB_FREEBSD                = 0xba
- 	DLT_USB_LINUX                  = 0xbd
- 	DLT_USB_LINUX_MMAPPED          = 0xdc
- 	DLT_USER0                      = 0x93
-@@ -525,10 +556,14 @@ const (
- 	DLT_USER7                      = 0x9a
- 	DLT_USER8                      = 0x9b
- 	DLT_USER9                      = 0x9c
-+	DLT_VSOCK                      = 0x10f
-+	DLT_WATTSTOPPER_DLM            = 0x107
- 	DLT_WIHART                     = 0xdf
- 	DLT_WIRESHARK_UPPER_PDU        = 0xfc
- 	DLT_X2E_SERIAL                 = 0xd5
- 	DLT_X2E_XORAYA                 = 0xd6
-+	DLT_ZWAVE_R1_R2                = 0x105
-+	DLT_ZWAVE_R3                   = 0x106
- 	DT_BLK                         = 0x6
- 	DT_CHR                         = 0x2
- 	DT_DIR                         = 0x4
-@@ -546,6 +581,7 @@ const (
- 	ECHONL                         = 0x10
- 	ECHOPRT                        = 0x20
- 	EVFILT_AIO                     = -0x3
-+	EVFILT_EMPTY                   = -0xd
- 	EVFILT_FS                      = -0x9
- 	EVFILT_LIO                     = -0xa
- 	EVFILT_PROC                    = -0x5
-@@ -553,11 +589,12 @@ const (
- 	EVFILT_READ                    = -0x1
- 	EVFILT_SENDFILE                = -0xc
- 	EVFILT_SIGNAL                  = -0x6
--	EVFILT_SYSCOUNT                = 0xc
-+	EVFILT_SYSCOUNT                = 0xd
- 	EVFILT_TIMER                   = -0x7
- 	EVFILT_USER                    = -0xb
- 	EVFILT_VNODE                   = -0x4
- 	EVFILT_WRITE                   = -0x2
-+	EVNAMEMAP_NAME_SIZE            = 0x40
- 	EV_ADD                         = 0x1
- 	EV_CLEAR                       = 0x20
- 	EV_DELETE                      = 0x2
-@@ -574,6 +611,7 @@ const (
- 	EV_RECEIPT                     = 0x40
- 	EV_SYSFLAGS                    = 0xf000
- 	EXTA                           = 0x4b00
-+	EXTATTR_MAXNAMELEN             = 0xff
- 	EXTATTR_NAMESPACE_EMPTY        = 0x0
- 	EXTATTR_NAMESPACE_SYSTEM       = 0x2
- 	EXTATTR_NAMESPACE_USER         = 0x1
-@@ -608,12 +646,14 @@ const (
- 	F_UNLCKSYS                     = 0x4
- 	F_WRLCK                        = 0x3
- 	HUPCL                          = 0x4000
-+	HW_MACHINE                     = 0x1
- 	ICANON                         = 0x100
- 	ICMP6_FILTER                   = 0x12
- 	ICRNL                          = 0x100
- 	IEXTEN                         = 0x400
- 	IFAN_ARRIVAL                   = 0x0
- 	IFAN_DEPARTURE                 = 0x1
-+	IFCAP_WOL_MAGIC                = 0x2000
- 	IFF_ALLMULTI                   = 0x200
- 	IFF_ALTPHYS                    = 0x4000
- 	IFF_BROADCAST                  = 0x2
-@@ -630,6 +670,7 @@ const (
- 	IFF_MONITOR                    = 0x40000
- 	IFF_MULTICAST                  = 0x8000
- 	IFF_NOARP                      = 0x80
-+	IFF_NOGROUP                    = 0x800000
- 	IFF_OACTIVE                    = 0x400
- 	IFF_POINTOPOINT                = 0x10
- 	IFF_PPROMISC                   = 0x20000
-@@ -804,6 +845,7 @@ const (
- 	IPV6_DSTOPTS                   = 0x32
- 	IPV6_FLOWID                    = 0x43
- 	IPV6_FLOWINFO_MASK             = 0xffffff0f
-+	IPV6_FLOWLABEL_LEN             = 0x14
- 	IPV6_FLOWLABEL_MASK            = 0xffff0f00
- 	IPV6_FLOWTYPE                  = 0x44
- 	IPV6_FRAGTTL                   = 0x78
-@@ -824,13 +866,13 @@ const (
- 	IPV6_MAX_GROUP_SRC_FILTER      = 0x200
- 	IPV6_MAX_MEMBERSHIPS           = 0xfff
- 	IPV6_MAX_SOCK_SRC_FILTER       = 0x80
--	IPV6_MIN_MEMBERSHIPS           = 0x1f
- 	IPV6_MMTU                      = 0x500
- 	IPV6_MSFILTER                  = 0x4a
- 	IPV6_MULTICAST_HOPS            = 0xa
- 	IPV6_MULTICAST_IF              = 0x9
- 	IPV6_MULTICAST_LOOP            = 0xb
- 	IPV6_NEXTHOP                   = 0x30
-+	IPV6_ORIGDSTADDR               = 0x48
- 	IPV6_PATHMTU                   = 0x2c
- 	IPV6_PKTINFO                   = 0x2e
- 	IPV6_PORTRANGE                 = 0xe
-@@ -842,6 +884,7 @@ const (
- 	IPV6_RECVFLOWID                = 0x46
- 	IPV6_RECVHOPLIMIT              = 0x25
- 	IPV6_RECVHOPOPTS               = 0x27
-+	IPV6_RECVORIGDSTADDR           = 0x48
- 	IPV6_RECVPATHMTU               = 0x2b
- 	IPV6_RECVPKTINFO               = 0x24
- 	IPV6_RECVRSSBUCKETID           = 0x47
-@@ -902,10 +945,8 @@ const (
- 	IP_MAX_MEMBERSHIPS             = 0xfff
- 	IP_MAX_SOCK_MUTE_FILTER        = 0x80
- 	IP_MAX_SOCK_SRC_FILTER         = 0x80
--	IP_MAX_SOURCE_FILTER           = 0x400
- 	IP_MF                          = 0x2000
- 	IP_MINTTL                      = 0x42
--	IP_MIN_MEMBERSHIPS             = 0x1f
- 	IP_MSFILTER                    = 0x4a
- 	IP_MSS                         = 0x240
- 	IP_MULTICAST_IF                = 0x9
-@@ -915,6 +956,7 @@ const (
- 	IP_OFFMASK                     = 0x1fff
- 	IP_ONESBCAST                   = 0x17
- 	IP_OPTIONS                     = 0x1
-+	IP_ORIGDSTADDR                 = 0x1b
- 	IP_PORTRANGE                   = 0x13
- 	IP_PORTRANGE_DEFAULT           = 0x0
- 	IP_PORTRANGE_HIGH              = 0x1
-@@ -923,6 +965,7 @@ const (
- 	IP_RECVFLOWID                  = 0x5d
- 	IP_RECVIF                      = 0x14
- 	IP_RECVOPTS                    = 0x5
-+	IP_RECVORIGDSTADDR             = 0x1b
- 	IP_RECVRETOPTS                 = 0x6
- 	IP_RECVRSSBUCKETID             = 0x5e
- 	IP_RECVTOS                     = 0x44
-@@ -944,6 +987,10 @@ const (
- 	IXANY                          = 0x800
- 	IXOFF                          = 0x400
- 	IXON                           = 0x200
-+	KERN_HOSTNAME                  = 0xa
-+	KERN_OSRELEASE                 = 0x2
-+	KERN_OSTYPE                    = 0x1
-+	KERN_VERSION                   = 0x4
- 	LOCK_EX                        = 0x2
- 	LOCK_NB                        = 0x4
- 	LOCK_SH                        = 0x1
-@@ -968,6 +1015,7 @@ const (
- 	MAP_EXCL                       = 0x4000
- 	MAP_FILE                       = 0x0
- 	MAP_FIXED                      = 0x10
-+	MAP_GUARD                      = 0x2000
- 	MAP_HASSEMAPHORE               = 0x200
- 	MAP_NOCORE                     = 0x20000
- 	MAP_NOSYNC                     = 0x800
-@@ -979,8 +1027,62 @@ const (
- 	MAP_RESERVED0100               = 0x100
- 	MAP_SHARED                     = 0x1
- 	MAP_STACK                      = 0x400
-+	MCAST_BLOCK_SOURCE             = 0x54
-+	MCAST_EXCLUDE                  = 0x2
-+	MCAST_INCLUDE                  = 0x1
-+	MCAST_JOIN_GROUP               = 0x50
-+	MCAST_JOIN_SOURCE_GROUP        = 0x52
-+	MCAST_LEAVE_GROUP              = 0x51
-+	MCAST_LEAVE_SOURCE_GROUP       = 0x53
-+	MCAST_UNBLOCK_SOURCE           = 0x55
-+	MCAST_UNDEFINED                = 0x0
- 	MCL_CURRENT                    = 0x1
- 	MCL_FUTURE                     = 0x2
-+	MNT_ACLS                       = 0x8000000
-+	MNT_ASYNC                      = 0x40
-+	MNT_AUTOMOUNTED                = 0x200000000
-+	MNT_BYFSID                     = 0x8000000
-+	MNT_CMDFLAGS                   = 0xd0f0000
-+	MNT_DEFEXPORTED                = 0x200
-+	MNT_DELEXPORT                  = 0x20000
-+	MNT_EXKERB                     = 0x800
-+	MNT_EXPORTANON                 = 0x400
-+	MNT_EXPORTED                   = 0x100
-+	MNT_EXPUBLIC                   = 0x20000000
-+	MNT_EXRDONLY                   = 0x80
-+	MNT_FORCE                      = 0x80000
-+	MNT_GJOURNAL                   = 0x2000000
-+	MNT_IGNORE                     = 0x800000
-+	MNT_LAZY                       = 0x3
-+	MNT_LOCAL                      = 0x1000
-+	MNT_MULTILABEL                 = 0x4000000
-+	MNT_NFS4ACLS                   = 0x10
-+	MNT_NOATIME                    = 0x10000000
-+	MNT_NOCLUSTERR                 = 0x40000000
-+	MNT_NOCLUSTERW                 = 0x80000000
-+	MNT_NOEXEC                     = 0x4
-+	MNT_NONBUSY                    = 0x4000000
-+	MNT_NOSUID                     = 0x8
-+	MNT_NOSYMFOLLOW                = 0x400000
-+	MNT_NOWAIT                     = 0x2
-+	MNT_QUOTA                      = 0x2000
-+	MNT_RDONLY                     = 0x1
-+	MNT_RELOAD                     = 0x40000
-+	MNT_ROOTFS                     = 0x4000
-+	MNT_SNAPSHOT                   = 0x1000000
-+	MNT_SOFTDEP                    = 0x200000
-+	MNT_SUIDDIR                    = 0x100000
-+	MNT_SUJ                        = 0x100000000
-+	MNT_SUSPEND                    = 0x4
-+	MNT_SYNCHRONOUS                = 0x2
-+	MNT_UNION                      = 0x20
-+	MNT_UNTRUSTED                  = 0x800000000
-+	MNT_UPDATE                     = 0x10000
-+	MNT_UPDATEMASK                 = 0xad8d0807e
-+	MNT_USER                       = 0x8000
-+	MNT_VERIFIED                   = 0x400000000
-+	MNT_VISFLAGMASK                = 0xffef0ffff
-+	MNT_WAIT                       = 0x1
- 	MSG_CMSG_CLOEXEC               = 0x40000
- 	MSG_COMPAT                     = 0x8000
- 	MSG_CTRUNC                     = 0x20
-@@ -1005,8 +1107,10 @@ const (
- 	NET_RT_IFLIST                  = 0x3
- 	NET_RT_IFLISTL                 = 0x5
- 	NET_RT_IFMALIST                = 0x4
-+	NFDBITS                        = 0x20
- 	NOFLSH                         = 0x80000000
- 	NOKERNINFO                     = 0x2000000
-+	NOTE_ABSTIME                   = 0x10
- 	NOTE_ATTRIB                    = 0x8
- 	NOTE_CHILD                     = 0x4
- 	NOTE_CLOSE                     = 0x100
-@@ -1161,7 +1265,6 @@ const (
- 	RTV_WEIGHT                     = 0x100
- 	RT_ALL_FIBS                    = -0x1
- 	RT_BLACKHOLE                   = 0x40
--	RT_CACHING_CONTEXT             = 0x1
- 	RT_DEFAULT_FIB                 = 0x0
- 	RT_HAS_GW                      = 0x80
- 	RT_HAS_HEADER                  = 0x10
-@@ -1171,15 +1274,17 @@ const (
- 	RT_LLE_CACHE                   = 0x100
- 	RT_MAY_LOOP                    = 0x8
- 	RT_MAY_LOOP_BIT                = 0x3
--	RT_NORTREF                     = 0x2
- 	RT_REJECT                      = 0x20
- 	RUSAGE_CHILDREN                = -0x1
- 	RUSAGE_SELF                    = 0x0
- 	RUSAGE_THREAD                  = 0x1
- 	SCM_BINTIME                    = 0x4
- 	SCM_CREDS                      = 0x3
-+	SCM_MONOTONIC                  = 0x6
-+	SCM_REALTIME                   = 0x5
- 	SCM_RIGHTS                     = 0x1
- 	SCM_TIMESTAMP                  = 0x2
-+	SCM_TIME_INFO                  = 0x7
- 	SHUT_RD                        = 0x0
- 	SHUT_RDWR                      = 0x2
- 	SHUT_WR                        = 0x1
-@@ -1195,6 +1300,7 @@ const (
- 	SIOCGETSGCNT                   = 0xc0147210
- 	SIOCGETVIFCNT                  = 0xc014720f
- 	SIOCGHIWAT                     = 0x40047301
-+	SIOCGHWADDR                    = 0xc020693e
- 	SIOCGI2C                       = 0xc020693d
- 	SIOCGIFADDR                    = 0xc0206921
- 	SIOCGIFBRDADDR                 = 0xc0206923
-@@ -1216,8 +1322,11 @@ const (
- 	SIOCGIFPDSTADDR                = 0xc0206948
- 	SIOCGIFPHYS                    = 0xc0206935
- 	SIOCGIFPSRCADDR                = 0xc0206947
-+	SIOCGIFRSSHASH                 = 0xc0186997
-+	SIOCGIFRSSKEY                  = 0xc0946996
- 	SIOCGIFSTATUS                  = 0xc331693b
- 	SIOCGIFXMEDIA                  = 0xc028698b
-+	SIOCGLANPCP                    = 0xc0206998
- 	SIOCGLOWAT                     = 0x40047303
- 	SIOCGPGRP                      = 0x40047309
- 	SIOCGPRIVATE_0                 = 0xc0206950
-@@ -1248,6 +1357,7 @@ const (
- 	SIOCSIFPHYS                    = 0x80206936
- 	SIOCSIFRVNET                   = 0xc020695b
- 	SIOCSIFVNET                    = 0xc020695a
-+	SIOCSLANPCP                    = 0x80206999
- 	SIOCSLOWAT                     = 0x80047302
- 	SIOCSPGRP                      = 0x80047308
- 	SIOCSTUNFIB                    = 0x8020695f
-@@ -1266,6 +1376,7 @@ const (
- 	SO_BINTIME                     = 0x2000
- 	SO_BROADCAST                   = 0x20
- 	SO_DEBUG                       = 0x1
-+	SO_DOMAIN                      = 0x1019
- 	SO_DONTROUTE                   = 0x10
- 	SO_ERROR                       = 0x1007
- 	SO_KEEPALIVE                   = 0x8
-@@ -1274,6 +1385,7 @@ const (
- 	SO_LISTENINCQLEN               = 0x1013
- 	SO_LISTENQLEN                  = 0x1012
- 	SO_LISTENQLIMIT                = 0x1011
-+	SO_MAX_PACING_RATE             = 0x1018
- 	SO_NOSIGPIPE                   = 0x800
- 	SO_NO_DDP                      = 0x8000
- 	SO_NO_OFFLOAD                  = 0x4000
-@@ -1286,15 +1398,52 @@ const (
- 	SO_RCVTIMEO                    = 0x1006
- 	SO_REUSEADDR                   = 0x4
- 	SO_REUSEPORT                   = 0x200
-+	SO_REUSEPORT_LB                = 0x10000
- 	SO_SETFIB                      = 0x1014
- 	SO_SNDBUF                      = 0x1001
- 	SO_SNDLOWAT                    = 0x1003
- 	SO_SNDTIMEO                    = 0x1005
- 	SO_TIMESTAMP                   = 0x400
-+	SO_TS_BINTIME                  = 0x1
-+	SO_TS_CLOCK                    = 0x1017
-+	SO_TS_CLOCK_MAX                = 0x3
-+	SO_TS_DEFAULT                  = 0x0
-+	SO_TS_MONOTONIC                = 0x3
-+	SO_TS_REALTIME                 = 0x2
-+	SO_TS_REALTIME_MICRO           = 0x0
- 	SO_TYPE                        = 0x1008
- 	SO_USELOOPBACK                 = 0x40
- 	SO_USER_COOKIE                 = 0x1015
- 	SO_VENDOR                      = 0x80000000
-+	S_BLKSIZE                      = 0x200
-+	S_IEXEC                        = 0x40
-+	S_IFBLK                        = 0x6000
-+	S_IFCHR                        = 0x2000
-+	S_IFDIR                        = 0x4000
-+	S_IFIFO                        = 0x1000
-+	S_IFLNK                        = 0xa000
-+	S_IFMT                         = 0xf000
-+	S_IFREG                        = 0x8000
-+	S_IFSOCK                       = 0xc000
-+	S_IFWHT                        = 0xe000
-+	S_IREAD                        = 0x100
-+	S_IRGRP                        = 0x20
-+	S_IROTH                        = 0x4
-+	S_IRUSR                        = 0x100
-+	S_IRWXG                        = 0x38
-+	S_IRWXO                        = 0x7
-+	S_IRWXU                        = 0x1c0
-+	S_ISGID                        = 0x400
-+	S_ISTXT                        = 0x200
-+	S_ISUID                        = 0x800
-+	S_ISVTX                        = 0x200
-+	S_IWGRP                        = 0x10
-+	S_IWOTH                        = 0x2
-+	S_IWRITE                       = 0x80
-+	S_IWUSR                        = 0x80
-+	S_IXGRP                        = 0x8
-+	S_IXOTH                        = 0x1
-+	S_IXUSR                        = 0x40
- 	TAB0                           = 0x0
- 	TAB3                           = 0x4
- 	TABDLY                         = 0x4
-@@ -1305,10 +1454,45 @@ const (
- 	TCOFLUSH                       = 0x2
- 	TCOOFF                         = 0x1
- 	TCOON                          = 0x2
-+	TCP_BBR_ACK_COMP_ALG           = 0x448
-+	TCP_BBR_DRAIN_INC_EXTRA        = 0x43c
-+	TCP_BBR_DRAIN_PG               = 0x42e
-+	TCP_BBR_EXTRA_GAIN             = 0x449
-+	TCP_BBR_IWINTSO                = 0x42b
-+	TCP_BBR_LOWGAIN_FD             = 0x436
-+	TCP_BBR_LOWGAIN_HALF           = 0x435
-+	TCP_BBR_LOWGAIN_THRESH         = 0x434
-+	TCP_BBR_MAX_RTO                = 0x439
-+	TCP_BBR_MIN_RTO                = 0x438
-+	TCP_BBR_ONE_RETRAN             = 0x431
-+	TCP_BBR_PACE_CROSS             = 0x442
-+	TCP_BBR_PACE_DEL_TAR           = 0x43f
-+	TCP_BBR_PACE_PER_SEC           = 0x43e
-+	TCP_BBR_PACE_SEG_MAX           = 0x440
-+	TCP_BBR_PACE_SEG_MIN           = 0x441
-+	TCP_BBR_PROBE_RTT_GAIN         = 0x44d
-+	TCP_BBR_PROBE_RTT_INT          = 0x430
-+	TCP_BBR_PROBE_RTT_LEN          = 0x44e
-+	TCP_BBR_RACK_RTT_USE           = 0x44a
-+	TCP_BBR_RECFORCE               = 0x42c
-+	TCP_BBR_REC_OVER_HPTS          = 0x43a
-+	TCP_BBR_RETRAN_WTSO            = 0x44b
-+	TCP_BBR_RWND_IS_APP            = 0x42f
-+	TCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d
-+	TCP_BBR_STARTUP_LOSS_EXIT      = 0x432
-+	TCP_BBR_STARTUP_PG             = 0x42d
-+	TCP_BBR_UNLIMITED              = 0x43b
-+	TCP_BBR_USEDEL_RATE            = 0x437
-+	TCP_BBR_USE_LOWGAIN            = 0x433
- 	TCP_CA_NAME_MAX                = 0x10
- 	TCP_CCALGOOPT                  = 0x41
- 	TCP_CONGESTION                 = 0x40
-+	TCP_DATA_AFTER_CLOSE           = 0x44c
-+	TCP_DELACK                     = 0x48
- 	TCP_FASTOPEN                   = 0x401
-+	TCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10
-+	TCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4
-+	TCP_FASTOPEN_PSK_LEN           = 0x10
- 	TCP_FUNCTION_BLK               = 0x2000
- 	TCP_FUNCTION_NAME_LEN_MAX      = 0x20
- 	TCP_INFO                       = 0x20
-@@ -1316,6 +1500,12 @@ const (
- 	TCP_KEEPIDLE                   = 0x100
- 	TCP_KEEPINIT                   = 0x80
- 	TCP_KEEPINTVL                  = 0x200
-+	TCP_LOG                        = 0x22
-+	TCP_LOGBUF                     = 0x23
-+	TCP_LOGDUMP                    = 0x25
-+	TCP_LOGDUMPID                  = 0x26
-+	TCP_LOGID                      = 0x24
-+	TCP_LOG_ID_LEN                 = 0x40
- 	TCP_MAXBURST                   = 0x4
- 	TCP_MAXHLEN                    = 0x3c
- 	TCP_MAXOLEN                    = 0x28
-@@ -1331,8 +1521,30 @@ const (
- 	TCP_NOPUSH                     = 0x4
- 	TCP_PCAP_IN                    = 0x1000
- 	TCP_PCAP_OUT                   = 0x800
-+	TCP_RACK_EARLY_RECOV           = 0x423
-+	TCP_RACK_EARLY_SEG             = 0x424
-+	TCP_RACK_IDLE_REDUCE_HIGH      = 0x444
-+	TCP_RACK_MIN_PACE              = 0x445
-+	TCP_RACK_MIN_PACE_SEG          = 0x446
-+	TCP_RACK_MIN_TO                = 0x422
-+	TCP_RACK_PACE_ALWAYS           = 0x41f
-+	TCP_RACK_PACE_MAX_SEG          = 0x41e
-+	TCP_RACK_PACE_REDUCE           = 0x41d
-+	TCP_RACK_PKT_DELAY             = 0x428
-+	TCP_RACK_PROP                  = 0x41b
-+	TCP_RACK_PROP_RATE             = 0x420
-+	TCP_RACK_PRR_SENDALOT          = 0x421
-+	TCP_RACK_REORD_FADE            = 0x426
-+	TCP_RACK_REORD_THRESH          = 0x425
-+	TCP_RACK_SESS_CWV              = 0x42a
-+	TCP_RACK_TLP_INC_VAR           = 0x429
-+	TCP_RACK_TLP_REDUCE            = 0x41c
-+	TCP_RACK_TLP_THRESH            = 0x427
-+	TCP_RACK_TLP_USE               = 0x447
- 	TCP_VENDOR                     = 0x80000000
- 	TCSAFLUSH                      = 0x2
-+	TIMER_ABSTIME                  = 0x1
-+	TIMER_RELTIME                  = 0x0
- 	TIOCCBRK                       = 0x2000747a
- 	TIOCCDTR                       = 0x20007478
- 	TIOCCONS                       = 0x80047462
-@@ -1396,6 +1608,8 @@ const (
- 	TIOCTIMESTAMP                  = 0x40087459
- 	TIOCUCNTL                      = 0x80047466
- 	TOSTOP                         = 0x400000
-+	UTIME_NOW                      = -0x1
-+	UTIME_OMIT                     = -0x2
- 	VDISCARD                       = 0xf
- 	VDSUSP                         = 0xb
- 	VEOF                           = 0x0
-@@ -1407,6 +1621,8 @@ const (
- 	VKILL                          = 0x5
- 	VLNEXT                         = 0xe
- 	VMIN                           = 0x10
-+	VM_BCACHE_SIZE_MAX             = 0x70e0000
-+	VM_SWZONE_SIZE_MAX             = 0x2280000
- 	VQUIT                          = 0x9
- 	VREPRINT                       = 0x6
- 	VSTART                         = 0xc
-@@ -1569,138 +1785,146 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "operation timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "operation canceled",
--	86: "illegal byte sequence",
--	87: "attribute not found",
--	88: "programming error",
--	89: "bad message",
--	90: "multihop attempted",
--	91: "link has been severed",
--	92: "protocol error",
--	93: "capabilities insufficient",
--	94: "not permitted in capability mode",
--	95: "state not recoverable",
--	96: "previous owner died",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "ECANCELED", "operation canceled"},
-+	{86, "EILSEQ", "illegal byte sequence"},
-+	{87, "ENOATTR", "attribute not found"},
-+	{88, "EDOOFUS", "programming error"},
-+	{89, "EBADMSG", "bad message"},
-+	{90, "EMULTIHOP", "multihop attempted"},
-+	{91, "ENOLINK", "link has been severed"},
-+	{92, "EPROTO", "protocol error"},
-+	{93, "ENOTCAPABLE", "capabilities insufficient"},
-+	{94, "ECAPMODE", "not permitted in capability mode"},
-+	{95, "ENOTRECOVERABLE", "state not recoverable"},
-+	{96, "EOWNERDEAD", "previous owner died"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "unknown signal",
--	33: "unknown signal",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "unknown signal"},
-+	{33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-index ac094f9c..4acd101c 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-@@ -3,7 +3,7 @@
- 
- // +build amd64,freebsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -351,8 +351,26 @@ const (
- 	CSTOP                          = 0x13
- 	CSTOPB                         = 0x400
- 	CSUSP                          = 0x1a
-+	CTL_HW                         = 0x6
-+	CTL_KERN                       = 0x1
- 	CTL_MAXNAME                    = 0x18
- 	CTL_NET                        = 0x4
-+	DIOCGATTR                      = 0xc148648e
-+	DIOCGDELETE                    = 0x80106488
-+	DIOCGFLUSH                     = 0x20006487
-+	DIOCGFRONTSTUFF                = 0x40086486
-+	DIOCGFWHEADS                   = 0x40046483
-+	DIOCGFWSECTORS                 = 0x40046482
-+	DIOCGIDENT                     = 0x41006489
-+	DIOCGMEDIASIZE                 = 0x40086481
-+	DIOCGPHYSPATH                  = 0x4400648d
-+	DIOCGPROVIDERNAME              = 0x4400648a
-+	DIOCGSECTORSIZE                = 0x40046480
-+	DIOCGSTRIPEOFFSET              = 0x4008648c
-+	DIOCGSTRIPESIZE                = 0x4008648b
-+	DIOCSKERNELDUMP                = 0x80506490
-+	DIOCSKERNELDUMP_FREEBSD11      = 0x80046485
-+	DIOCZONECMD                    = 0xc080648f
- 	DLT_A429                       = 0xb8
- 	DLT_A653_ICM                   = 0xb9
- 	DLT_AIRONET_HEADER             = 0x78
-@@ -377,11 +395,14 @@ const (
- 	DLT_CHAOS                      = 0x5
- 	DLT_CHDLC                      = 0x68
- 	DLT_CISCO_IOS                  = 0x76
-+	DLT_CLASS_NETBSD_RAWAF         = 0x2240000
- 	DLT_C_HDLC                     = 0x68
- 	DLT_C_HDLC_WITH_DIR            = 0xcd
- 	DLT_DBUS                       = 0xe7
- 	DLT_DECT                       = 0xdd
-+	DLT_DISPLAYPORT_AUX            = 0x113
- 	DLT_DOCSIS                     = 0x8f
-+	DLT_DOCSIS31_XRA31             = 0x111
- 	DLT_DVB_CI                     = 0xeb
- 	DLT_ECONET                     = 0x73
- 	DLT_EN10MB                     = 0x1
-@@ -391,6 +412,7 @@ const (
- 	DLT_ERF                        = 0xc5
- 	DLT_ERF_ETH                    = 0xaf
- 	DLT_ERF_POS                    = 0xb0
-+	DLT_ETHERNET_MPACKET           = 0x112
- 	DLT_FC_2                       = 0xe0
- 	DLT_FC_2_WITH_FRAME_DELIMS     = 0xe1
- 	DLT_FDDI                       = 0xa
-@@ -404,7 +426,6 @@ const (
- 	DLT_GPRS_LLC                   = 0xa9
- 	DLT_GSMTAP_ABIS                = 0xda
- 	DLT_GSMTAP_UM                  = 0xd9
--	DLT_HHDLC                      = 0x79
- 	DLT_IBM_SN                     = 0x92
- 	DLT_IBM_SP                     = 0x91
- 	DLT_IEEE802                    = 0x6
-@@ -427,6 +448,7 @@ const (
- 	DLT_IPV4                       = 0xe4
- 	DLT_IPV6                       = 0xe5
- 	DLT_IP_OVER_FC                 = 0x7a
-+	DLT_ISO_14443                  = 0x108
- 	DLT_JUNIPER_ATM1               = 0x89
- 	DLT_JUNIPER_ATM2               = 0x87
- 	DLT_JUNIPER_ATM_CEMIC          = 0xee
-@@ -459,8 +481,9 @@ const (
- 	DLT_LINUX_PPP_WITHDIRECTION    = 0xa6
- 	DLT_LINUX_SLL                  = 0x71
- 	DLT_LOOP                       = 0x6c
-+	DLT_LORATAP                    = 0x10e
- 	DLT_LTALK                      = 0x72
--	DLT_MATCHING_MAX               = 0x104
-+	DLT_MATCHING_MAX               = 0x113
- 	DLT_MATCHING_MIN               = 0x68
- 	DLT_MFR                        = 0xb6
- 	DLT_MOST                       = 0xd3
-@@ -476,14 +499,16 @@ const (
- 	DLT_NFC_LLCP                   = 0xf5
- 	DLT_NFLOG                      = 0xef
- 	DLT_NG40                       = 0xf4
-+	DLT_NORDIC_BLE                 = 0x110
- 	DLT_NULL                       = 0x0
-+	DLT_OPENFLOW                   = 0x10b
- 	DLT_PCI_EXP                    = 0x7d
- 	DLT_PFLOG                      = 0x75
- 	DLT_PFSYNC                     = 0x79
- 	DLT_PKTAP                      = 0x102
- 	DLT_PPI                        = 0xc0
- 	DLT_PPP                        = 0x9
--	DLT_PPP_BSDOS                  = 0x10
-+	DLT_PPP_BSDOS                  = 0xe
- 	DLT_PPP_ETHER                  = 0x33
- 	DLT_PPP_PPPD                   = 0xa6
- 	DLT_PPP_SERIAL                 = 0x32
-@@ -494,19 +519,25 @@ const (
- 	DLT_PRONET                     = 0x4
- 	DLT_RAIF1                      = 0xc6
- 	DLT_RAW                        = 0xc
-+	DLT_RDS                        = 0x109
-+	DLT_REDBACK_SMARTEDGE          = 0x20
- 	DLT_RIO                        = 0x7c
- 	DLT_RTAC_SERIAL                = 0xfa
- 	DLT_SCCP                       = 0x8e
- 	DLT_SCTP                       = 0xf8
-+	DLT_SDLC                       = 0x10c
- 	DLT_SITA                       = 0xc4
- 	DLT_SLIP                       = 0x8
--	DLT_SLIP_BSDOS                 = 0xf
-+	DLT_SLIP_BSDOS                 = 0xd
- 	DLT_STANAG_5066_D_PDU          = 0xed
- 	DLT_SUNATM                     = 0x7b
- 	DLT_SYMANTEC_FIREWALL          = 0x63
-+	DLT_TI_LLN_SNIFFER             = 0x10d
- 	DLT_TZSP                       = 0x80
- 	DLT_USB                        = 0xba
- 	DLT_USBPCAP                    = 0xf9
-+	DLT_USB_DARWIN                 = 0x10a
-+	DLT_USB_FREEBSD                = 0xba
- 	DLT_USB_LINUX                  = 0xbd
- 	DLT_USB_LINUX_MMAPPED          = 0xdc
- 	DLT_USER0                      = 0x93
-@@ -525,10 +556,14 @@ const (
- 	DLT_USER7                      = 0x9a
- 	DLT_USER8                      = 0x9b
- 	DLT_USER9                      = 0x9c
-+	DLT_VSOCK                      = 0x10f
-+	DLT_WATTSTOPPER_DLM            = 0x107
- 	DLT_WIHART                     = 0xdf
- 	DLT_WIRESHARK_UPPER_PDU        = 0xfc
- 	DLT_X2E_SERIAL                 = 0xd5
- 	DLT_X2E_XORAYA                 = 0xd6
-+	DLT_ZWAVE_R1_R2                = 0x105
-+	DLT_ZWAVE_R3                   = 0x106
- 	DT_BLK                         = 0x6
- 	DT_CHR                         = 0x2
- 	DT_DIR                         = 0x4
-@@ -546,6 +581,7 @@ const (
- 	ECHONL                         = 0x10
- 	ECHOPRT                        = 0x20
- 	EVFILT_AIO                     = -0x3
-+	EVFILT_EMPTY                   = -0xd
- 	EVFILT_FS                      = -0x9
- 	EVFILT_LIO                     = -0xa
- 	EVFILT_PROC                    = -0x5
-@@ -553,11 +589,12 @@ const (
- 	EVFILT_READ                    = -0x1
- 	EVFILT_SENDFILE                = -0xc
- 	EVFILT_SIGNAL                  = -0x6
--	EVFILT_SYSCOUNT                = 0xc
-+	EVFILT_SYSCOUNT                = 0xd
- 	EVFILT_TIMER                   = -0x7
- 	EVFILT_USER                    = -0xb
- 	EVFILT_VNODE                   = -0x4
- 	EVFILT_WRITE                   = -0x2
-+	EVNAMEMAP_NAME_SIZE            = 0x40
- 	EV_ADD                         = 0x1
- 	EV_CLEAR                       = 0x20
- 	EV_DELETE                      = 0x2
-@@ -574,6 +611,7 @@ const (
- 	EV_RECEIPT                     = 0x40
- 	EV_SYSFLAGS                    = 0xf000
- 	EXTA                           = 0x4b00
-+	EXTATTR_MAXNAMELEN             = 0xff
- 	EXTATTR_NAMESPACE_EMPTY        = 0x0
- 	EXTATTR_NAMESPACE_SYSTEM       = 0x2
- 	EXTATTR_NAMESPACE_USER         = 0x1
-@@ -608,12 +646,14 @@ const (
- 	F_UNLCKSYS                     = 0x4
- 	F_WRLCK                        = 0x3
- 	HUPCL                          = 0x4000
-+	HW_MACHINE                     = 0x1
- 	ICANON                         = 0x100
- 	ICMP6_FILTER                   = 0x12
- 	ICRNL                          = 0x100
- 	IEXTEN                         = 0x400
- 	IFAN_ARRIVAL                   = 0x0
- 	IFAN_DEPARTURE                 = 0x1
-+	IFCAP_WOL_MAGIC                = 0x2000
- 	IFF_ALLMULTI                   = 0x200
- 	IFF_ALTPHYS                    = 0x4000
- 	IFF_BROADCAST                  = 0x2
-@@ -630,6 +670,7 @@ const (
- 	IFF_MONITOR                    = 0x40000
- 	IFF_MULTICAST                  = 0x8000
- 	IFF_NOARP                      = 0x80
-+	IFF_NOGROUP                    = 0x800000
- 	IFF_OACTIVE                    = 0x400
- 	IFF_POINTOPOINT                = 0x10
- 	IFF_PPROMISC                   = 0x20000
-@@ -804,6 +845,7 @@ const (
- 	IPV6_DSTOPTS                   = 0x32
- 	IPV6_FLOWID                    = 0x43
- 	IPV6_FLOWINFO_MASK             = 0xffffff0f
-+	IPV6_FLOWLABEL_LEN             = 0x14
- 	IPV6_FLOWLABEL_MASK            = 0xffff0f00
- 	IPV6_FLOWTYPE                  = 0x44
- 	IPV6_FRAGTTL                   = 0x78
-@@ -824,13 +866,13 @@ const (
- 	IPV6_MAX_GROUP_SRC_FILTER      = 0x200
- 	IPV6_MAX_MEMBERSHIPS           = 0xfff
- 	IPV6_MAX_SOCK_SRC_FILTER       = 0x80
--	IPV6_MIN_MEMBERSHIPS           = 0x1f
- 	IPV6_MMTU                      = 0x500
- 	IPV6_MSFILTER                  = 0x4a
- 	IPV6_MULTICAST_HOPS            = 0xa
- 	IPV6_MULTICAST_IF              = 0x9
- 	IPV6_MULTICAST_LOOP            = 0xb
- 	IPV6_NEXTHOP                   = 0x30
-+	IPV6_ORIGDSTADDR               = 0x48
- 	IPV6_PATHMTU                   = 0x2c
- 	IPV6_PKTINFO                   = 0x2e
- 	IPV6_PORTRANGE                 = 0xe
-@@ -842,6 +884,7 @@ const (
- 	IPV6_RECVFLOWID                = 0x46
- 	IPV6_RECVHOPLIMIT              = 0x25
- 	IPV6_RECVHOPOPTS               = 0x27
-+	IPV6_RECVORIGDSTADDR           = 0x48
- 	IPV6_RECVPATHMTU               = 0x2b
- 	IPV6_RECVPKTINFO               = 0x24
- 	IPV6_RECVRSSBUCKETID           = 0x47
-@@ -902,10 +945,8 @@ const (
- 	IP_MAX_MEMBERSHIPS             = 0xfff
- 	IP_MAX_SOCK_MUTE_FILTER        = 0x80
- 	IP_MAX_SOCK_SRC_FILTER         = 0x80
--	IP_MAX_SOURCE_FILTER           = 0x400
- 	IP_MF                          = 0x2000
- 	IP_MINTTL                      = 0x42
--	IP_MIN_MEMBERSHIPS             = 0x1f
- 	IP_MSFILTER                    = 0x4a
- 	IP_MSS                         = 0x240
- 	IP_MULTICAST_IF                = 0x9
-@@ -915,6 +956,7 @@ const (
- 	IP_OFFMASK                     = 0x1fff
- 	IP_ONESBCAST                   = 0x17
- 	IP_OPTIONS                     = 0x1
-+	IP_ORIGDSTADDR                 = 0x1b
- 	IP_PORTRANGE                   = 0x13
- 	IP_PORTRANGE_DEFAULT           = 0x0
- 	IP_PORTRANGE_HIGH              = 0x1
-@@ -923,6 +965,7 @@ const (
- 	IP_RECVFLOWID                  = 0x5d
- 	IP_RECVIF                      = 0x14
- 	IP_RECVOPTS                    = 0x5
-+	IP_RECVORIGDSTADDR             = 0x1b
- 	IP_RECVRETOPTS                 = 0x6
- 	IP_RECVRSSBUCKETID             = 0x5e
- 	IP_RECVTOS                     = 0x44
-@@ -944,6 +987,10 @@ const (
- 	IXANY                          = 0x800
- 	IXOFF                          = 0x400
- 	IXON                           = 0x200
-+	KERN_HOSTNAME                  = 0xa
-+	KERN_OSRELEASE                 = 0x2
-+	KERN_OSTYPE                    = 0x1
-+	KERN_VERSION                   = 0x4
- 	LOCK_EX                        = 0x2
- 	LOCK_NB                        = 0x4
- 	LOCK_SH                        = 0x1
-@@ -969,6 +1016,7 @@ const (
- 	MAP_EXCL                       = 0x4000
- 	MAP_FILE                       = 0x0
- 	MAP_FIXED                      = 0x10
-+	MAP_GUARD                      = 0x2000
- 	MAP_HASSEMAPHORE               = 0x200
- 	MAP_NOCORE                     = 0x20000
- 	MAP_NOSYNC                     = 0x800
-@@ -980,8 +1028,62 @@ const (
- 	MAP_RESERVED0100               = 0x100
- 	MAP_SHARED                     = 0x1
- 	MAP_STACK                      = 0x400
-+	MCAST_BLOCK_SOURCE             = 0x54
-+	MCAST_EXCLUDE                  = 0x2
-+	MCAST_INCLUDE                  = 0x1
-+	MCAST_JOIN_GROUP               = 0x50
-+	MCAST_JOIN_SOURCE_GROUP        = 0x52
-+	MCAST_LEAVE_GROUP              = 0x51
-+	MCAST_LEAVE_SOURCE_GROUP       = 0x53
-+	MCAST_UNBLOCK_SOURCE           = 0x55
-+	MCAST_UNDEFINED                = 0x0
- 	MCL_CURRENT                    = 0x1
- 	MCL_FUTURE                     = 0x2
-+	MNT_ACLS                       = 0x8000000
-+	MNT_ASYNC                      = 0x40
-+	MNT_AUTOMOUNTED                = 0x200000000
-+	MNT_BYFSID                     = 0x8000000
-+	MNT_CMDFLAGS                   = 0xd0f0000
-+	MNT_DEFEXPORTED                = 0x200
-+	MNT_DELEXPORT                  = 0x20000
-+	MNT_EXKERB                     = 0x800
-+	MNT_EXPORTANON                 = 0x400
-+	MNT_EXPORTED                   = 0x100
-+	MNT_EXPUBLIC                   = 0x20000000
-+	MNT_EXRDONLY                   = 0x80
-+	MNT_FORCE                      = 0x80000
-+	MNT_GJOURNAL                   = 0x2000000
-+	MNT_IGNORE                     = 0x800000
-+	MNT_LAZY                       = 0x3
-+	MNT_LOCAL                      = 0x1000
-+	MNT_MULTILABEL                 = 0x4000000
-+	MNT_NFS4ACLS                   = 0x10
-+	MNT_NOATIME                    = 0x10000000
-+	MNT_NOCLUSTERR                 = 0x40000000
-+	MNT_NOCLUSTERW                 = 0x80000000
-+	MNT_NOEXEC                     = 0x4
-+	MNT_NONBUSY                    = 0x4000000
-+	MNT_NOSUID                     = 0x8
-+	MNT_NOSYMFOLLOW                = 0x400000
-+	MNT_NOWAIT                     = 0x2
-+	MNT_QUOTA                      = 0x2000
-+	MNT_RDONLY                     = 0x1
-+	MNT_RELOAD                     = 0x40000
-+	MNT_ROOTFS                     = 0x4000
-+	MNT_SNAPSHOT                   = 0x1000000
-+	MNT_SOFTDEP                    = 0x200000
-+	MNT_SUIDDIR                    = 0x100000
-+	MNT_SUJ                        = 0x100000000
-+	MNT_SUSPEND                    = 0x4
-+	MNT_SYNCHRONOUS                = 0x2
-+	MNT_UNION                      = 0x20
-+	MNT_UNTRUSTED                  = 0x800000000
-+	MNT_UPDATE                     = 0x10000
-+	MNT_UPDATEMASK                 = 0xad8d0807e
-+	MNT_USER                       = 0x8000
-+	MNT_VERIFIED                   = 0x400000000
-+	MNT_VISFLAGMASK                = 0xffef0ffff
-+	MNT_WAIT                       = 0x1
- 	MSG_CMSG_CLOEXEC               = 0x40000
- 	MSG_COMPAT                     = 0x8000
- 	MSG_CTRUNC                     = 0x20
-@@ -1006,8 +1108,10 @@ const (
- 	NET_RT_IFLIST                  = 0x3
- 	NET_RT_IFLISTL                 = 0x5
- 	NET_RT_IFMALIST                = 0x4
-+	NFDBITS                        = 0x40
- 	NOFLSH                         = 0x80000000
- 	NOKERNINFO                     = 0x2000000
-+	NOTE_ABSTIME                   = 0x10
- 	NOTE_ATTRIB                    = 0x8
- 	NOTE_CHILD                     = 0x4
- 	NOTE_CLOSE                     = 0x100
-@@ -1162,7 +1266,6 @@ const (
- 	RTV_WEIGHT                     = 0x100
- 	RT_ALL_FIBS                    = -0x1
- 	RT_BLACKHOLE                   = 0x40
--	RT_CACHING_CONTEXT             = 0x1
- 	RT_DEFAULT_FIB                 = 0x0
- 	RT_HAS_GW                      = 0x80
- 	RT_HAS_HEADER                  = 0x10
-@@ -1172,15 +1275,17 @@ const (
- 	RT_LLE_CACHE                   = 0x100
- 	RT_MAY_LOOP                    = 0x8
- 	RT_MAY_LOOP_BIT                = 0x3
--	RT_NORTREF                     = 0x2
- 	RT_REJECT                      = 0x20
- 	RUSAGE_CHILDREN                = -0x1
- 	RUSAGE_SELF                    = 0x0
- 	RUSAGE_THREAD                  = 0x1
- 	SCM_BINTIME                    = 0x4
- 	SCM_CREDS                      = 0x3
-+	SCM_MONOTONIC                  = 0x6
-+	SCM_REALTIME                   = 0x5
- 	SCM_RIGHTS                     = 0x1
- 	SCM_TIMESTAMP                  = 0x2
-+	SCM_TIME_INFO                  = 0x7
- 	SHUT_RD                        = 0x0
- 	SHUT_RDWR                      = 0x2
- 	SHUT_WR                        = 0x1
-@@ -1196,6 +1301,7 @@ const (
- 	SIOCGETSGCNT                   = 0xc0207210
- 	SIOCGETVIFCNT                  = 0xc028720f
- 	SIOCGHIWAT                     = 0x40047301
-+	SIOCGHWADDR                    = 0xc020693e
- 	SIOCGI2C                       = 0xc020693d
- 	SIOCGIFADDR                    = 0xc0206921
- 	SIOCGIFBRDADDR                 = 0xc0206923
-@@ -1217,8 +1323,11 @@ const (
- 	SIOCGIFPDSTADDR                = 0xc0206948
- 	SIOCGIFPHYS                    = 0xc0206935
- 	SIOCGIFPSRCADDR                = 0xc0206947
-+	SIOCGIFRSSHASH                 = 0xc0186997
-+	SIOCGIFRSSKEY                  = 0xc0946996
- 	SIOCGIFSTATUS                  = 0xc331693b
- 	SIOCGIFXMEDIA                  = 0xc030698b
-+	SIOCGLANPCP                    = 0xc0206998
- 	SIOCGLOWAT                     = 0x40047303
- 	SIOCGPGRP                      = 0x40047309
- 	SIOCGPRIVATE_0                 = 0xc0206950
-@@ -1249,6 +1358,7 @@ const (
- 	SIOCSIFPHYS                    = 0x80206936
- 	SIOCSIFRVNET                   = 0xc020695b
- 	SIOCSIFVNET                    = 0xc020695a
-+	SIOCSLANPCP                    = 0x80206999
- 	SIOCSLOWAT                     = 0x80047302
- 	SIOCSPGRP                      = 0x80047308
- 	SIOCSTUNFIB                    = 0x8020695f
-@@ -1267,6 +1377,7 @@ const (
- 	SO_BINTIME                     = 0x2000
- 	SO_BROADCAST                   = 0x20
- 	SO_DEBUG                       = 0x1
-+	SO_DOMAIN                      = 0x1019
- 	SO_DONTROUTE                   = 0x10
- 	SO_ERROR                       = 0x1007
- 	SO_KEEPALIVE                   = 0x8
-@@ -1275,6 +1386,7 @@ const (
- 	SO_LISTENINCQLEN               = 0x1013
- 	SO_LISTENQLEN                  = 0x1012
- 	SO_LISTENQLIMIT                = 0x1011
-+	SO_MAX_PACING_RATE             = 0x1018
- 	SO_NOSIGPIPE                   = 0x800
- 	SO_NO_DDP                      = 0x8000
- 	SO_NO_OFFLOAD                  = 0x4000
-@@ -1287,15 +1399,52 @@ const (
- 	SO_RCVTIMEO                    = 0x1006
- 	SO_REUSEADDR                   = 0x4
- 	SO_REUSEPORT                   = 0x200
-+	SO_REUSEPORT_LB                = 0x10000
- 	SO_SETFIB                      = 0x1014
- 	SO_SNDBUF                      = 0x1001
- 	SO_SNDLOWAT                    = 0x1003
- 	SO_SNDTIMEO                    = 0x1005
- 	SO_TIMESTAMP                   = 0x400
-+	SO_TS_BINTIME                  = 0x1
-+	SO_TS_CLOCK                    = 0x1017
-+	SO_TS_CLOCK_MAX                = 0x3
-+	SO_TS_DEFAULT                  = 0x0
-+	SO_TS_MONOTONIC                = 0x3
-+	SO_TS_REALTIME                 = 0x2
-+	SO_TS_REALTIME_MICRO           = 0x0
- 	SO_TYPE                        = 0x1008
- 	SO_USELOOPBACK                 = 0x40
- 	SO_USER_COOKIE                 = 0x1015
- 	SO_VENDOR                      = 0x80000000
-+	S_BLKSIZE                      = 0x200
-+	S_IEXEC                        = 0x40
-+	S_IFBLK                        = 0x6000
-+	S_IFCHR                        = 0x2000
-+	S_IFDIR                        = 0x4000
-+	S_IFIFO                        = 0x1000
-+	S_IFLNK                        = 0xa000
-+	S_IFMT                         = 0xf000
-+	S_IFREG                        = 0x8000
-+	S_IFSOCK                       = 0xc000
-+	S_IFWHT                        = 0xe000
-+	S_IREAD                        = 0x100
-+	S_IRGRP                        = 0x20
-+	S_IROTH                        = 0x4
-+	S_IRUSR                        = 0x100
-+	S_IRWXG                        = 0x38
-+	S_IRWXO                        = 0x7
-+	S_IRWXU                        = 0x1c0
-+	S_ISGID                        = 0x400
-+	S_ISTXT                        = 0x200
-+	S_ISUID                        = 0x800
-+	S_ISVTX                        = 0x200
-+	S_IWGRP                        = 0x10
-+	S_IWOTH                        = 0x2
-+	S_IWRITE                       = 0x80
-+	S_IWUSR                        = 0x80
-+	S_IXGRP                        = 0x8
-+	S_IXOTH                        = 0x1
-+	S_IXUSR                        = 0x40
- 	TAB0                           = 0x0
- 	TAB3                           = 0x4
- 	TABDLY                         = 0x4
-@@ -1306,10 +1455,45 @@ const (
- 	TCOFLUSH                       = 0x2
- 	TCOOFF                         = 0x1
- 	TCOON                          = 0x2
-+	TCP_BBR_ACK_COMP_ALG           = 0x448
-+	TCP_BBR_DRAIN_INC_EXTRA        = 0x43c
-+	TCP_BBR_DRAIN_PG               = 0x42e
-+	TCP_BBR_EXTRA_GAIN             = 0x449
-+	TCP_BBR_IWINTSO                = 0x42b
-+	TCP_BBR_LOWGAIN_FD             = 0x436
-+	TCP_BBR_LOWGAIN_HALF           = 0x435
-+	TCP_BBR_LOWGAIN_THRESH         = 0x434
-+	TCP_BBR_MAX_RTO                = 0x439
-+	TCP_BBR_MIN_RTO                = 0x438
-+	TCP_BBR_ONE_RETRAN             = 0x431
-+	TCP_BBR_PACE_CROSS             = 0x442
-+	TCP_BBR_PACE_DEL_TAR           = 0x43f
-+	TCP_BBR_PACE_PER_SEC           = 0x43e
-+	TCP_BBR_PACE_SEG_MAX           = 0x440
-+	TCP_BBR_PACE_SEG_MIN           = 0x441
-+	TCP_BBR_PROBE_RTT_GAIN         = 0x44d
-+	TCP_BBR_PROBE_RTT_INT          = 0x430
-+	TCP_BBR_PROBE_RTT_LEN          = 0x44e
-+	TCP_BBR_RACK_RTT_USE           = 0x44a
-+	TCP_BBR_RECFORCE               = 0x42c
-+	TCP_BBR_REC_OVER_HPTS          = 0x43a
-+	TCP_BBR_RETRAN_WTSO            = 0x44b
-+	TCP_BBR_RWND_IS_APP            = 0x42f
-+	TCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d
-+	TCP_BBR_STARTUP_LOSS_EXIT      = 0x432
-+	TCP_BBR_STARTUP_PG             = 0x42d
-+	TCP_BBR_UNLIMITED              = 0x43b
-+	TCP_BBR_USEDEL_RATE            = 0x437
-+	TCP_BBR_USE_LOWGAIN            = 0x433
- 	TCP_CA_NAME_MAX                = 0x10
- 	TCP_CCALGOOPT                  = 0x41
- 	TCP_CONGESTION                 = 0x40
-+	TCP_DATA_AFTER_CLOSE           = 0x44c
-+	TCP_DELACK                     = 0x48
- 	TCP_FASTOPEN                   = 0x401
-+	TCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10
-+	TCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4
-+	TCP_FASTOPEN_PSK_LEN           = 0x10
- 	TCP_FUNCTION_BLK               = 0x2000
- 	TCP_FUNCTION_NAME_LEN_MAX      = 0x20
- 	TCP_INFO                       = 0x20
-@@ -1317,6 +1501,12 @@ const (
- 	TCP_KEEPIDLE                   = 0x100
- 	TCP_KEEPINIT                   = 0x80
- 	TCP_KEEPINTVL                  = 0x200
-+	TCP_LOG                        = 0x22
-+	TCP_LOGBUF                     = 0x23
-+	TCP_LOGDUMP                    = 0x25
-+	TCP_LOGDUMPID                  = 0x26
-+	TCP_LOGID                      = 0x24
-+	TCP_LOG_ID_LEN                 = 0x40
- 	TCP_MAXBURST                   = 0x4
- 	TCP_MAXHLEN                    = 0x3c
- 	TCP_MAXOLEN                    = 0x28
-@@ -1332,8 +1522,30 @@ const (
- 	TCP_NOPUSH                     = 0x4
- 	TCP_PCAP_IN                    = 0x1000
- 	TCP_PCAP_OUT                   = 0x800
-+	TCP_RACK_EARLY_RECOV           = 0x423
-+	TCP_RACK_EARLY_SEG             = 0x424
-+	TCP_RACK_IDLE_REDUCE_HIGH      = 0x444
-+	TCP_RACK_MIN_PACE              = 0x445
-+	TCP_RACK_MIN_PACE_SEG          = 0x446
-+	TCP_RACK_MIN_TO                = 0x422
-+	TCP_RACK_PACE_ALWAYS           = 0x41f
-+	TCP_RACK_PACE_MAX_SEG          = 0x41e
-+	TCP_RACK_PACE_REDUCE           = 0x41d
-+	TCP_RACK_PKT_DELAY             = 0x428
-+	TCP_RACK_PROP                  = 0x41b
-+	TCP_RACK_PROP_RATE             = 0x420
-+	TCP_RACK_PRR_SENDALOT          = 0x421
-+	TCP_RACK_REORD_FADE            = 0x426
-+	TCP_RACK_REORD_THRESH          = 0x425
-+	TCP_RACK_SESS_CWV              = 0x42a
-+	TCP_RACK_TLP_INC_VAR           = 0x429
-+	TCP_RACK_TLP_REDUCE            = 0x41c
-+	TCP_RACK_TLP_THRESH            = 0x427
-+	TCP_RACK_TLP_USE               = 0x447
- 	TCP_VENDOR                     = 0x80000000
- 	TCSAFLUSH                      = 0x2
-+	TIMER_ABSTIME                  = 0x1
-+	TIMER_RELTIME                  = 0x0
- 	TIOCCBRK                       = 0x2000747a
- 	TIOCCDTR                       = 0x20007478
- 	TIOCCONS                       = 0x80047462
-@@ -1397,6 +1609,8 @@ const (
- 	TIOCTIMESTAMP                  = 0x40107459
- 	TIOCUCNTL                      = 0x80047466
- 	TOSTOP                         = 0x400000
-+	UTIME_NOW                      = -0x1
-+	UTIME_OMIT                     = -0x2
- 	VDISCARD                       = 0xf
- 	VDSUSP                         = 0xb
- 	VEOF                           = 0x0
-@@ -1570,138 +1784,146 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "operation timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "operation canceled",
--	86: "illegal byte sequence",
--	87: "attribute not found",
--	88: "programming error",
--	89: "bad message",
--	90: "multihop attempted",
--	91: "link has been severed",
--	92: "protocol error",
--	93: "capabilities insufficient",
--	94: "not permitted in capability mode",
--	95: "state not recoverable",
--	96: "previous owner died",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "ECANCELED", "operation canceled"},
-+	{86, "EILSEQ", "illegal byte sequence"},
-+	{87, "ENOATTR", "attribute not found"},
-+	{88, "EDOOFUS", "programming error"},
-+	{89, "EBADMSG", "bad message"},
-+	{90, "EMULTIHOP", "multihop attempted"},
-+	{91, "ENOLINK", "link has been severed"},
-+	{92, "EPROTO", "protocol error"},
-+	{93, "ENOTCAPABLE", "capabilities insufficient"},
-+	{94, "ECAPMODE", "not permitted in capability mode"},
-+	{95, "ENOTRECOVERABLE", "state not recoverable"},
-+	{96, "EOWNERDEAD", "previous owner died"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "unknown signal",
--	33: "unknown signal",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "unknown signal"},
-+	{33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-index c5c6f13e..e4719873 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-@@ -3,7 +3,7 @@
- 
- // +build arm,freebsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- _const.go
- 
- package unix
-@@ -351,8 +351,26 @@ const (
- 	CSTOP                          = 0x13
- 	CSTOPB                         = 0x400
- 	CSUSP                          = 0x1a
-+	CTL_HW                         = 0x6
-+	CTL_KERN                       = 0x1
- 	CTL_MAXNAME                    = 0x18
- 	CTL_NET                        = 0x4
-+	DIOCGATTR                      = 0xc144648e
-+	DIOCGDELETE                    = 0x80106488
-+	DIOCGFLUSH                     = 0x20006487
-+	DIOCGFRONTSTUFF                = 0x40086486
-+	DIOCGFWHEADS                   = 0x40046483
-+	DIOCGFWSECTORS                 = 0x40046482
-+	DIOCGIDENT                     = 0x41006489
-+	DIOCGMEDIASIZE                 = 0x40086481
-+	DIOCGPHYSPATH                  = 0x4400648d
-+	DIOCGPROVIDERNAME              = 0x4400648a
-+	DIOCGSECTORSIZE                = 0x40046480
-+	DIOCGSTRIPEOFFSET              = 0x4008648c
-+	DIOCGSTRIPESIZE                = 0x4008648b
-+	DIOCSKERNELDUMP                = 0x804c6490
-+	DIOCSKERNELDUMP_FREEBSD11      = 0x80046485
-+	DIOCZONECMD                    = 0xc06c648f
- 	DLT_A429                       = 0xb8
- 	DLT_A653_ICM                   = 0xb9
- 	DLT_AIRONET_HEADER             = 0x78
-@@ -615,6 +633,7 @@ const (
- 	F_UNLCKSYS                     = 0x4
- 	F_WRLCK                        = 0x3
- 	HUPCL                          = 0x4000
-+	HW_MACHINE                     = 0x1
- 	ICANON                         = 0x100
- 	ICMP6_FILTER                   = 0x12
- 	ICRNL                          = 0x100
-@@ -951,6 +970,10 @@ const (
- 	IXANY                          = 0x800
- 	IXOFF                          = 0x400
- 	IXON                           = 0x200
-+	KERN_HOSTNAME                  = 0xa
-+	KERN_OSRELEASE                 = 0x2
-+	KERN_OSTYPE                    = 0x1
-+	KERN_VERSION                   = 0x4
- 	LOCK_EX                        = 0x2
- 	LOCK_NB                        = 0x4
- 	LOCK_SH                        = 0x1
-@@ -989,6 +1012,49 @@ const (
- 	MAP_STACK                      = 0x400
- 	MCL_CURRENT                    = 0x1
- 	MCL_FUTURE                     = 0x2
-+	MNT_ACLS                       = 0x8000000
-+	MNT_ASYNC                      = 0x40
-+	MNT_AUTOMOUNTED                = 0x200000000
-+	MNT_BYFSID                     = 0x8000000
-+	MNT_CMDFLAGS                   = 0xd0f0000
-+	MNT_DEFEXPORTED                = 0x200
-+	MNT_DELEXPORT                  = 0x20000
-+	MNT_EXKERB                     = 0x800
-+	MNT_EXPORTANON                 = 0x400
-+	MNT_EXPORTED                   = 0x100
-+	MNT_EXPUBLIC                   = 0x20000000
-+	MNT_EXRDONLY                   = 0x80
-+	MNT_FORCE                      = 0x80000
-+	MNT_GJOURNAL                   = 0x2000000
-+	MNT_IGNORE                     = 0x800000
-+	MNT_LAZY                       = 0x3
-+	MNT_LOCAL                      = 0x1000
-+	MNT_MULTILABEL                 = 0x4000000
-+	MNT_NFS4ACLS                   = 0x10
-+	MNT_NOATIME                    = 0x10000000
-+	MNT_NOCLUSTERR                 = 0x40000000
-+	MNT_NOCLUSTERW                 = 0x80000000
-+	MNT_NOEXEC                     = 0x4
-+	MNT_NONBUSY                    = 0x4000000
-+	MNT_NOSUID                     = 0x8
-+	MNT_NOSYMFOLLOW                = 0x400000
-+	MNT_NOWAIT                     = 0x2
-+	MNT_QUOTA                      = 0x2000
-+	MNT_RDONLY                     = 0x1
-+	MNT_RELOAD                     = 0x40000
-+	MNT_ROOTFS                     = 0x4000
-+	MNT_SNAPSHOT                   = 0x1000000
-+	MNT_SOFTDEP                    = 0x200000
-+	MNT_SUIDDIR                    = 0x100000
-+	MNT_SUJ                        = 0x100000000
-+	MNT_SUSPEND                    = 0x4
-+	MNT_SYNCHRONOUS                = 0x2
-+	MNT_UNION                      = 0x20
-+	MNT_UPDATE                     = 0x10000
-+	MNT_UPDATEMASK                 = 0x2d8d0807e
-+	MNT_USER                       = 0x8000
-+	MNT_VISFLAGMASK                = 0x3fef0ffff
-+	MNT_WAIT                       = 0x1
- 	MSG_CMSG_CLOEXEC               = 0x40000
- 	MSG_COMPAT                     = 0x8000
- 	MSG_CTRUNC                     = 0x20
-@@ -1013,6 +1079,7 @@ const (
- 	NET_RT_IFLIST                  = 0x3
- 	NET_RT_IFLISTL                 = 0x5
- 	NET_RT_IFMALIST                = 0x4
-+	NFDBITS                        = 0x20
- 	NOFLSH                         = 0x80000000
- 	NOKERNINFO                     = 0x2000000
- 	NOTE_ATTRIB                    = 0x8
-@@ -1304,6 +1371,35 @@ const (
- 	SO_USELOOPBACK                 = 0x40
- 	SO_USER_COOKIE                 = 0x1015
- 	SO_VENDOR                      = 0x80000000
-+	S_BLKSIZE                      = 0x200
-+	S_IEXEC                        = 0x40
-+	S_IFBLK                        = 0x6000
-+	S_IFCHR                        = 0x2000
-+	S_IFDIR                        = 0x4000
-+	S_IFIFO                        = 0x1000
-+	S_IFLNK                        = 0xa000
-+	S_IFMT                         = 0xf000
-+	S_IFREG                        = 0x8000
-+	S_IFSOCK                       = 0xc000
-+	S_IFWHT                        = 0xe000
-+	S_IREAD                        = 0x100
-+	S_IRGRP                        = 0x20
-+	S_IROTH                        = 0x4
-+	S_IRUSR                        = 0x100
-+	S_IRWXG                        = 0x38
-+	S_IRWXO                        = 0x7
-+	S_IRWXU                        = 0x1c0
-+	S_ISGID                        = 0x400
-+	S_ISTXT                        = 0x200
-+	S_ISUID                        = 0x800
-+	S_ISVTX                        = 0x200
-+	S_IWGRP                        = 0x10
-+	S_IWOTH                        = 0x2
-+	S_IWRITE                       = 0x80
-+	S_IWUSR                        = 0x80
-+	S_IXGRP                        = 0x8
-+	S_IXOTH                        = 0x1
-+	S_IXUSR                        = 0x40
- 	TAB0                           = 0x0
- 	TAB3                           = 0x4
- 	TABDLY                         = 0x4
-@@ -1578,138 +1674,146 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "operation timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "operation canceled",
--	86: "illegal byte sequence",
--	87: "attribute not found",
--	88: "programming error",
--	89: "bad message",
--	90: "multihop attempted",
--	91: "link has been severed",
--	92: "protocol error",
--	93: "capabilities insufficient",
--	94: "not permitted in capability mode",
--	95: "state not recoverable",
--	96: "previous owner died",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "ECANCELED", "operation canceled"},
-+	{86, "EILSEQ", "illegal byte sequence"},
-+	{87, "ENOATTR", "attribute not found"},
-+	{88, "EDOOFUS", "programming error"},
-+	{89, "EBADMSG", "bad message"},
-+	{90, "EMULTIHOP", "multihop attempted"},
-+	{91, "ENOLINK", "link has been severed"},
-+	{92, "EPROTO", "protocol error"},
-+	{93, "ENOTCAPABLE", "capabilities insufficient"},
-+	{94, "ECAPMODE", "not permitted in capability mode"},
-+	{95, "ENOTRECOVERABLE", "state not recoverable"},
-+	{96, "EOWNERDEAD", "previous owner died"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "unknown signal",
--	33: "unknown signal",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "unknown signal"},
-+	{33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-similarity index 80%
-copy from vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-index ac094f9c..5e49769d 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,freebsd
-+// +build arm64,freebsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -351,8 +351,26 @@ const (
- 	CSTOP                          = 0x13
- 	CSTOPB                         = 0x400
- 	CSUSP                          = 0x1a
-+	CTL_HW                         = 0x6
-+	CTL_KERN                       = 0x1
- 	CTL_MAXNAME                    = 0x18
- 	CTL_NET                        = 0x4
-+	DIOCGATTR                      = 0xc148648e
-+	DIOCGDELETE                    = 0x80106488
-+	DIOCGFLUSH                     = 0x20006487
-+	DIOCGFRONTSTUFF                = 0x40086486
-+	DIOCGFWHEADS                   = 0x40046483
-+	DIOCGFWSECTORS                 = 0x40046482
-+	DIOCGIDENT                     = 0x41006489
-+	DIOCGMEDIASIZE                 = 0x40086481
-+	DIOCGPHYSPATH                  = 0x4400648d
-+	DIOCGPROVIDERNAME              = 0x4400648a
-+	DIOCGSECTORSIZE                = 0x40046480
-+	DIOCGSTRIPEOFFSET              = 0x4008648c
-+	DIOCGSTRIPESIZE                = 0x4008648b
-+	DIOCSKERNELDUMP                = 0x80506490
-+	DIOCSKERNELDUMP_FREEBSD11      = 0x80046485
-+	DIOCZONECMD                    = 0xc080648f
- 	DLT_A429                       = 0xb8
- 	DLT_A653_ICM                   = 0xb9
- 	DLT_AIRONET_HEADER             = 0x78
-@@ -377,11 +395,14 @@ const (
- 	DLT_CHAOS                      = 0x5
- 	DLT_CHDLC                      = 0x68
- 	DLT_CISCO_IOS                  = 0x76
-+	DLT_CLASS_NETBSD_RAWAF         = 0x2240000
- 	DLT_C_HDLC                     = 0x68
- 	DLT_C_HDLC_WITH_DIR            = 0xcd
- 	DLT_DBUS                       = 0xe7
- 	DLT_DECT                       = 0xdd
-+	DLT_DISPLAYPORT_AUX            = 0x113
- 	DLT_DOCSIS                     = 0x8f
-+	DLT_DOCSIS31_XRA31             = 0x111
- 	DLT_DVB_CI                     = 0xeb
- 	DLT_ECONET                     = 0x73
- 	DLT_EN10MB                     = 0x1
-@@ -391,6 +412,7 @@ const (
- 	DLT_ERF                        = 0xc5
- 	DLT_ERF_ETH                    = 0xaf
- 	DLT_ERF_POS                    = 0xb0
-+	DLT_ETHERNET_MPACKET           = 0x112
- 	DLT_FC_2                       = 0xe0
- 	DLT_FC_2_WITH_FRAME_DELIMS     = 0xe1
- 	DLT_FDDI                       = 0xa
-@@ -404,7 +426,6 @@ const (
- 	DLT_GPRS_LLC                   = 0xa9
- 	DLT_GSMTAP_ABIS                = 0xda
- 	DLT_GSMTAP_UM                  = 0xd9
--	DLT_HHDLC                      = 0x79
- 	DLT_IBM_SN                     = 0x92
- 	DLT_IBM_SP                     = 0x91
- 	DLT_IEEE802                    = 0x6
-@@ -427,6 +448,7 @@ const (
- 	DLT_IPV4                       = 0xe4
- 	DLT_IPV6                       = 0xe5
- 	DLT_IP_OVER_FC                 = 0x7a
-+	DLT_ISO_14443                  = 0x108
- 	DLT_JUNIPER_ATM1               = 0x89
- 	DLT_JUNIPER_ATM2               = 0x87
- 	DLT_JUNIPER_ATM_CEMIC          = 0xee
-@@ -459,8 +481,9 @@ const (
- 	DLT_LINUX_PPP_WITHDIRECTION    = 0xa6
- 	DLT_LINUX_SLL                  = 0x71
- 	DLT_LOOP                       = 0x6c
-+	DLT_LORATAP                    = 0x10e
- 	DLT_LTALK                      = 0x72
--	DLT_MATCHING_MAX               = 0x104
-+	DLT_MATCHING_MAX               = 0x113
- 	DLT_MATCHING_MIN               = 0x68
- 	DLT_MFR                        = 0xb6
- 	DLT_MOST                       = 0xd3
-@@ -476,14 +499,16 @@ const (
- 	DLT_NFC_LLCP                   = 0xf5
- 	DLT_NFLOG                      = 0xef
- 	DLT_NG40                       = 0xf4
-+	DLT_NORDIC_BLE                 = 0x110
- 	DLT_NULL                       = 0x0
-+	DLT_OPENFLOW                   = 0x10b
- 	DLT_PCI_EXP                    = 0x7d
- 	DLT_PFLOG                      = 0x75
- 	DLT_PFSYNC                     = 0x79
- 	DLT_PKTAP                      = 0x102
- 	DLT_PPI                        = 0xc0
- 	DLT_PPP                        = 0x9
--	DLT_PPP_BSDOS                  = 0x10
-+	DLT_PPP_BSDOS                  = 0xe
- 	DLT_PPP_ETHER                  = 0x33
- 	DLT_PPP_PPPD                   = 0xa6
- 	DLT_PPP_SERIAL                 = 0x32
-@@ -494,19 +519,25 @@ const (
- 	DLT_PRONET                     = 0x4
- 	DLT_RAIF1                      = 0xc6
- 	DLT_RAW                        = 0xc
-+	DLT_RDS                        = 0x109
-+	DLT_REDBACK_SMARTEDGE          = 0x20
- 	DLT_RIO                        = 0x7c
- 	DLT_RTAC_SERIAL                = 0xfa
- 	DLT_SCCP                       = 0x8e
- 	DLT_SCTP                       = 0xf8
-+	DLT_SDLC                       = 0x10c
- 	DLT_SITA                       = 0xc4
- 	DLT_SLIP                       = 0x8
--	DLT_SLIP_BSDOS                 = 0xf
-+	DLT_SLIP_BSDOS                 = 0xd
- 	DLT_STANAG_5066_D_PDU          = 0xed
- 	DLT_SUNATM                     = 0x7b
- 	DLT_SYMANTEC_FIREWALL          = 0x63
-+	DLT_TI_LLN_SNIFFER             = 0x10d
- 	DLT_TZSP                       = 0x80
- 	DLT_USB                        = 0xba
- 	DLT_USBPCAP                    = 0xf9
-+	DLT_USB_DARWIN                 = 0x10a
-+	DLT_USB_FREEBSD                = 0xba
- 	DLT_USB_LINUX                  = 0xbd
- 	DLT_USB_LINUX_MMAPPED          = 0xdc
- 	DLT_USER0                      = 0x93
-@@ -525,10 +556,14 @@ const (
- 	DLT_USER7                      = 0x9a
- 	DLT_USER8                      = 0x9b
- 	DLT_USER9                      = 0x9c
-+	DLT_VSOCK                      = 0x10f
-+	DLT_WATTSTOPPER_DLM            = 0x107
- 	DLT_WIHART                     = 0xdf
- 	DLT_WIRESHARK_UPPER_PDU        = 0xfc
- 	DLT_X2E_SERIAL                 = 0xd5
- 	DLT_X2E_XORAYA                 = 0xd6
-+	DLT_ZWAVE_R1_R2                = 0x105
-+	DLT_ZWAVE_R3                   = 0x106
- 	DT_BLK                         = 0x6
- 	DT_CHR                         = 0x2
- 	DT_DIR                         = 0x4
-@@ -546,6 +581,7 @@ const (
- 	ECHONL                         = 0x10
- 	ECHOPRT                        = 0x20
- 	EVFILT_AIO                     = -0x3
-+	EVFILT_EMPTY                   = -0xd
- 	EVFILT_FS                      = -0x9
- 	EVFILT_LIO                     = -0xa
- 	EVFILT_PROC                    = -0x5
-@@ -553,11 +589,12 @@ const (
- 	EVFILT_READ                    = -0x1
- 	EVFILT_SENDFILE                = -0xc
- 	EVFILT_SIGNAL                  = -0x6
--	EVFILT_SYSCOUNT                = 0xc
-+	EVFILT_SYSCOUNT                = 0xd
- 	EVFILT_TIMER                   = -0x7
- 	EVFILT_USER                    = -0xb
- 	EVFILT_VNODE                   = -0x4
- 	EVFILT_WRITE                   = -0x2
-+	EVNAMEMAP_NAME_SIZE            = 0x40
- 	EV_ADD                         = 0x1
- 	EV_CLEAR                       = 0x20
- 	EV_DELETE                      = 0x2
-@@ -574,6 +611,7 @@ const (
- 	EV_RECEIPT                     = 0x40
- 	EV_SYSFLAGS                    = 0xf000
- 	EXTA                           = 0x4b00
-+	EXTATTR_MAXNAMELEN             = 0xff
- 	EXTATTR_NAMESPACE_EMPTY        = 0x0
- 	EXTATTR_NAMESPACE_SYSTEM       = 0x2
- 	EXTATTR_NAMESPACE_USER         = 0x1
-@@ -608,12 +646,14 @@ const (
- 	F_UNLCKSYS                     = 0x4
- 	F_WRLCK                        = 0x3
- 	HUPCL                          = 0x4000
-+	HW_MACHINE                     = 0x1
- 	ICANON                         = 0x100
- 	ICMP6_FILTER                   = 0x12
- 	ICRNL                          = 0x100
- 	IEXTEN                         = 0x400
- 	IFAN_ARRIVAL                   = 0x0
- 	IFAN_DEPARTURE                 = 0x1
-+	IFCAP_WOL_MAGIC                = 0x2000
- 	IFF_ALLMULTI                   = 0x200
- 	IFF_ALTPHYS                    = 0x4000
- 	IFF_BROADCAST                  = 0x2
-@@ -630,6 +670,7 @@ const (
- 	IFF_MONITOR                    = 0x40000
- 	IFF_MULTICAST                  = 0x8000
- 	IFF_NOARP                      = 0x80
-+	IFF_NOGROUP                    = 0x800000
- 	IFF_OACTIVE                    = 0x400
- 	IFF_POINTOPOINT                = 0x10
- 	IFF_PPROMISC                   = 0x20000
-@@ -804,6 +845,7 @@ const (
- 	IPV6_DSTOPTS                   = 0x32
- 	IPV6_FLOWID                    = 0x43
- 	IPV6_FLOWINFO_MASK             = 0xffffff0f
-+	IPV6_FLOWLABEL_LEN             = 0x14
- 	IPV6_FLOWLABEL_MASK            = 0xffff0f00
- 	IPV6_FLOWTYPE                  = 0x44
- 	IPV6_FRAGTTL                   = 0x78
-@@ -824,13 +866,13 @@ const (
- 	IPV6_MAX_GROUP_SRC_FILTER      = 0x200
- 	IPV6_MAX_MEMBERSHIPS           = 0xfff
- 	IPV6_MAX_SOCK_SRC_FILTER       = 0x80
--	IPV6_MIN_MEMBERSHIPS           = 0x1f
- 	IPV6_MMTU                      = 0x500
- 	IPV6_MSFILTER                  = 0x4a
- 	IPV6_MULTICAST_HOPS            = 0xa
- 	IPV6_MULTICAST_IF              = 0x9
- 	IPV6_MULTICAST_LOOP            = 0xb
- 	IPV6_NEXTHOP                   = 0x30
-+	IPV6_ORIGDSTADDR               = 0x48
- 	IPV6_PATHMTU                   = 0x2c
- 	IPV6_PKTINFO                   = 0x2e
- 	IPV6_PORTRANGE                 = 0xe
-@@ -842,6 +884,7 @@ const (
- 	IPV6_RECVFLOWID                = 0x46
- 	IPV6_RECVHOPLIMIT              = 0x25
- 	IPV6_RECVHOPOPTS               = 0x27
-+	IPV6_RECVORIGDSTADDR           = 0x48
- 	IPV6_RECVPATHMTU               = 0x2b
- 	IPV6_RECVPKTINFO               = 0x24
- 	IPV6_RECVRSSBUCKETID           = 0x47
-@@ -902,10 +945,8 @@ const (
- 	IP_MAX_MEMBERSHIPS             = 0xfff
- 	IP_MAX_SOCK_MUTE_FILTER        = 0x80
- 	IP_MAX_SOCK_SRC_FILTER         = 0x80
--	IP_MAX_SOURCE_FILTER           = 0x400
- 	IP_MF                          = 0x2000
- 	IP_MINTTL                      = 0x42
--	IP_MIN_MEMBERSHIPS             = 0x1f
- 	IP_MSFILTER                    = 0x4a
- 	IP_MSS                         = 0x240
- 	IP_MULTICAST_IF                = 0x9
-@@ -915,6 +956,7 @@ const (
- 	IP_OFFMASK                     = 0x1fff
- 	IP_ONESBCAST                   = 0x17
- 	IP_OPTIONS                     = 0x1
-+	IP_ORIGDSTADDR                 = 0x1b
- 	IP_PORTRANGE                   = 0x13
- 	IP_PORTRANGE_DEFAULT           = 0x0
- 	IP_PORTRANGE_HIGH              = 0x1
-@@ -923,6 +965,7 @@ const (
- 	IP_RECVFLOWID                  = 0x5d
- 	IP_RECVIF                      = 0x14
- 	IP_RECVOPTS                    = 0x5
-+	IP_RECVORIGDSTADDR             = 0x1b
- 	IP_RECVRETOPTS                 = 0x6
- 	IP_RECVRSSBUCKETID             = 0x5e
- 	IP_RECVTOS                     = 0x44
-@@ -944,6 +987,10 @@ const (
- 	IXANY                          = 0x800
- 	IXOFF                          = 0x400
- 	IXON                           = 0x200
-+	KERN_HOSTNAME                  = 0xa
-+	KERN_OSRELEASE                 = 0x2
-+	KERN_OSTYPE                    = 0x1
-+	KERN_VERSION                   = 0x4
- 	LOCK_EX                        = 0x2
- 	LOCK_NB                        = 0x4
- 	LOCK_SH                        = 0x1
-@@ -969,6 +1016,7 @@ const (
- 	MAP_EXCL                       = 0x4000
- 	MAP_FILE                       = 0x0
- 	MAP_FIXED                      = 0x10
-+	MAP_GUARD                      = 0x2000
- 	MAP_HASSEMAPHORE               = 0x200
- 	MAP_NOCORE                     = 0x20000
- 	MAP_NOSYNC                     = 0x800
-@@ -980,8 +1028,62 @@ const (
- 	MAP_RESERVED0100               = 0x100
- 	MAP_SHARED                     = 0x1
- 	MAP_STACK                      = 0x400
-+	MCAST_BLOCK_SOURCE             = 0x54
-+	MCAST_EXCLUDE                  = 0x2
-+	MCAST_INCLUDE                  = 0x1
-+	MCAST_JOIN_GROUP               = 0x50
-+	MCAST_JOIN_SOURCE_GROUP        = 0x52
-+	MCAST_LEAVE_GROUP              = 0x51
-+	MCAST_LEAVE_SOURCE_GROUP       = 0x53
-+	MCAST_UNBLOCK_SOURCE           = 0x55
-+	MCAST_UNDEFINED                = 0x0
- 	MCL_CURRENT                    = 0x1
- 	MCL_FUTURE                     = 0x2
-+	MNT_ACLS                       = 0x8000000
-+	MNT_ASYNC                      = 0x40
-+	MNT_AUTOMOUNTED                = 0x200000000
-+	MNT_BYFSID                     = 0x8000000
-+	MNT_CMDFLAGS                   = 0xd0f0000
-+	MNT_DEFEXPORTED                = 0x200
-+	MNT_DELEXPORT                  = 0x20000
-+	MNT_EXKERB                     = 0x800
-+	MNT_EXPORTANON                 = 0x400
-+	MNT_EXPORTED                   = 0x100
-+	MNT_EXPUBLIC                   = 0x20000000
-+	MNT_EXRDONLY                   = 0x80
-+	MNT_FORCE                      = 0x80000
-+	MNT_GJOURNAL                   = 0x2000000
-+	MNT_IGNORE                     = 0x800000
-+	MNT_LAZY                       = 0x3
-+	MNT_LOCAL                      = 0x1000
-+	MNT_MULTILABEL                 = 0x4000000
-+	MNT_NFS4ACLS                   = 0x10
-+	MNT_NOATIME                    = 0x10000000
-+	MNT_NOCLUSTERR                 = 0x40000000
-+	MNT_NOCLUSTERW                 = 0x80000000
-+	MNT_NOEXEC                     = 0x4
-+	MNT_NONBUSY                    = 0x4000000
-+	MNT_NOSUID                     = 0x8
-+	MNT_NOSYMFOLLOW                = 0x400000
-+	MNT_NOWAIT                     = 0x2
-+	MNT_QUOTA                      = 0x2000
-+	MNT_RDONLY                     = 0x1
-+	MNT_RELOAD                     = 0x40000
-+	MNT_ROOTFS                     = 0x4000
-+	MNT_SNAPSHOT                   = 0x1000000
-+	MNT_SOFTDEP                    = 0x200000
-+	MNT_SUIDDIR                    = 0x100000
-+	MNT_SUJ                        = 0x100000000
-+	MNT_SUSPEND                    = 0x4
-+	MNT_SYNCHRONOUS                = 0x2
-+	MNT_UNION                      = 0x20
-+	MNT_UNTRUSTED                  = 0x800000000
-+	MNT_UPDATE                     = 0x10000
-+	MNT_UPDATEMASK                 = 0xad8d0807e
-+	MNT_USER                       = 0x8000
-+	MNT_VERIFIED                   = 0x400000000
-+	MNT_VISFLAGMASK                = 0xffef0ffff
-+	MNT_WAIT                       = 0x1
- 	MSG_CMSG_CLOEXEC               = 0x40000
- 	MSG_COMPAT                     = 0x8000
- 	MSG_CTRUNC                     = 0x20
-@@ -1006,8 +1108,10 @@ const (
- 	NET_RT_IFLIST                  = 0x3
- 	NET_RT_IFLISTL                 = 0x5
- 	NET_RT_IFMALIST                = 0x4
-+	NFDBITS                        = 0x40
- 	NOFLSH                         = 0x80000000
- 	NOKERNINFO                     = 0x2000000
-+	NOTE_ABSTIME                   = 0x10
- 	NOTE_ATTRIB                    = 0x8
- 	NOTE_CHILD                     = 0x4
- 	NOTE_CLOSE                     = 0x100
-@@ -1162,7 +1266,6 @@ const (
- 	RTV_WEIGHT                     = 0x100
- 	RT_ALL_FIBS                    = -0x1
- 	RT_BLACKHOLE                   = 0x40
--	RT_CACHING_CONTEXT             = 0x1
- 	RT_DEFAULT_FIB                 = 0x0
- 	RT_HAS_GW                      = 0x80
- 	RT_HAS_HEADER                  = 0x10
-@@ -1172,15 +1275,17 @@ const (
- 	RT_LLE_CACHE                   = 0x100
- 	RT_MAY_LOOP                    = 0x8
- 	RT_MAY_LOOP_BIT                = 0x3
--	RT_NORTREF                     = 0x2
- 	RT_REJECT                      = 0x20
- 	RUSAGE_CHILDREN                = -0x1
- 	RUSAGE_SELF                    = 0x0
- 	RUSAGE_THREAD                  = 0x1
- 	SCM_BINTIME                    = 0x4
- 	SCM_CREDS                      = 0x3
-+	SCM_MONOTONIC                  = 0x6
-+	SCM_REALTIME                   = 0x5
- 	SCM_RIGHTS                     = 0x1
- 	SCM_TIMESTAMP                  = 0x2
-+	SCM_TIME_INFO                  = 0x7
- 	SHUT_RD                        = 0x0
- 	SHUT_RDWR                      = 0x2
- 	SHUT_WR                        = 0x1
-@@ -1196,6 +1301,7 @@ const (
- 	SIOCGETSGCNT                   = 0xc0207210
- 	SIOCGETVIFCNT                  = 0xc028720f
- 	SIOCGHIWAT                     = 0x40047301
-+	SIOCGHWADDR                    = 0xc020693e
- 	SIOCGI2C                       = 0xc020693d
- 	SIOCGIFADDR                    = 0xc0206921
- 	SIOCGIFBRDADDR                 = 0xc0206923
-@@ -1217,8 +1323,11 @@ const (
- 	SIOCGIFPDSTADDR                = 0xc0206948
- 	SIOCGIFPHYS                    = 0xc0206935
- 	SIOCGIFPSRCADDR                = 0xc0206947
-+	SIOCGIFRSSHASH                 = 0xc0186997
-+	SIOCGIFRSSKEY                  = 0xc0946996
- 	SIOCGIFSTATUS                  = 0xc331693b
- 	SIOCGIFXMEDIA                  = 0xc030698b
-+	SIOCGLANPCP                    = 0xc0206998
- 	SIOCGLOWAT                     = 0x40047303
- 	SIOCGPGRP                      = 0x40047309
- 	SIOCGPRIVATE_0                 = 0xc0206950
-@@ -1249,6 +1358,7 @@ const (
- 	SIOCSIFPHYS                    = 0x80206936
- 	SIOCSIFRVNET                   = 0xc020695b
- 	SIOCSIFVNET                    = 0xc020695a
-+	SIOCSLANPCP                    = 0x80206999
- 	SIOCSLOWAT                     = 0x80047302
- 	SIOCSPGRP                      = 0x80047308
- 	SIOCSTUNFIB                    = 0x8020695f
-@@ -1267,6 +1377,7 @@ const (
- 	SO_BINTIME                     = 0x2000
- 	SO_BROADCAST                   = 0x20
- 	SO_DEBUG                       = 0x1
-+	SO_DOMAIN                      = 0x1019
- 	SO_DONTROUTE                   = 0x10
- 	SO_ERROR                       = 0x1007
- 	SO_KEEPALIVE                   = 0x8
-@@ -1275,6 +1386,7 @@ const (
- 	SO_LISTENINCQLEN               = 0x1013
- 	SO_LISTENQLEN                  = 0x1012
- 	SO_LISTENQLIMIT                = 0x1011
-+	SO_MAX_PACING_RATE             = 0x1018
- 	SO_NOSIGPIPE                   = 0x800
- 	SO_NO_DDP                      = 0x8000
- 	SO_NO_OFFLOAD                  = 0x4000
-@@ -1287,15 +1399,52 @@ const (
- 	SO_RCVTIMEO                    = 0x1006
- 	SO_REUSEADDR                   = 0x4
- 	SO_REUSEPORT                   = 0x200
-+	SO_REUSEPORT_LB                = 0x10000
- 	SO_SETFIB                      = 0x1014
- 	SO_SNDBUF                      = 0x1001
- 	SO_SNDLOWAT                    = 0x1003
- 	SO_SNDTIMEO                    = 0x1005
- 	SO_TIMESTAMP                   = 0x400
-+	SO_TS_BINTIME                  = 0x1
-+	SO_TS_CLOCK                    = 0x1017
-+	SO_TS_CLOCK_MAX                = 0x3
-+	SO_TS_DEFAULT                  = 0x0
-+	SO_TS_MONOTONIC                = 0x3
-+	SO_TS_REALTIME                 = 0x2
-+	SO_TS_REALTIME_MICRO           = 0x0
- 	SO_TYPE                        = 0x1008
- 	SO_USELOOPBACK                 = 0x40
- 	SO_USER_COOKIE                 = 0x1015
- 	SO_VENDOR                      = 0x80000000
-+	S_BLKSIZE                      = 0x200
-+	S_IEXEC                        = 0x40
-+	S_IFBLK                        = 0x6000
-+	S_IFCHR                        = 0x2000
-+	S_IFDIR                        = 0x4000
-+	S_IFIFO                        = 0x1000
-+	S_IFLNK                        = 0xa000
-+	S_IFMT                         = 0xf000
-+	S_IFREG                        = 0x8000
-+	S_IFSOCK                       = 0xc000
-+	S_IFWHT                        = 0xe000
-+	S_IREAD                        = 0x100
-+	S_IRGRP                        = 0x20
-+	S_IROTH                        = 0x4
-+	S_IRUSR                        = 0x100
-+	S_IRWXG                        = 0x38
-+	S_IRWXO                        = 0x7
-+	S_IRWXU                        = 0x1c0
-+	S_ISGID                        = 0x400
-+	S_ISTXT                        = 0x200
-+	S_ISUID                        = 0x800
-+	S_ISVTX                        = 0x200
-+	S_IWGRP                        = 0x10
-+	S_IWOTH                        = 0x2
-+	S_IWRITE                       = 0x80
-+	S_IWUSR                        = 0x80
-+	S_IXGRP                        = 0x8
-+	S_IXOTH                        = 0x1
-+	S_IXUSR                        = 0x40
- 	TAB0                           = 0x0
- 	TAB3                           = 0x4
- 	TABDLY                         = 0x4
-@@ -1306,10 +1455,45 @@ const (
- 	TCOFLUSH                       = 0x2
- 	TCOOFF                         = 0x1
- 	TCOON                          = 0x2
-+	TCP_BBR_ACK_COMP_ALG           = 0x448
-+	TCP_BBR_DRAIN_INC_EXTRA        = 0x43c
-+	TCP_BBR_DRAIN_PG               = 0x42e
-+	TCP_BBR_EXTRA_GAIN             = 0x449
-+	TCP_BBR_IWINTSO                = 0x42b
-+	TCP_BBR_LOWGAIN_FD             = 0x436
-+	TCP_BBR_LOWGAIN_HALF           = 0x435
-+	TCP_BBR_LOWGAIN_THRESH         = 0x434
-+	TCP_BBR_MAX_RTO                = 0x439
-+	TCP_BBR_MIN_RTO                = 0x438
-+	TCP_BBR_ONE_RETRAN             = 0x431
-+	TCP_BBR_PACE_CROSS             = 0x442
-+	TCP_BBR_PACE_DEL_TAR           = 0x43f
-+	TCP_BBR_PACE_PER_SEC           = 0x43e
-+	TCP_BBR_PACE_SEG_MAX           = 0x440
-+	TCP_BBR_PACE_SEG_MIN           = 0x441
-+	TCP_BBR_PROBE_RTT_GAIN         = 0x44d
-+	TCP_BBR_PROBE_RTT_INT          = 0x430
-+	TCP_BBR_PROBE_RTT_LEN          = 0x44e
-+	TCP_BBR_RACK_RTT_USE           = 0x44a
-+	TCP_BBR_RECFORCE               = 0x42c
-+	TCP_BBR_REC_OVER_HPTS          = 0x43a
-+	TCP_BBR_RETRAN_WTSO            = 0x44b
-+	TCP_BBR_RWND_IS_APP            = 0x42f
-+	TCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d
-+	TCP_BBR_STARTUP_LOSS_EXIT      = 0x432
-+	TCP_BBR_STARTUP_PG             = 0x42d
-+	TCP_BBR_UNLIMITED              = 0x43b
-+	TCP_BBR_USEDEL_RATE            = 0x437
-+	TCP_BBR_USE_LOWGAIN            = 0x433
- 	TCP_CA_NAME_MAX                = 0x10
- 	TCP_CCALGOOPT                  = 0x41
- 	TCP_CONGESTION                 = 0x40
-+	TCP_DATA_AFTER_CLOSE           = 0x44c
-+	TCP_DELACK                     = 0x48
- 	TCP_FASTOPEN                   = 0x401
-+	TCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10
-+	TCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4
-+	TCP_FASTOPEN_PSK_LEN           = 0x10
- 	TCP_FUNCTION_BLK               = 0x2000
- 	TCP_FUNCTION_NAME_LEN_MAX      = 0x20
- 	TCP_INFO                       = 0x20
-@@ -1317,6 +1501,12 @@ const (
- 	TCP_KEEPIDLE                   = 0x100
- 	TCP_KEEPINIT                   = 0x80
- 	TCP_KEEPINTVL                  = 0x200
-+	TCP_LOG                        = 0x22
-+	TCP_LOGBUF                     = 0x23
-+	TCP_LOGDUMP                    = 0x25
-+	TCP_LOGDUMPID                  = 0x26
-+	TCP_LOGID                      = 0x24
-+	TCP_LOG_ID_LEN                 = 0x40
- 	TCP_MAXBURST                   = 0x4
- 	TCP_MAXHLEN                    = 0x3c
- 	TCP_MAXOLEN                    = 0x28
-@@ -1332,8 +1522,30 @@ const (
- 	TCP_NOPUSH                     = 0x4
- 	TCP_PCAP_IN                    = 0x1000
- 	TCP_PCAP_OUT                   = 0x800
-+	TCP_RACK_EARLY_RECOV           = 0x423
-+	TCP_RACK_EARLY_SEG             = 0x424
-+	TCP_RACK_IDLE_REDUCE_HIGH      = 0x444
-+	TCP_RACK_MIN_PACE              = 0x445
-+	TCP_RACK_MIN_PACE_SEG          = 0x446
-+	TCP_RACK_MIN_TO                = 0x422
-+	TCP_RACK_PACE_ALWAYS           = 0x41f
-+	TCP_RACK_PACE_MAX_SEG          = 0x41e
-+	TCP_RACK_PACE_REDUCE           = 0x41d
-+	TCP_RACK_PKT_DELAY             = 0x428
-+	TCP_RACK_PROP                  = 0x41b
-+	TCP_RACK_PROP_RATE             = 0x420
-+	TCP_RACK_PRR_SENDALOT          = 0x421
-+	TCP_RACK_REORD_FADE            = 0x426
-+	TCP_RACK_REORD_THRESH          = 0x425
-+	TCP_RACK_SESS_CWV              = 0x42a
-+	TCP_RACK_TLP_INC_VAR           = 0x429
-+	TCP_RACK_TLP_REDUCE            = 0x41c
-+	TCP_RACK_TLP_THRESH            = 0x427
-+	TCP_RACK_TLP_USE               = 0x447
- 	TCP_VENDOR                     = 0x80000000
- 	TCSAFLUSH                      = 0x2
-+	TIMER_ABSTIME                  = 0x1
-+	TIMER_RELTIME                  = 0x0
- 	TIOCCBRK                       = 0x2000747a
- 	TIOCCDTR                       = 0x20007478
- 	TIOCCONS                       = 0x80047462
-@@ -1397,6 +1609,8 @@ const (
- 	TIOCTIMESTAMP                  = 0x40107459
- 	TIOCUCNTL                      = 0x80047466
- 	TOSTOP                         = 0x400000
-+	UTIME_NOW                      = -0x1
-+	UTIME_OMIT                     = -0x2
- 	VDISCARD                       = 0xf
- 	VDSUSP                         = 0xb
- 	VEOF                           = 0x0
-@@ -1408,6 +1622,7 @@ const (
- 	VKILL                          = 0x5
- 	VLNEXT                         = 0xe
- 	VMIN                           = 0x10
-+	VM_BCACHE_SIZE_MAX             = 0x19000000
- 	VQUIT                          = 0x9
- 	VREPRINT                       = 0x6
- 	VSTART                         = 0xc
-@@ -1570,138 +1785,146 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "operation timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "operation canceled",
--	86: "illegal byte sequence",
--	87: "attribute not found",
--	88: "programming error",
--	89: "bad message",
--	90: "multihop attempted",
--	91: "link has been severed",
--	92: "protocol error",
--	93: "capabilities insufficient",
--	94: "not permitted in capability mode",
--	95: "state not recoverable",
--	96: "previous owner died",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "ECANCELED", "operation canceled"},
-+	{86, "EILSEQ", "illegal byte sequence"},
-+	{87, "ENOATTR", "attribute not found"},
-+	{88, "EDOOFUS", "programming error"},
-+	{89, "EBADMSG", "bad message"},
-+	{90, "EMULTIHOP", "multihop attempted"},
-+	{91, "ENOLINK", "link has been severed"},
-+	{92, "EPROTO", "protocol error"},
-+	{93, "ENOTCAPABLE", "capabilities insufficient"},
-+	{94, "ECAPMODE", "not permitted in capability mode"},
-+	{95, "ENOTRECOVERABLE", "state not recoverable"},
-+	{96, "EOWNERDEAD", "previous owner died"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "suspended (signal)",
--	18: "suspended",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "unknown signal",
--	33: "unknown signal",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "unknown signal"},
-+	{33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go
-new file mode 100644
-index 00000000..21973940
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go
-@@ -0,0 +1,2469 @@
-+// Code generated by mkmerge.go; DO NOT EDIT.
-+
-+// +build linux
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+	AAFS_MAGIC                                  = 0x5a3c69f0
-+	ADFS_SUPER_MAGIC                            = 0xadf5
-+	AFFS_SUPER_MAGIC                            = 0xadff
-+	AFS_FS_MAGIC                                = 0x6b414653
-+	AFS_SUPER_MAGIC                             = 0x5346414f
-+	AF_ALG                                      = 0x26
-+	AF_APPLETALK                                = 0x5
-+	AF_ASH                                      = 0x12
-+	AF_ATMPVC                                   = 0x8
-+	AF_ATMSVC                                   = 0x14
-+	AF_AX25                                     = 0x3
-+	AF_BLUETOOTH                                = 0x1f
-+	AF_BRIDGE                                   = 0x7
-+	AF_CAIF                                     = 0x25
-+	AF_CAN                                      = 0x1d
-+	AF_DECnet                                   = 0xc
-+	AF_ECONET                                   = 0x13
-+	AF_FILE                                     = 0x1
-+	AF_IB                                       = 0x1b
-+	AF_IEEE802154                               = 0x24
-+	AF_INET                                     = 0x2
-+	AF_INET6                                    = 0xa
-+	AF_IPX                                      = 0x4
-+	AF_IRDA                                     = 0x17
-+	AF_ISDN                                     = 0x22
-+	AF_IUCV                                     = 0x20
-+	AF_KCM                                      = 0x29
-+	AF_KEY                                      = 0xf
-+	AF_LLC                                      = 0x1a
-+	AF_LOCAL                                    = 0x1
-+	AF_MAX                                      = 0x2d
-+	AF_MPLS                                     = 0x1c
-+	AF_NETBEUI                                  = 0xd
-+	AF_NETLINK                                  = 0x10
-+	AF_NETROM                                   = 0x6
-+	AF_NFC                                      = 0x27
-+	AF_PACKET                                   = 0x11
-+	AF_PHONET                                   = 0x23
-+	AF_PPPOX                                    = 0x18
-+	AF_QIPCRTR                                  = 0x2a
-+	AF_RDS                                      = 0x15
-+	AF_ROSE                                     = 0xb
-+	AF_ROUTE                                    = 0x10
-+	AF_RXRPC                                    = 0x21
-+	AF_SECURITY                                 = 0xe
-+	AF_SMC                                      = 0x2b
-+	AF_SNA                                      = 0x16
-+	AF_TIPC                                     = 0x1e
-+	AF_UNIX                                     = 0x1
-+	AF_UNSPEC                                   = 0x0
-+	AF_VSOCK                                    = 0x28
-+	AF_WANPIPE                                  = 0x19
-+	AF_X25                                      = 0x9
-+	AF_XDP                                      = 0x2c
-+	ALG_OP_DECRYPT                              = 0x0
-+	ALG_OP_ENCRYPT                              = 0x1
-+	ALG_SET_AEAD_ASSOCLEN                       = 0x4
-+	ALG_SET_AEAD_AUTHSIZE                       = 0x5
-+	ALG_SET_IV                                  = 0x2
-+	ALG_SET_KEY                                 = 0x1
-+	ALG_SET_OP                                  = 0x3
-+	ANON_INODE_FS_MAGIC                         = 0x9041934
-+	ARPHRD_6LOWPAN                              = 0x339
-+	ARPHRD_ADAPT                                = 0x108
-+	ARPHRD_APPLETLK                             = 0x8
-+	ARPHRD_ARCNET                               = 0x7
-+	ARPHRD_ASH                                  = 0x30d
-+	ARPHRD_ATM                                  = 0x13
-+	ARPHRD_AX25                                 = 0x3
-+	ARPHRD_BIF                                  = 0x307
-+	ARPHRD_CAIF                                 = 0x336
-+	ARPHRD_CAN                                  = 0x118
-+	ARPHRD_CHAOS                                = 0x5
-+	ARPHRD_CISCO                                = 0x201
-+	ARPHRD_CSLIP                                = 0x101
-+	ARPHRD_CSLIP6                               = 0x103
-+	ARPHRD_DDCMP                                = 0x205
-+	ARPHRD_DLCI                                 = 0xf
-+	ARPHRD_ECONET                               = 0x30e
-+	ARPHRD_EETHER                               = 0x2
-+	ARPHRD_ETHER                                = 0x1
-+	ARPHRD_EUI64                                = 0x1b
-+	ARPHRD_FCAL                                 = 0x311
-+	ARPHRD_FCFABRIC                             = 0x313
-+	ARPHRD_FCPL                                 = 0x312
-+	ARPHRD_FCPP                                 = 0x310
-+	ARPHRD_FDDI                                 = 0x306
-+	ARPHRD_FRAD                                 = 0x302
-+	ARPHRD_HDLC                                 = 0x201
-+	ARPHRD_HIPPI                                = 0x30c
-+	ARPHRD_HWX25                                = 0x110
-+	ARPHRD_IEEE1394                             = 0x18
-+	ARPHRD_IEEE802                              = 0x6
-+	ARPHRD_IEEE80211                            = 0x321
-+	ARPHRD_IEEE80211_PRISM                      = 0x322
-+	ARPHRD_IEEE80211_RADIOTAP                   = 0x323
-+	ARPHRD_IEEE802154                           = 0x324
-+	ARPHRD_IEEE802154_MONITOR                   = 0x325
-+	ARPHRD_IEEE802_TR                           = 0x320
-+	ARPHRD_INFINIBAND                           = 0x20
-+	ARPHRD_IP6GRE                               = 0x337
-+	ARPHRD_IPDDP                                = 0x309
-+	ARPHRD_IPGRE                                = 0x30a
-+	ARPHRD_IRDA                                 = 0x30f
-+	ARPHRD_LAPB                                 = 0x204
-+	ARPHRD_LOCALTLK                             = 0x305
-+	ARPHRD_LOOPBACK                             = 0x304
-+	ARPHRD_METRICOM                             = 0x17
-+	ARPHRD_NETLINK                              = 0x338
-+	ARPHRD_NETROM                               = 0x0
-+	ARPHRD_NONE                                 = 0xfffe
-+	ARPHRD_PHONET                               = 0x334
-+	ARPHRD_PHONET_PIPE                          = 0x335
-+	ARPHRD_PIMREG                               = 0x30b
-+	ARPHRD_PPP                                  = 0x200
-+	ARPHRD_PRONET                               = 0x4
-+	ARPHRD_RAWHDLC                              = 0x206
-+	ARPHRD_RAWIP                                = 0x207
-+	ARPHRD_ROSE                                 = 0x10e
-+	ARPHRD_RSRVD                                = 0x104
-+	ARPHRD_SIT                                  = 0x308
-+	ARPHRD_SKIP                                 = 0x303
-+	ARPHRD_SLIP                                 = 0x100
-+	ARPHRD_SLIP6                                = 0x102
-+	ARPHRD_TUNNEL                               = 0x300
-+	ARPHRD_TUNNEL6                              = 0x301
-+	ARPHRD_VOID                                 = 0xffff
-+	ARPHRD_VSOCKMON                             = 0x33a
-+	ARPHRD_X25                                  = 0x10f
-+	AUTOFS_SUPER_MAGIC                          = 0x187
-+	B0                                          = 0x0
-+	B110                                        = 0x3
-+	B1200                                       = 0x9
-+	B134                                        = 0x4
-+	B150                                        = 0x5
-+	B1800                                       = 0xa
-+	B19200                                      = 0xe
-+	B200                                        = 0x6
-+	B2400                                       = 0xb
-+	B300                                        = 0x7
-+	B38400                                      = 0xf
-+	B4800                                       = 0xc
-+	B50                                         = 0x1
-+	B600                                        = 0x8
-+	B75                                         = 0x2
-+	B9600                                       = 0xd
-+	BALLOON_KVM_MAGIC                           = 0x13661366
-+	BDEVFS_MAGIC                                = 0x62646576
-+	BINDERFS_SUPER_MAGIC                        = 0x6c6f6f70
-+	BINFMTFS_MAGIC                              = 0x42494e4d
-+	BPF_A                                       = 0x10
-+	BPF_ABS                                     = 0x20
-+	BPF_ADD                                     = 0x0
-+	BPF_ADJ_ROOM_ENCAP_L2_MASK                  = 0xff
-+	BPF_ADJ_ROOM_ENCAP_L2_SHIFT                 = 0x38
-+	BPF_ALU                                     = 0x4
-+	BPF_ALU64                                   = 0x7
-+	BPF_AND                                     = 0x50
-+	BPF_ANY                                     = 0x0
-+	BPF_ARSH                                    = 0xc0
-+	BPF_B                                       = 0x10
-+	BPF_BUILD_ID_SIZE                           = 0x14
-+	BPF_CALL                                    = 0x80
-+	BPF_DEVCG_ACC_MKNOD                         = 0x1
-+	BPF_DEVCG_ACC_READ                          = 0x2
-+	BPF_DEVCG_ACC_WRITE                         = 0x4
-+	BPF_DEVCG_DEV_BLOCK                         = 0x1
-+	BPF_DEVCG_DEV_CHAR                          = 0x2
-+	BPF_DIV                                     = 0x30
-+	BPF_DW                                      = 0x18
-+	BPF_END                                     = 0xd0
-+	BPF_EXIST                                   = 0x2
-+	BPF_EXIT                                    = 0x90
-+	BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG         = 0x1
-+	BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP          = 0x4
-+	BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL     = 0x2
-+	BPF_FROM_BE                                 = 0x8
-+	BPF_FROM_LE                                 = 0x0
-+	BPF_FS_MAGIC                                = 0xcafe4a11
-+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV4                = 0x2
-+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV6                = 0x4
-+	BPF_F_ADJ_ROOM_ENCAP_L4_GRE                 = 0x8
-+	BPF_F_ADJ_ROOM_ENCAP_L4_UDP                 = 0x10
-+	BPF_F_ADJ_ROOM_FIXED_GSO                    = 0x1
-+	BPF_F_ALLOW_MULTI                           = 0x2
-+	BPF_F_ALLOW_OVERRIDE                        = 0x1
-+	BPF_F_ANY_ALIGNMENT                         = 0x2
-+	BPF_F_CLONE                                 = 0x200
-+	BPF_F_CTXLEN_MASK                           = 0xfffff00000000
-+	BPF_F_CURRENT_CPU                           = 0xffffffff
-+	BPF_F_CURRENT_NETNS                         = -0x1
-+	BPF_F_DONT_FRAGMENT                         = 0x4
-+	BPF_F_FAST_STACK_CMP                        = 0x200
-+	BPF_F_HDR_FIELD_MASK                        = 0xf
-+	BPF_F_INDEX_MASK                            = 0xffffffff
-+	BPF_F_INGRESS                               = 0x1
-+	BPF_F_INVALIDATE_HASH                       = 0x2
-+	BPF_F_LOCK                                  = 0x4
-+	BPF_F_MARK_ENFORCE                          = 0x40
-+	BPF_F_MARK_MANGLED_0                        = 0x20
-+	BPF_F_MMAPABLE                              = 0x400
-+	BPF_F_NO_COMMON_LRU                         = 0x2
-+	BPF_F_NO_PREALLOC                           = 0x1
-+	BPF_F_NUMA_NODE                             = 0x4
-+	BPF_F_PSEUDO_HDR                            = 0x10
-+	BPF_F_QUERY_EFFECTIVE                       = 0x1
-+	BPF_F_RDONLY                                = 0x8
-+	BPF_F_RDONLY_PROG                           = 0x80
-+	BPF_F_RECOMPUTE_CSUM                        = 0x1
-+	BPF_F_REPLACE                               = 0x4
-+	BPF_F_REUSE_STACKID                         = 0x400
-+	BPF_F_SEQ_NUMBER                            = 0x8
-+	BPF_F_SKIP_FIELD_MASK                       = 0xff
-+	BPF_F_STACK_BUILD_ID                        = 0x20
-+	BPF_F_STRICT_ALIGNMENT                      = 0x1
-+	BPF_F_SYSCTL_BASE_NAME                      = 0x1
-+	BPF_F_TEST_RND_HI32                         = 0x4
-+	BPF_F_TEST_STATE_FREQ                       = 0x8
-+	BPF_F_TUNINFO_IPV6                          = 0x1
-+	BPF_F_USER_BUILD_ID                         = 0x800
-+	BPF_F_USER_STACK                            = 0x100
-+	BPF_F_WRONLY                                = 0x10
-+	BPF_F_WRONLY_PROG                           = 0x100
-+	BPF_F_ZERO_CSUM_TX                          = 0x2
-+	BPF_F_ZERO_SEED                             = 0x40
-+	BPF_H                                       = 0x8
-+	BPF_IMM                                     = 0x0
-+	BPF_IND                                     = 0x40
-+	BPF_JA                                      = 0x0
-+	BPF_JEQ                                     = 0x10
-+	BPF_JGE                                     = 0x30
-+	BPF_JGT                                     = 0x20
-+	BPF_JLE                                     = 0xb0
-+	BPF_JLT                                     = 0xa0
-+	BPF_JMP                                     = 0x5
-+	BPF_JMP32                                   = 0x6
-+	BPF_JNE                                     = 0x50
-+	BPF_JSET                                    = 0x40
-+	BPF_JSGE                                    = 0x70
-+	BPF_JSGT                                    = 0x60
-+	BPF_JSLE                                    = 0xd0
-+	BPF_JSLT                                    = 0xc0
-+	BPF_K                                       = 0x0
-+	BPF_LD                                      = 0x0
-+	BPF_LDX                                     = 0x1
-+	BPF_LEN                                     = 0x80
-+	BPF_LL_OFF                                  = -0x200000
-+	BPF_LSH                                     = 0x60
-+	BPF_MAJOR_VERSION                           = 0x1
-+	BPF_MAXINSNS                                = 0x1000
-+	BPF_MEM                                     = 0x60
-+	BPF_MEMWORDS                                = 0x10
-+	BPF_MINOR_VERSION                           = 0x1
-+	BPF_MISC                                    = 0x7
-+	BPF_MOD                                     = 0x90
-+	BPF_MOV                                     = 0xb0
-+	BPF_MSH                                     = 0xa0
-+	BPF_MUL                                     = 0x20
-+	BPF_NEG                                     = 0x80
-+	BPF_NET_OFF                                 = -0x100000
-+	BPF_NOEXIST                                 = 0x1
-+	BPF_OBJ_NAME_LEN                            = 0x10
-+	BPF_OR                                      = 0x40
-+	BPF_PSEUDO_CALL                             = 0x1
-+	BPF_PSEUDO_MAP_FD                           = 0x1
-+	BPF_PSEUDO_MAP_VALUE                        = 0x2
-+	BPF_RET                                     = 0x6
-+	BPF_RSH                                     = 0x70
-+	BPF_SK_STORAGE_GET_F_CREATE                 = 0x1
-+	BPF_SOCK_OPS_ALL_CB_FLAGS                   = 0xf
-+	BPF_SOCK_OPS_RETRANS_CB_FLAG                = 0x2
-+	BPF_SOCK_OPS_RTO_CB_FLAG                    = 0x1
-+	BPF_SOCK_OPS_RTT_CB_FLAG                    = 0x8
-+	BPF_SOCK_OPS_STATE_CB_FLAG                  = 0x4
-+	BPF_ST                                      = 0x2
-+	BPF_STX                                     = 0x3
-+	BPF_SUB                                     = 0x10
-+	BPF_TAG_SIZE                                = 0x8
-+	BPF_TAX                                     = 0x0
-+	BPF_TO_BE                                   = 0x8
-+	BPF_TO_LE                                   = 0x0
-+	BPF_TXA                                     = 0x80
-+	BPF_W                                       = 0x0
-+	BPF_X                                       = 0x8
-+	BPF_XADD                                    = 0xc0
-+	BPF_XOR                                     = 0xa0
-+	BRKINT                                      = 0x2
-+	BS0                                         = 0x0
-+	BTRFS_SUPER_MAGIC                           = 0x9123683e
-+	BTRFS_TEST_MAGIC                            = 0x73727279
-+	CAN_BCM                                     = 0x2
-+	CAN_EFF_FLAG                                = 0x80000000
-+	CAN_EFF_ID_BITS                             = 0x1d
-+	CAN_EFF_MASK                                = 0x1fffffff
-+	CAN_ERR_FLAG                                = 0x20000000
-+	CAN_ERR_MASK                                = 0x1fffffff
-+	CAN_INV_FILTER                              = 0x20000000
-+	CAN_ISOTP                                   = 0x6
-+	CAN_J1939                                   = 0x7
-+	CAN_MAX_DLC                                 = 0x8
-+	CAN_MAX_DLEN                                = 0x8
-+	CAN_MCNET                                   = 0x5
-+	CAN_MTU                                     = 0x10
-+	CAN_NPROTO                                  = 0x8
-+	CAN_RAW                                     = 0x1
-+	CAN_RAW_FILTER_MAX                          = 0x200
-+	CAN_RTR_FLAG                                = 0x40000000
-+	CAN_SFF_ID_BITS                             = 0xb
-+	CAN_SFF_MASK                                = 0x7ff
-+	CAN_TP16                                    = 0x3
-+	CAN_TP20                                    = 0x4
-+	CAP_AUDIT_CONTROL                           = 0x1e
-+	CAP_AUDIT_READ                              = 0x25
-+	CAP_AUDIT_WRITE                             = 0x1d
-+	CAP_BLOCK_SUSPEND                           = 0x24
-+	CAP_CHOWN                                   = 0x0
-+	CAP_DAC_OVERRIDE                            = 0x1
-+	CAP_DAC_READ_SEARCH                         = 0x2
-+	CAP_FOWNER                                  = 0x3
-+	CAP_FSETID                                  = 0x4
-+	CAP_IPC_LOCK                                = 0xe
-+	CAP_IPC_OWNER                               = 0xf
-+	CAP_KILL                                    = 0x5
-+	CAP_LAST_CAP                                = 0x25
-+	CAP_LEASE                                   = 0x1c
-+	CAP_LINUX_IMMUTABLE                         = 0x9
-+	CAP_MAC_ADMIN                               = 0x21
-+	CAP_MAC_OVERRIDE                            = 0x20
-+	CAP_MKNOD                                   = 0x1b
-+	CAP_NET_ADMIN                               = 0xc
-+	CAP_NET_BIND_SERVICE                        = 0xa
-+	CAP_NET_BROADCAST                           = 0xb
-+	CAP_NET_RAW                                 = 0xd
-+	CAP_SETFCAP                                 = 0x1f
-+	CAP_SETGID                                  = 0x6
-+	CAP_SETPCAP                                 = 0x8
-+	CAP_SETUID                                  = 0x7
-+	CAP_SYSLOG                                  = 0x22
-+	CAP_SYS_ADMIN                               = 0x15
-+	CAP_SYS_BOOT                                = 0x16
-+	CAP_SYS_CHROOT                              = 0x12
-+	CAP_SYS_MODULE                              = 0x10
-+	CAP_SYS_NICE                                = 0x17
-+	CAP_SYS_PACCT                               = 0x14
-+	CAP_SYS_PTRACE                              = 0x13
-+	CAP_SYS_RAWIO                               = 0x11
-+	CAP_SYS_RESOURCE                            = 0x18
-+	CAP_SYS_TIME                                = 0x19
-+	CAP_SYS_TTY_CONFIG                          = 0x1a
-+	CAP_WAKE_ALARM                              = 0x23
-+	CFLUSH                                      = 0xf
-+	CGROUP2_SUPER_MAGIC                         = 0x63677270
-+	CGROUP_SUPER_MAGIC                          = 0x27e0eb
-+	CLOCK_BOOTTIME                              = 0x7
-+	CLOCK_BOOTTIME_ALARM                        = 0x9
-+	CLOCK_DEFAULT                               = 0x0
-+	CLOCK_EXT                                   = 0x1
-+	CLOCK_INT                                   = 0x2
-+	CLOCK_MONOTONIC                             = 0x1
-+	CLOCK_MONOTONIC_COARSE                      = 0x6
-+	CLOCK_MONOTONIC_RAW                         = 0x4
-+	CLOCK_PROCESS_CPUTIME_ID                    = 0x2
-+	CLOCK_REALTIME                              = 0x0
-+	CLOCK_REALTIME_ALARM                        = 0x8
-+	CLOCK_REALTIME_COARSE                       = 0x5
-+	CLOCK_TAI                                   = 0xb
-+	CLOCK_THREAD_CPUTIME_ID                     = 0x3
-+	CLOCK_TXFROMRX                              = 0x4
-+	CLOCK_TXINT                                 = 0x3
-+	CLONE_ARGS_SIZE_VER0                        = 0x40
-+	CLONE_ARGS_SIZE_VER1                        = 0x50
-+	CLONE_CHILD_CLEARTID                        = 0x200000
-+	CLONE_CHILD_SETTID                          = 0x1000000
-+	CLONE_CLEAR_SIGHAND                         = 0x100000000
-+	CLONE_DETACHED                              = 0x400000
-+	CLONE_FILES                                 = 0x400
-+	CLONE_FS                                    = 0x200
-+	CLONE_IO                                    = 0x80000000
-+	CLONE_NEWCGROUP                             = 0x2000000
-+	CLONE_NEWIPC                                = 0x8000000
-+	CLONE_NEWNET                                = 0x40000000
-+	CLONE_NEWNS                                 = 0x20000
-+	CLONE_NEWPID                                = 0x20000000
-+	CLONE_NEWTIME                               = 0x80
-+	CLONE_NEWUSER                               = 0x10000000
-+	CLONE_NEWUTS                                = 0x4000000
-+	CLONE_PARENT                                = 0x8000
-+	CLONE_PARENT_SETTID                         = 0x100000
-+	CLONE_PIDFD                                 = 0x1000
-+	CLONE_PTRACE                                = 0x2000
-+	CLONE_SETTLS                                = 0x80000
-+	CLONE_SIGHAND                               = 0x800
-+	CLONE_SYSVSEM                               = 0x40000
-+	CLONE_THREAD                                = 0x10000
-+	CLONE_UNTRACED                              = 0x800000
-+	CLONE_VFORK                                 = 0x4000
-+	CLONE_VM                                    = 0x100
-+	CMSPAR                                      = 0x40000000
-+	CODA_SUPER_MAGIC                            = 0x73757245
-+	CR0                                         = 0x0
-+	CRAMFS_MAGIC                                = 0x28cd3d45
-+	CRTSCTS                                     = 0x80000000
-+	CRYPTO_MAX_NAME                             = 0x40
-+	CRYPTO_MSG_MAX                              = 0x15
-+	CRYPTO_NR_MSGTYPES                          = 0x6
-+	CRYPTO_REPORT_MAXSIZE                       = 0x160
-+	CS5                                         = 0x0
-+	CSIGNAL                                     = 0xff
-+	CSTART                                      = 0x11
-+	CSTATUS                                     = 0x0
-+	CSTOP                                       = 0x13
-+	CSUSP                                       = 0x1a
-+	DAXFS_MAGIC                                 = 0x64646178
-+	DEBUGFS_MAGIC                               = 0x64626720
-+	DEVLINK_CMD_ESWITCH_MODE_GET                = 0x1d
-+	DEVLINK_CMD_ESWITCH_MODE_SET                = 0x1e
-+	DEVLINK_GENL_MCGRP_CONFIG_NAME              = "config"
-+	DEVLINK_GENL_NAME                           = "devlink"
-+	DEVLINK_GENL_VERSION                        = 0x1
-+	DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14
-+	DEVPTS_SUPER_MAGIC                          = 0x1cd1
-+	DMA_BUF_MAGIC                               = 0x444d4142
-+	DT_BLK                                      = 0x6
-+	DT_CHR                                      = 0x2
-+	DT_DIR                                      = 0x4
-+	DT_FIFO                                     = 0x1
-+	DT_LNK                                      = 0xa
-+	DT_REG                                      = 0x8
-+	DT_SOCK                                     = 0xc
-+	DT_UNKNOWN                                  = 0x0
-+	DT_WHT                                      = 0xe
-+	ECHO                                        = 0x8
-+	ECRYPTFS_SUPER_MAGIC                        = 0xf15f
-+	EFD_SEMAPHORE                               = 0x1
-+	EFIVARFS_MAGIC                              = 0xde5e81e4
-+	EFS_SUPER_MAGIC                             = 0x414a53
-+	ENCODING_DEFAULT                            = 0x0
-+	ENCODING_FM_MARK                            = 0x3
-+	ENCODING_FM_SPACE                           = 0x4
-+	ENCODING_MANCHESTER                         = 0x5
-+	ENCODING_NRZ                                = 0x1
-+	ENCODING_NRZI                               = 0x2
-+	EPOLLERR                                    = 0x8
-+	EPOLLET                                     = 0x80000000
-+	EPOLLEXCLUSIVE                              = 0x10000000
-+	EPOLLHUP                                    = 0x10
-+	EPOLLIN                                     = 0x1
-+	EPOLLMSG                                    = 0x400
-+	EPOLLONESHOT                                = 0x40000000
-+	EPOLLOUT                                    = 0x4
-+	EPOLLPRI                                    = 0x2
-+	EPOLLRDBAND                                 = 0x80
-+	EPOLLRDHUP                                  = 0x2000
-+	EPOLLRDNORM                                 = 0x40
-+	EPOLLWAKEUP                                 = 0x20000000
-+	EPOLLWRBAND                                 = 0x200
-+	EPOLLWRNORM                                 = 0x100
-+	EPOLL_CTL_ADD                               = 0x1
-+	EPOLL_CTL_DEL                               = 0x2
-+	EPOLL_CTL_MOD                               = 0x3
-+	EROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2
-+	ETH_P_1588                                  = 0x88f7
-+	ETH_P_8021AD                                = 0x88a8
-+	ETH_P_8021AH                                = 0x88e7
-+	ETH_P_8021Q                                 = 0x8100
-+	ETH_P_80221                                 = 0x8917
-+	ETH_P_802_2                                 = 0x4
-+	ETH_P_802_3                                 = 0x1
-+	ETH_P_802_3_MIN                             = 0x600
-+	ETH_P_802_EX1                               = 0x88b5
-+	ETH_P_AARP                                  = 0x80f3
-+	ETH_P_AF_IUCV                               = 0xfbfb
-+	ETH_P_ALL                                   = 0x3
-+	ETH_P_AOE                                   = 0x88a2
-+	ETH_P_ARCNET                                = 0x1a
-+	ETH_P_ARP                                   = 0x806
-+	ETH_P_ATALK                                 = 0x809b
-+	ETH_P_ATMFATE                               = 0x8884
-+	ETH_P_ATMMPOA                               = 0x884c
-+	ETH_P_AX25                                  = 0x2
-+	ETH_P_BATMAN                                = 0x4305
-+	ETH_P_BPQ                                   = 0x8ff
-+	ETH_P_CAIF                                  = 0xf7
-+	ETH_P_CAN                                   = 0xc
-+	ETH_P_CANFD                                 = 0xd
-+	ETH_P_CONTROL                               = 0x16
-+	ETH_P_CUST                                  = 0x6006
-+	ETH_P_DDCMP                                 = 0x6
-+	ETH_P_DEC                                   = 0x6000
-+	ETH_P_DIAG                                  = 0x6005
-+	ETH_P_DNA_DL                                = 0x6001
-+	ETH_P_DNA_RC                                = 0x6002
-+	ETH_P_DNA_RT                                = 0x6003
-+	ETH_P_DSA                                   = 0x1b
-+	ETH_P_DSA_8021Q                             = 0xdadb
-+	ETH_P_ECONET                                = 0x18
-+	ETH_P_EDSA                                  = 0xdada
-+	ETH_P_ERSPAN                                = 0x88be
-+	ETH_P_ERSPAN2                               = 0x22eb
-+	ETH_P_FCOE                                  = 0x8906
-+	ETH_P_FIP                                   = 0x8914
-+	ETH_P_HDLC                                  = 0x19
-+	ETH_P_HSR                                   = 0x892f
-+	ETH_P_IBOE                                  = 0x8915
-+	ETH_P_IEEE802154                            = 0xf6
-+	ETH_P_IEEEPUP                               = 0xa00
-+	ETH_P_IEEEPUPAT                             = 0xa01
-+	ETH_P_IFE                                   = 0xed3e
-+	ETH_P_IP                                    = 0x800
-+	ETH_P_IPV6                                  = 0x86dd
-+	ETH_P_IPX                                   = 0x8137
-+	ETH_P_IRDA                                  = 0x17
-+	ETH_P_LAT                                   = 0x6004
-+	ETH_P_LINK_CTL                              = 0x886c
-+	ETH_P_LLDP                                  = 0x88cc
-+	ETH_P_LOCALTALK                             = 0x9
-+	ETH_P_LOOP                                  = 0x60
-+	ETH_P_LOOPBACK                              = 0x9000
-+	ETH_P_MACSEC                                = 0x88e5
-+	ETH_P_MAP                                   = 0xf9
-+	ETH_P_MOBITEX                               = 0x15
-+	ETH_P_MPLS_MC                               = 0x8848
-+	ETH_P_MPLS_UC                               = 0x8847
-+	ETH_P_MVRP                                  = 0x88f5
-+	ETH_P_NCSI                                  = 0x88f8
-+	ETH_P_NSH                                   = 0x894f
-+	ETH_P_PAE                                   = 0x888e
-+	ETH_P_PAUSE                                 = 0x8808
-+	ETH_P_PHONET                                = 0xf5
-+	ETH_P_PPPTALK                               = 0x10
-+	ETH_P_PPP_DISC                              = 0x8863
-+	ETH_P_PPP_MP                                = 0x8
-+	ETH_P_PPP_SES                               = 0x8864
-+	ETH_P_PREAUTH                               = 0x88c7
-+	ETH_P_PRP                                   = 0x88fb
-+	ETH_P_PUP                                   = 0x200
-+	ETH_P_PUPAT                                 = 0x201
-+	ETH_P_QINQ1                                 = 0x9100
-+	ETH_P_QINQ2                                 = 0x9200
-+	ETH_P_QINQ3                                 = 0x9300
-+	ETH_P_RARP                                  = 0x8035
-+	ETH_P_SCA                                   = 0x6007
-+	ETH_P_SLOW                                  = 0x8809
-+	ETH_P_SNAP                                  = 0x5
-+	ETH_P_TDLS                                  = 0x890d
-+	ETH_P_TEB                                   = 0x6558
-+	ETH_P_TIPC                                  = 0x88ca
-+	ETH_P_TRAILER                               = 0x1c
-+	ETH_P_TR_802_2                              = 0x11
-+	ETH_P_TSN                                   = 0x22f0
-+	ETH_P_WAN_PPP                               = 0x7
-+	ETH_P_WCCP                                  = 0x883e
-+	ETH_P_X25                                   = 0x805
-+	ETH_P_XDSA                                  = 0xf8
-+	EXABYTE_ENABLE_NEST                         = 0xf0
-+	EXT2_SUPER_MAGIC                            = 0xef53
-+	EXT3_SUPER_MAGIC                            = 0xef53
-+	EXT4_SUPER_MAGIC                            = 0xef53
-+	EXTA                                        = 0xe
-+	EXTB                                        = 0xf
-+	F2FS_SUPER_MAGIC                            = 0xf2f52010
-+	FALLOC_FL_COLLAPSE_RANGE                    = 0x8
-+	FALLOC_FL_INSERT_RANGE                      = 0x20
-+	FALLOC_FL_KEEP_SIZE                         = 0x1
-+	FALLOC_FL_NO_HIDE_STALE                     = 0x4
-+	FALLOC_FL_PUNCH_HOLE                        = 0x2
-+	FALLOC_FL_UNSHARE_RANGE                     = 0x40
-+	FALLOC_FL_ZERO_RANGE                        = 0x10
-+	FANOTIFY_METADATA_VERSION                   = 0x3
-+	FAN_ACCESS                                  = 0x1
-+	FAN_ACCESS_PERM                             = 0x20000
-+	FAN_ALLOW                                   = 0x1
-+	FAN_ALL_CLASS_BITS                          = 0xc
-+	FAN_ALL_EVENTS                              = 0x3b
-+	FAN_ALL_INIT_FLAGS                          = 0x3f
-+	FAN_ALL_MARK_FLAGS                          = 0xff
-+	FAN_ALL_OUTGOING_EVENTS                     = 0x3403b
-+	FAN_ALL_PERM_EVENTS                         = 0x30000
-+	FAN_ATTRIB                                  = 0x4
-+	FAN_AUDIT                                   = 0x10
-+	FAN_CLASS_CONTENT                           = 0x4
-+	FAN_CLASS_NOTIF                             = 0x0
-+	FAN_CLASS_PRE_CONTENT                       = 0x8
-+	FAN_CLOEXEC                                 = 0x1
-+	FAN_CLOSE                                   = 0x18
-+	FAN_CLOSE_NOWRITE                           = 0x10
-+	FAN_CLOSE_WRITE                             = 0x8
-+	FAN_CREATE                                  = 0x100
-+	FAN_DELETE                                  = 0x200
-+	FAN_DELETE_SELF                             = 0x400
-+	FAN_DENY                                    = 0x2
-+	FAN_ENABLE_AUDIT                            = 0x40
-+	FAN_EVENT_INFO_TYPE_FID                     = 0x1
-+	FAN_EVENT_METADATA_LEN                      = 0x18
-+	FAN_EVENT_ON_CHILD                          = 0x8000000
-+	FAN_MARK_ADD                                = 0x1
-+	FAN_MARK_DONT_FOLLOW                        = 0x4
-+	FAN_MARK_FILESYSTEM                         = 0x100
-+	FAN_MARK_FLUSH                              = 0x80
-+	FAN_MARK_IGNORED_MASK                       = 0x20
-+	FAN_MARK_IGNORED_SURV_MODIFY                = 0x40
-+	FAN_MARK_INODE                              = 0x0
-+	FAN_MARK_MOUNT                              = 0x10
-+	FAN_MARK_ONLYDIR                            = 0x8
-+	FAN_MARK_REMOVE                             = 0x2
-+	FAN_MODIFY                                  = 0x2
-+	FAN_MOVE                                    = 0xc0
-+	FAN_MOVED_FROM                              = 0x40
-+	FAN_MOVED_TO                                = 0x80
-+	FAN_MOVE_SELF                               = 0x800
-+	FAN_NOFD                                    = -0x1
-+	FAN_NONBLOCK                                = 0x2
-+	FAN_ONDIR                                   = 0x40000000
-+	FAN_OPEN                                    = 0x20
-+	FAN_OPEN_EXEC                               = 0x1000
-+	FAN_OPEN_EXEC_PERM                          = 0x40000
-+	FAN_OPEN_PERM                               = 0x10000
-+	FAN_Q_OVERFLOW                              = 0x4000
-+	FAN_REPORT_FID                              = 0x200
-+	FAN_REPORT_TID                              = 0x100
-+	FAN_UNLIMITED_MARKS                         = 0x20
-+	FAN_UNLIMITED_QUEUE                         = 0x10
-+	FD_CLOEXEC                                  = 0x1
-+	FD_SETSIZE                                  = 0x400
-+	FF0                                         = 0x0
-+	FSCRYPT_KEY_DESCRIPTOR_SIZE                 = 0x8
-+	FSCRYPT_KEY_DESC_PREFIX                     = "fscrypt:"
-+	FSCRYPT_KEY_DESC_PREFIX_SIZE                = 0x8
-+	FSCRYPT_KEY_IDENTIFIER_SIZE                 = 0x10
-+	FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY  = 0x1
-+	FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2
-+	FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR            = 0x1
-+	FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER            = 0x2
-+	FSCRYPT_KEY_STATUS_ABSENT                   = 0x1
-+	FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF       = 0x1
-+	FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED     = 0x3
-+	FSCRYPT_KEY_STATUS_PRESENT                  = 0x2
-+	FSCRYPT_MAX_KEY_SIZE                        = 0x40
-+	FSCRYPT_MODE_ADIANTUM                       = 0x9
-+	FSCRYPT_MODE_AES_128_CBC                    = 0x5
-+	FSCRYPT_MODE_AES_128_CTS                    = 0x6
-+	FSCRYPT_MODE_AES_256_CTS                    = 0x4
-+	FSCRYPT_MODE_AES_256_XTS                    = 0x1
-+	FSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2
-+	FSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3
-+	FSCRYPT_POLICY_FLAGS_PAD_4                  = 0x0
-+	FSCRYPT_POLICY_FLAGS_PAD_8                  = 0x1
-+	FSCRYPT_POLICY_FLAGS_PAD_MASK               = 0x3
-+	FSCRYPT_POLICY_FLAGS_VALID                  = 0xf
-+	FSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4
-+	FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64          = 0x8
-+	FSCRYPT_POLICY_V1                           = 0x0
-+	FSCRYPT_POLICY_V2                           = 0x2
-+	FS_ENCRYPTION_MODE_ADIANTUM                 = 0x9
-+	FS_ENCRYPTION_MODE_AES_128_CBC              = 0x5
-+	FS_ENCRYPTION_MODE_AES_128_CTS              = 0x6
-+	FS_ENCRYPTION_MODE_AES_256_CBC              = 0x3
-+	FS_ENCRYPTION_MODE_AES_256_CTS              = 0x4
-+	FS_ENCRYPTION_MODE_AES_256_GCM              = 0x2
-+	FS_ENCRYPTION_MODE_AES_256_XTS              = 0x1
-+	FS_ENCRYPTION_MODE_INVALID                  = 0x0
-+	FS_ENCRYPTION_MODE_SPECK128_256_CTS         = 0x8
-+	FS_ENCRYPTION_MODE_SPECK128_256_XTS         = 0x7
-+	FS_IOC_ADD_ENCRYPTION_KEY                   = 0xc0506617
-+	FS_IOC_GET_ENCRYPTION_KEY_STATUS            = 0xc080661a
-+	FS_IOC_GET_ENCRYPTION_POLICY_EX             = 0xc0096616
-+	FS_IOC_MEASURE_VERITY                       = 0xc0046686
-+	FS_IOC_REMOVE_ENCRYPTION_KEY                = 0xc0406618
-+	FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS      = 0xc0406619
-+	FS_KEY_DESCRIPTOR_SIZE                      = 0x8
-+	FS_KEY_DESC_PREFIX                          = "fscrypt:"
-+	FS_KEY_DESC_PREFIX_SIZE                     = 0x8
-+	FS_MAX_KEY_SIZE                             = 0x40
-+	FS_POLICY_FLAGS_PAD_16                      = 0x2
-+	FS_POLICY_FLAGS_PAD_32                      = 0x3
-+	FS_POLICY_FLAGS_PAD_4                       = 0x0
-+	FS_POLICY_FLAGS_PAD_8                       = 0x1
-+	FS_POLICY_FLAGS_PAD_MASK                    = 0x3
-+	FS_POLICY_FLAGS_VALID                       = 0xf
-+	FS_VERITY_FL                                = 0x100000
-+	FS_VERITY_HASH_ALG_SHA256                   = 0x1
-+	FS_VERITY_HASH_ALG_SHA512                   = 0x2
-+	FUTEXFS_SUPER_MAGIC                         = 0xbad1dea
-+	F_ADD_SEALS                                 = 0x409
-+	F_DUPFD                                     = 0x0
-+	F_DUPFD_CLOEXEC                             = 0x406
-+	F_EXLCK                                     = 0x4
-+	F_GETFD                                     = 0x1
-+	F_GETFL                                     = 0x3
-+	F_GETLEASE                                  = 0x401
-+	F_GETOWN_EX                                 = 0x10
-+	F_GETPIPE_SZ                                = 0x408
-+	F_GETSIG                                    = 0xb
-+	F_GET_FILE_RW_HINT                          = 0x40d
-+	F_GET_RW_HINT                               = 0x40b
-+	F_GET_SEALS                                 = 0x40a
-+	F_LOCK                                      = 0x1
-+	F_NOTIFY                                    = 0x402
-+	F_OFD_GETLK                                 = 0x24
-+	F_OFD_SETLK                                 = 0x25
-+	F_OFD_SETLKW                                = 0x26
-+	F_OK                                        = 0x0
-+	F_SEAL_FUTURE_WRITE                         = 0x10
-+	F_SEAL_GROW                                 = 0x4
-+	F_SEAL_SEAL                                 = 0x1
-+	F_SEAL_SHRINK                               = 0x2
-+	F_SEAL_WRITE                                = 0x8
-+	F_SETFD                                     = 0x2
-+	F_SETFL                                     = 0x4
-+	F_SETLEASE                                  = 0x400
-+	F_SETOWN_EX                                 = 0xf
-+	F_SETPIPE_SZ                                = 0x407
-+	F_SETSIG                                    = 0xa
-+	F_SET_FILE_RW_HINT                          = 0x40e
-+	F_SET_RW_HINT                               = 0x40c
-+	F_SHLCK                                     = 0x8
-+	F_TEST                                      = 0x3
-+	F_TLOCK                                     = 0x2
-+	F_ULOCK                                     = 0x0
-+	GENL_ADMIN_PERM                             = 0x1
-+	GENL_CMD_CAP_DO                             = 0x2
-+	GENL_CMD_CAP_DUMP                           = 0x4
-+	GENL_CMD_CAP_HASPOL                         = 0x8
-+	GENL_HDRLEN                                 = 0x4
-+	GENL_ID_CTRL                                = 0x10
-+	GENL_ID_PMCRAID                             = 0x12
-+	GENL_ID_VFS_DQUOT                           = 0x11
-+	GENL_MAX_ID                                 = 0x3ff
-+	GENL_MIN_ID                                 = 0x10
-+	GENL_NAMSIZ                                 = 0x10
-+	GENL_START_ALLOC                            = 0x13
-+	GENL_UNS_ADMIN_PERM                         = 0x10
-+	GRND_INSECURE                               = 0x4
-+	GRND_NONBLOCK                               = 0x1
-+	GRND_RANDOM                                 = 0x2
-+	HDIO_DRIVE_CMD                              = 0x31f
-+	HDIO_DRIVE_CMD_AEB                          = 0x31e
-+	HDIO_DRIVE_CMD_HDR_SIZE                     = 0x4
-+	HDIO_DRIVE_HOB_HDR_SIZE                     = 0x8
-+	HDIO_DRIVE_RESET                            = 0x31c
-+	HDIO_DRIVE_TASK                             = 0x31e
-+	HDIO_DRIVE_TASKFILE                         = 0x31d
-+	HDIO_DRIVE_TASK_HDR_SIZE                    = 0x8
-+	HDIO_GETGEO                                 = 0x301
-+	HDIO_GET_32BIT                              = 0x309
-+	HDIO_GET_ACOUSTIC                           = 0x30f
-+	HDIO_GET_ADDRESS                            = 0x310
-+	HDIO_GET_BUSSTATE                           = 0x31a
-+	HDIO_GET_DMA                                = 0x30b
-+	HDIO_GET_IDENTITY                           = 0x30d
-+	HDIO_GET_KEEPSETTINGS                       = 0x308
-+	HDIO_GET_MULTCOUNT                          = 0x304
-+	HDIO_GET_NICE                               = 0x30c
-+	HDIO_GET_NOWERR                             = 0x30a
-+	HDIO_GET_QDMA                               = 0x305
-+	HDIO_GET_UNMASKINTR                         = 0x302
-+	HDIO_GET_WCACHE                             = 0x30e
-+	HDIO_OBSOLETE_IDENTITY                      = 0x307
-+	HDIO_SCAN_HWIF                              = 0x328
-+	HDIO_SET_32BIT                              = 0x324
-+	HDIO_SET_ACOUSTIC                           = 0x32c
-+	HDIO_SET_ADDRESS                            = 0x32f
-+	HDIO_SET_BUSSTATE                           = 0x32d
-+	HDIO_SET_DMA                                = 0x326
-+	HDIO_SET_KEEPSETTINGS                       = 0x323
-+	HDIO_SET_MULTCOUNT                          = 0x321
-+	HDIO_SET_NICE                               = 0x329
-+	HDIO_SET_NOWERR                             = 0x325
-+	HDIO_SET_PIO_MODE                           = 0x327
-+	HDIO_SET_QDMA                               = 0x32e
-+	HDIO_SET_UNMASKINTR                         = 0x322
-+	HDIO_SET_WCACHE                             = 0x32b
-+	HDIO_SET_XFER                               = 0x306
-+	HDIO_TRISTATE_HWIF                          = 0x31b
-+	HDIO_UNREGISTER_HWIF                        = 0x32a
-+	HOSTFS_SUPER_MAGIC                          = 0xc0ffee
-+	HPFS_SUPER_MAGIC                            = 0xf995e849
-+	HUGETLBFS_MAGIC                             = 0x958458f6
-+	IBSHIFT                                     = 0x10
-+	ICMPV6_FILTER                               = 0x1
-+	ICRNL                                       = 0x100
-+	IFA_F_DADFAILED                             = 0x8
-+	IFA_F_DEPRECATED                            = 0x20
-+	IFA_F_HOMEADDRESS                           = 0x10
-+	IFA_F_MANAGETEMPADDR                        = 0x100
-+	IFA_F_MCAUTOJOIN                            = 0x400
-+	IFA_F_NODAD                                 = 0x2
-+	IFA_F_NOPREFIXROUTE                         = 0x200
-+	IFA_F_OPTIMISTIC                            = 0x4
-+	IFA_F_PERMANENT                             = 0x80
-+	IFA_F_SECONDARY                             = 0x1
-+	IFA_F_STABLE_PRIVACY                        = 0x800
-+	IFA_F_TEMPORARY                             = 0x1
-+	IFA_F_TENTATIVE                             = 0x40
-+	IFA_MAX                                     = 0xa
-+	IFF_ALLMULTI                                = 0x200
-+	IFF_ATTACH_QUEUE                            = 0x200
-+	IFF_AUTOMEDIA                               = 0x4000
-+	IFF_BROADCAST                               = 0x2
-+	IFF_DEBUG                                   = 0x4
-+	IFF_DETACH_QUEUE                            = 0x400
-+	IFF_DORMANT                                 = 0x20000
-+	IFF_DYNAMIC                                 = 0x8000
-+	IFF_ECHO                                    = 0x40000
-+	IFF_LOOPBACK                                = 0x8
-+	IFF_LOWER_UP                                = 0x10000
-+	IFF_MASTER                                  = 0x400
-+	IFF_MULTICAST                               = 0x1000
-+	IFF_MULTI_QUEUE                             = 0x100
-+	IFF_NAPI                                    = 0x10
-+	IFF_NAPI_FRAGS                              = 0x20
-+	IFF_NOARP                                   = 0x80
-+	IFF_NOFILTER                                = 0x1000
-+	IFF_NOTRAILERS                              = 0x20
-+	IFF_NO_PI                                   = 0x1000
-+	IFF_ONE_QUEUE                               = 0x2000
-+	IFF_PERSIST                                 = 0x800
-+	IFF_POINTOPOINT                             = 0x10
-+	IFF_PORTSEL                                 = 0x2000
-+	IFF_PROMISC                                 = 0x100
-+	IFF_RUNNING                                 = 0x40
-+	IFF_SLAVE                                   = 0x800
-+	IFF_TAP                                     = 0x2
-+	IFF_TUN                                     = 0x1
-+	IFF_TUN_EXCL                                = 0x8000
-+	IFF_UP                                      = 0x1
-+	IFF_VNET_HDR                                = 0x4000
-+	IFF_VOLATILE                                = 0x70c5a
-+	IFNAMSIZ                                    = 0x10
-+	IGNBRK                                      = 0x1
-+	IGNCR                                       = 0x80
-+	IGNPAR                                      = 0x4
-+	IMAXBEL                                     = 0x2000
-+	INLCR                                       = 0x40
-+	INPCK                                       = 0x10
-+	IN_ACCESS                                   = 0x1
-+	IN_ALL_EVENTS                               = 0xfff
-+	IN_ATTRIB                                   = 0x4
-+	IN_CLASSA_HOST                              = 0xffffff
-+	IN_CLASSA_MAX                               = 0x80
-+	IN_CLASSA_NET                               = 0xff000000
-+	IN_CLASSA_NSHIFT                            = 0x18
-+	IN_CLASSB_HOST                              = 0xffff
-+	IN_CLASSB_MAX                               = 0x10000
-+	IN_CLASSB_NET                               = 0xffff0000
-+	IN_CLASSB_NSHIFT                            = 0x10
-+	IN_CLASSC_HOST                              = 0xff
-+	IN_CLASSC_NET                               = 0xffffff00
-+	IN_CLASSC_NSHIFT                            = 0x8
-+	IN_CLOSE                                    = 0x18
-+	IN_CLOSE_NOWRITE                            = 0x10
-+	IN_CLOSE_WRITE                              = 0x8
-+	IN_CREATE                                   = 0x100
-+	IN_DELETE                                   = 0x200
-+	IN_DELETE_SELF                              = 0x400
-+	IN_DONT_FOLLOW                              = 0x2000000
-+	IN_EXCL_UNLINK                              = 0x4000000
-+	IN_IGNORED                                  = 0x8000
-+	IN_ISDIR                                    = 0x40000000
-+	IN_LOOPBACKNET                              = 0x7f
-+	IN_MASK_ADD                                 = 0x20000000
-+	IN_MASK_CREATE                              = 0x10000000
-+	IN_MODIFY                                   = 0x2
-+	IN_MOVE                                     = 0xc0
-+	IN_MOVED_FROM                               = 0x40
-+	IN_MOVED_TO                                 = 0x80
-+	IN_MOVE_SELF                                = 0x800
-+	IN_ONESHOT                                  = 0x80000000
-+	IN_ONLYDIR                                  = 0x1000000
-+	IN_OPEN                                     = 0x20
-+	IN_Q_OVERFLOW                               = 0x4000
-+	IN_UNMOUNT                                  = 0x2000
-+	IPPROTO_AH                                  = 0x33
-+	IPPROTO_BEETPH                              = 0x5e
-+	IPPROTO_COMP                                = 0x6c
-+	IPPROTO_DCCP                                = 0x21
-+	IPPROTO_DSTOPTS                             = 0x3c
-+	IPPROTO_EGP                                 = 0x8
-+	IPPROTO_ENCAP                               = 0x62
-+	IPPROTO_ESP                                 = 0x32
-+	IPPROTO_FRAGMENT                            = 0x2c
-+	IPPROTO_GRE                                 = 0x2f
-+	IPPROTO_HOPOPTS                             = 0x0
-+	IPPROTO_ICMP                                = 0x1
-+	IPPROTO_ICMPV6                              = 0x3a
-+	IPPROTO_IDP                                 = 0x16
-+	IPPROTO_IGMP                                = 0x2
-+	IPPROTO_IP                                  = 0x0
-+	IPPROTO_IPIP                                = 0x4
-+	IPPROTO_IPV6                                = 0x29
-+	IPPROTO_L2TP                                = 0x73
-+	IPPROTO_MH                                  = 0x87
-+	IPPROTO_MPLS                                = 0x89
-+	IPPROTO_MTP                                 = 0x5c
-+	IPPROTO_NONE                                = 0x3b
-+	IPPROTO_PIM                                 = 0x67
-+	IPPROTO_PUP                                 = 0xc
-+	IPPROTO_RAW                                 = 0xff
-+	IPPROTO_ROUTING                             = 0x2b
-+	IPPROTO_RSVP                                = 0x2e
-+	IPPROTO_SCTP                                = 0x84
-+	IPPROTO_TCP                                 = 0x6
-+	IPPROTO_TP                                  = 0x1d
-+	IPPROTO_UDP                                 = 0x11
-+	IPPROTO_UDPLITE                             = 0x88
-+	IPV6_2292DSTOPTS                            = 0x4
-+	IPV6_2292HOPLIMIT                           = 0x8
-+	IPV6_2292HOPOPTS                            = 0x3
-+	IPV6_2292PKTINFO                            = 0x2
-+	IPV6_2292PKTOPTIONS                         = 0x6
-+	IPV6_2292RTHDR                              = 0x5
-+	IPV6_ADDRFORM                               = 0x1
-+	IPV6_ADDR_PREFERENCES                       = 0x48
-+	IPV6_ADD_MEMBERSHIP                         = 0x14
-+	IPV6_AUTHHDR                                = 0xa
-+	IPV6_AUTOFLOWLABEL                          = 0x46
-+	IPV6_CHECKSUM                               = 0x7
-+	IPV6_DONTFRAG                               = 0x3e
-+	IPV6_DROP_MEMBERSHIP                        = 0x15
-+	IPV6_DSTOPTS                                = 0x3b
-+	IPV6_FREEBIND                               = 0x4e
-+	IPV6_HDRINCL                                = 0x24
-+	IPV6_HOPLIMIT                               = 0x34
-+	IPV6_HOPOPTS                                = 0x36
-+	IPV6_IPSEC_POLICY                           = 0x22
-+	IPV6_JOIN_ANYCAST                           = 0x1b
-+	IPV6_JOIN_GROUP                             = 0x14
-+	IPV6_LEAVE_ANYCAST                          = 0x1c
-+	IPV6_LEAVE_GROUP                            = 0x15
-+	IPV6_MINHOPCOUNT                            = 0x49
-+	IPV6_MTU                                    = 0x18
-+	IPV6_MTU_DISCOVER                           = 0x17
-+	IPV6_MULTICAST_ALL                          = 0x1d
-+	IPV6_MULTICAST_HOPS                         = 0x12
-+	IPV6_MULTICAST_IF                           = 0x11
-+	IPV6_MULTICAST_LOOP                         = 0x13
-+	IPV6_NEXTHOP                                = 0x9
-+	IPV6_ORIGDSTADDR                            = 0x4a
-+	IPV6_PATHMTU                                = 0x3d
-+	IPV6_PKTINFO                                = 0x32
-+	IPV6_PMTUDISC_DO                            = 0x2
-+	IPV6_PMTUDISC_DONT                          = 0x0
-+	IPV6_PMTUDISC_INTERFACE                     = 0x4
-+	IPV6_PMTUDISC_OMIT                          = 0x5
-+	IPV6_PMTUDISC_PROBE                         = 0x3
-+	IPV6_PMTUDISC_WANT                          = 0x1
-+	IPV6_RECVDSTOPTS                            = 0x3a
-+	IPV6_RECVERR                                = 0x19
-+	IPV6_RECVFRAGSIZE                           = 0x4d
-+	IPV6_RECVHOPLIMIT                           = 0x33
-+	IPV6_RECVHOPOPTS                            = 0x35
-+	IPV6_RECVORIGDSTADDR                        = 0x4a
-+	IPV6_RECVPATHMTU                            = 0x3c
-+	IPV6_RECVPKTINFO                            = 0x31
-+	IPV6_RECVRTHDR                              = 0x38
-+	IPV6_RECVTCLASS                             = 0x42
-+	IPV6_ROUTER_ALERT                           = 0x16
-+	IPV6_ROUTER_ALERT_ISOLATE                   = 0x1e
-+	IPV6_RTHDR                                  = 0x39
-+	IPV6_RTHDRDSTOPTS                           = 0x37
-+	IPV6_RTHDR_LOOSE                            = 0x0
-+	IPV6_RTHDR_STRICT                           = 0x1
-+	IPV6_RTHDR_TYPE_0                           = 0x0
-+	IPV6_RXDSTOPTS                              = 0x3b
-+	IPV6_RXHOPOPTS                              = 0x36
-+	IPV6_TCLASS                                 = 0x43
-+	IPV6_TRANSPARENT                            = 0x4b
-+	IPV6_UNICAST_HOPS                           = 0x10
-+	IPV6_UNICAST_IF                             = 0x4c
-+	IPV6_V6ONLY                                 = 0x1a
-+	IPV6_XFRM_POLICY                            = 0x23
-+	IP_ADD_MEMBERSHIP                           = 0x23
-+	IP_ADD_SOURCE_MEMBERSHIP                    = 0x27
-+	IP_BIND_ADDRESS_NO_PORT                     = 0x18
-+	IP_BLOCK_SOURCE                             = 0x26
-+	IP_CHECKSUM                                 = 0x17
-+	IP_DEFAULT_MULTICAST_LOOP                   = 0x1
-+	IP_DEFAULT_MULTICAST_TTL                    = 0x1
-+	IP_DF                                       = 0x4000
-+	IP_DROP_MEMBERSHIP                          = 0x24
-+	IP_DROP_SOURCE_MEMBERSHIP                   = 0x28
-+	IP_FREEBIND                                 = 0xf
-+	IP_HDRINCL                                  = 0x3
-+	IP_IPSEC_POLICY                             = 0x10
-+	IP_MAXPACKET                                = 0xffff
-+	IP_MAX_MEMBERSHIPS                          = 0x14
-+	IP_MF                                       = 0x2000
-+	IP_MINTTL                                   = 0x15
-+	IP_MSFILTER                                 = 0x29
-+	IP_MSS                                      = 0x240
-+	IP_MTU                                      = 0xe
-+	IP_MTU_DISCOVER                             = 0xa
-+	IP_MULTICAST_ALL                            = 0x31
-+	IP_MULTICAST_IF                             = 0x20
-+	IP_MULTICAST_LOOP                           = 0x22
-+	IP_MULTICAST_TTL                            = 0x21
-+	IP_NODEFRAG                                 = 0x16
-+	IP_OFFMASK                                  = 0x1fff
-+	IP_OPTIONS                                  = 0x4
-+	IP_ORIGDSTADDR                              = 0x14
-+	IP_PASSSEC                                  = 0x12
-+	IP_PKTINFO                                  = 0x8
-+	IP_PKTOPTIONS                               = 0x9
-+	IP_PMTUDISC                                 = 0xa
-+	IP_PMTUDISC_DO                              = 0x2
-+	IP_PMTUDISC_DONT                            = 0x0
-+	IP_PMTUDISC_INTERFACE                       = 0x4
-+	IP_PMTUDISC_OMIT                            = 0x5
-+	IP_PMTUDISC_PROBE                           = 0x3
-+	IP_PMTUDISC_WANT                            = 0x1
-+	IP_RECVERR                                  = 0xb
-+	IP_RECVFRAGSIZE                             = 0x19
-+	IP_RECVOPTS                                 = 0x6
-+	IP_RECVORIGDSTADDR                          = 0x14
-+	IP_RECVRETOPTS                              = 0x7
-+	IP_RECVTOS                                  = 0xd
-+	IP_RECVTTL                                  = 0xc
-+	IP_RETOPTS                                  = 0x7
-+	IP_RF                                       = 0x8000
-+	IP_ROUTER_ALERT                             = 0x5
-+	IP_TOS                                      = 0x1
-+	IP_TRANSPARENT                              = 0x13
-+	IP_TTL                                      = 0x2
-+	IP_UNBLOCK_SOURCE                           = 0x25
-+	IP_UNICAST_IF                               = 0x32
-+	IP_XFRM_POLICY                              = 0x11
-+	ISOFS_SUPER_MAGIC                           = 0x9660
-+	ISTRIP                                      = 0x20
-+	IUTF8                                       = 0x4000
-+	IXANY                                       = 0x800
-+	JFFS2_SUPER_MAGIC                           = 0x72b6
-+	KEXEC_ARCH_386                              = 0x30000
-+	KEXEC_ARCH_68K                              = 0x40000
-+	KEXEC_ARCH_AARCH64                          = 0xb70000
-+	KEXEC_ARCH_ARM                              = 0x280000
-+	KEXEC_ARCH_DEFAULT                          = 0x0
-+	KEXEC_ARCH_IA_64                            = 0x320000
-+	KEXEC_ARCH_MASK                             = 0xffff0000
-+	KEXEC_ARCH_MIPS                             = 0x80000
-+	KEXEC_ARCH_MIPS_LE                          = 0xa0000
-+	KEXEC_ARCH_PARISC                           = 0xf0000
-+	KEXEC_ARCH_PPC                              = 0x140000
-+	KEXEC_ARCH_PPC64                            = 0x150000
-+	KEXEC_ARCH_S390                             = 0x160000
-+	KEXEC_ARCH_SH                               = 0x2a0000
-+	KEXEC_ARCH_X86_64                           = 0x3e0000
-+	KEXEC_FILE_NO_INITRAMFS                     = 0x4
-+	KEXEC_FILE_ON_CRASH                         = 0x2
-+	KEXEC_FILE_UNLOAD                           = 0x1
-+	KEXEC_ON_CRASH                              = 0x1
-+	KEXEC_PRESERVE_CONTEXT                      = 0x2
-+	KEXEC_SEGMENT_MAX                           = 0x10
-+	KEYCTL_ASSUME_AUTHORITY                     = 0x10
-+	KEYCTL_CAPABILITIES                         = 0x1f
-+	KEYCTL_CAPS0_BIG_KEY                        = 0x10
-+	KEYCTL_CAPS0_CAPABILITIES                   = 0x1
-+	KEYCTL_CAPS0_DIFFIE_HELLMAN                 = 0x4
-+	KEYCTL_CAPS0_INVALIDATE                     = 0x20
-+	KEYCTL_CAPS0_MOVE                           = 0x80
-+	KEYCTL_CAPS0_PERSISTENT_KEYRINGS            = 0x2
-+	KEYCTL_CAPS0_PUBLIC_KEY                     = 0x8
-+	KEYCTL_CAPS0_RESTRICT_KEYRING               = 0x40
-+	KEYCTL_CAPS1_NS_KEYRING_NAME                = 0x1
-+	KEYCTL_CAPS1_NS_KEY_TAG                     = 0x2
-+	KEYCTL_CHOWN                                = 0x4
-+	KEYCTL_CLEAR                                = 0x7
-+	KEYCTL_DESCRIBE                             = 0x6
-+	KEYCTL_DH_COMPUTE                           = 0x17
-+	KEYCTL_GET_KEYRING_ID                       = 0x0
-+	KEYCTL_GET_PERSISTENT                       = 0x16
-+	KEYCTL_GET_SECURITY                         = 0x11
-+	KEYCTL_INSTANTIATE                          = 0xc
-+	KEYCTL_INSTANTIATE_IOV                      = 0x14
-+	KEYCTL_INVALIDATE                           = 0x15
-+	KEYCTL_JOIN_SESSION_KEYRING                 = 0x1
-+	KEYCTL_LINK                                 = 0x8
-+	KEYCTL_MOVE                                 = 0x1e
-+	KEYCTL_MOVE_EXCL                            = 0x1
-+	KEYCTL_NEGATE                               = 0xd
-+	KEYCTL_PKEY_DECRYPT                         = 0x1a
-+	KEYCTL_PKEY_ENCRYPT                         = 0x19
-+	KEYCTL_PKEY_QUERY                           = 0x18
-+	KEYCTL_PKEY_SIGN                            = 0x1b
-+	KEYCTL_PKEY_VERIFY                          = 0x1c
-+	KEYCTL_READ                                 = 0xb
-+	KEYCTL_REJECT                               = 0x13
-+	KEYCTL_RESTRICT_KEYRING                     = 0x1d
-+	KEYCTL_REVOKE                               = 0x3
-+	KEYCTL_SEARCH                               = 0xa
-+	KEYCTL_SESSION_TO_PARENT                    = 0x12
-+	KEYCTL_SETPERM                              = 0x5
-+	KEYCTL_SET_REQKEY_KEYRING                   = 0xe
-+	KEYCTL_SET_TIMEOUT                          = 0xf
-+	KEYCTL_SUPPORTS_DECRYPT                     = 0x2
-+	KEYCTL_SUPPORTS_ENCRYPT                     = 0x1
-+	KEYCTL_SUPPORTS_SIGN                        = 0x4
-+	KEYCTL_SUPPORTS_VERIFY                      = 0x8
-+	KEYCTL_UNLINK                               = 0x9
-+	KEYCTL_UPDATE                               = 0x2
-+	KEY_REQKEY_DEFL_DEFAULT                     = 0x0
-+	KEY_REQKEY_DEFL_GROUP_KEYRING               = 0x6
-+	KEY_REQKEY_DEFL_NO_CHANGE                   = -0x1
-+	KEY_REQKEY_DEFL_PROCESS_KEYRING             = 0x2
-+	KEY_REQKEY_DEFL_REQUESTOR_KEYRING           = 0x7
-+	KEY_REQKEY_DEFL_SESSION_KEYRING             = 0x3
-+	KEY_REQKEY_DEFL_THREAD_KEYRING              = 0x1
-+	KEY_REQKEY_DEFL_USER_KEYRING                = 0x4
-+	KEY_REQKEY_DEFL_USER_SESSION_KEYRING        = 0x5
-+	KEY_SPEC_GROUP_KEYRING                      = -0x6
-+	KEY_SPEC_PROCESS_KEYRING                    = -0x2
-+	KEY_SPEC_REQKEY_AUTH_KEY                    = -0x7
-+	KEY_SPEC_REQUESTOR_KEYRING                  = -0x8
-+	KEY_SPEC_SESSION_KEYRING                    = -0x3
-+	KEY_SPEC_THREAD_KEYRING                     = -0x1
-+	KEY_SPEC_USER_KEYRING                       = -0x4
-+	KEY_SPEC_USER_SESSION_KEYRING               = -0x5
-+	LINUX_REBOOT_CMD_CAD_OFF                    = 0x0
-+	LINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef
-+	LINUX_REBOOT_CMD_HALT                       = 0xcdef0123
-+	LINUX_REBOOT_CMD_KEXEC                      = 0x45584543
-+	LINUX_REBOOT_CMD_POWER_OFF                  = 0x4321fedc
-+	LINUX_REBOOT_CMD_RESTART                    = 0x1234567
-+	LINUX_REBOOT_CMD_RESTART2                   = 0xa1b2c3d4
-+	LINUX_REBOOT_CMD_SW_SUSPEND                 = 0xd000fce2
-+	LINUX_REBOOT_MAGIC1                         = 0xfee1dead
-+	LINUX_REBOOT_MAGIC2                         = 0x28121969
-+	LOCK_EX                                     = 0x2
-+	LOCK_NB                                     = 0x4
-+	LOCK_SH                                     = 0x1
-+	LOCK_UN                                     = 0x8
-+	LOOP_CLR_FD                                 = 0x4c01
-+	LOOP_CTL_ADD                                = 0x4c80
-+	LOOP_CTL_GET_FREE                           = 0x4c82
-+	LOOP_CTL_REMOVE                             = 0x4c81
-+	LOOP_GET_STATUS                             = 0x4c03
-+	LOOP_GET_STATUS64                           = 0x4c05
-+	LOOP_SET_BLOCK_SIZE                         = 0x4c09
-+	LOOP_SET_CAPACITY                           = 0x4c07
-+	LOOP_SET_DIRECT_IO                          = 0x4c08
-+	LOOP_SET_FD                                 = 0x4c00
-+	LOOP_SET_STATUS                             = 0x4c02
-+	LOOP_SET_STATUS64                           = 0x4c04
-+	LO_KEY_SIZE                                 = 0x20
-+	LO_NAME_SIZE                                = 0x40
-+	MADV_COLD                                   = 0x14
-+	MADV_DODUMP                                 = 0x11
-+	MADV_DOFORK                                 = 0xb
-+	MADV_DONTDUMP                               = 0x10
-+	MADV_DONTFORK                               = 0xa
-+	MADV_DONTNEED                               = 0x4
-+	MADV_FREE                                   = 0x8
-+	MADV_HUGEPAGE                               = 0xe
-+	MADV_HWPOISON                               = 0x64
-+	MADV_KEEPONFORK                             = 0x13
-+	MADV_MERGEABLE                              = 0xc
-+	MADV_NOHUGEPAGE                             = 0xf
-+	MADV_NORMAL                                 = 0x0
-+	MADV_PAGEOUT                                = 0x15
-+	MADV_RANDOM                                 = 0x1
-+	MADV_REMOVE                                 = 0x9
-+	MADV_SEQUENTIAL                             = 0x2
-+	MADV_UNMERGEABLE                            = 0xd
-+	MADV_WILLNEED                               = 0x3
-+	MADV_WIPEONFORK                             = 0x12
-+	MAP_FILE                                    = 0x0
-+	MAP_FIXED                                   = 0x10
-+	MAP_FIXED_NOREPLACE                         = 0x100000
-+	MAP_HUGE_MASK                               = 0x3f
-+	MAP_HUGE_SHIFT                              = 0x1a
-+	MAP_PRIVATE                                 = 0x2
-+	MAP_SHARED                                  = 0x1
-+	MAP_SHARED_VALIDATE                         = 0x3
-+	MAP_TYPE                                    = 0xf
-+	MCAST_BLOCK_SOURCE                          = 0x2b
-+	MCAST_EXCLUDE                               = 0x0
-+	MCAST_INCLUDE                               = 0x1
-+	MCAST_JOIN_GROUP                            = 0x2a
-+	MCAST_JOIN_SOURCE_GROUP                     = 0x2e
-+	MCAST_LEAVE_GROUP                           = 0x2d
-+	MCAST_LEAVE_SOURCE_GROUP                    = 0x2f
-+	MCAST_MSFILTER                              = 0x30
-+	MCAST_UNBLOCK_SOURCE                        = 0x2c
-+	MFD_ALLOW_SEALING                           = 0x2
-+	MFD_CLOEXEC                                 = 0x1
-+	MFD_HUGETLB                                 = 0x4
-+	MFD_HUGE_16GB                               = -0x78000000
-+	MFD_HUGE_16MB                               = 0x60000000
-+	MFD_HUGE_1GB                                = 0x78000000
-+	MFD_HUGE_1MB                                = 0x50000000
-+	MFD_HUGE_256MB                              = 0x70000000
-+	MFD_HUGE_2GB                                = 0x7c000000
-+	MFD_HUGE_2MB                                = 0x54000000
-+	MFD_HUGE_32MB                               = 0x64000000
-+	MFD_HUGE_512KB                              = 0x4c000000
-+	MFD_HUGE_512MB                              = 0x74000000
-+	MFD_HUGE_64KB                               = 0x40000000
-+	MFD_HUGE_8MB                                = 0x5c000000
-+	MFD_HUGE_MASK                               = 0x3f
-+	MFD_HUGE_SHIFT                              = 0x1a
-+	MINIX2_SUPER_MAGIC                          = 0x2468
-+	MINIX2_SUPER_MAGIC2                         = 0x2478
-+	MINIX3_SUPER_MAGIC                          = 0x4d5a
-+	MINIX_SUPER_MAGIC                           = 0x137f
-+	MINIX_SUPER_MAGIC2                          = 0x138f
-+	MNT_DETACH                                  = 0x2
-+	MNT_EXPIRE                                  = 0x4
-+	MNT_FORCE                                   = 0x1
-+	MODULE_INIT_IGNORE_MODVERSIONS              = 0x1
-+	MODULE_INIT_IGNORE_VERMAGIC                 = 0x2
-+	MSDOS_SUPER_MAGIC                           = 0x4d44
-+	MSG_BATCH                                   = 0x40000
-+	MSG_CMSG_CLOEXEC                            = 0x40000000
-+	MSG_CONFIRM                                 = 0x800
-+	MSG_CTRUNC                                  = 0x8
-+	MSG_DONTROUTE                               = 0x4
-+	MSG_DONTWAIT                                = 0x40
-+	MSG_EOR                                     = 0x80
-+	MSG_ERRQUEUE                                = 0x2000
-+	MSG_FASTOPEN                                = 0x20000000
-+	MSG_FIN                                     = 0x200
-+	MSG_MORE                                    = 0x8000
-+	MSG_NOSIGNAL                                = 0x4000
-+	MSG_OOB                                     = 0x1
-+	MSG_PEEK                                    = 0x2
-+	MSG_PROXY                                   = 0x10
-+	MSG_RST                                     = 0x1000
-+	MSG_SYN                                     = 0x400
-+	MSG_TRUNC                                   = 0x20
-+	MSG_TRYHARD                                 = 0x4
-+	MSG_WAITALL                                 = 0x100
-+	MSG_WAITFORONE                              = 0x10000
-+	MSG_ZEROCOPY                                = 0x4000000
-+	MS_ACTIVE                                   = 0x40000000
-+	MS_ASYNC                                    = 0x1
-+	MS_BIND                                     = 0x1000
-+	MS_BORN                                     = 0x20000000
-+	MS_DIRSYNC                                  = 0x80
-+	MS_INVALIDATE                               = 0x2
-+	MS_I_VERSION                                = 0x800000
-+	MS_KERNMOUNT                                = 0x400000
-+	MS_LAZYTIME                                 = 0x2000000
-+	MS_MANDLOCK                                 = 0x40
-+	MS_MGC_MSK                                  = 0xffff0000
-+	MS_MGC_VAL                                  = 0xc0ed0000
-+	MS_MOVE                                     = 0x2000
-+	MS_NOATIME                                  = 0x400
-+	MS_NODEV                                    = 0x4
-+	MS_NODIRATIME                               = 0x800
-+	MS_NOEXEC                                   = 0x8
-+	MS_NOREMOTELOCK                             = 0x8000000
-+	MS_NOSEC                                    = 0x10000000
-+	MS_NOSUID                                   = 0x2
-+	MS_NOUSER                                   = -0x80000000
-+	MS_POSIXACL                                 = 0x10000
-+	MS_PRIVATE                                  = 0x40000
-+	MS_RDONLY                                   = 0x1
-+	MS_REC                                      = 0x4000
-+	MS_RELATIME                                 = 0x200000
-+	MS_REMOUNT                                  = 0x20
-+	MS_RMT_MASK                                 = 0x2800051
-+	MS_SHARED                                   = 0x100000
-+	MS_SILENT                                   = 0x8000
-+	MS_SLAVE                                    = 0x80000
-+	MS_STRICTATIME                              = 0x1000000
-+	MS_SUBMOUNT                                 = 0x4000000
-+	MS_SYNC                                     = 0x4
-+	MS_SYNCHRONOUS                              = 0x10
-+	MS_UNBINDABLE                               = 0x20000
-+	MS_VERBOSE                                  = 0x8000
-+	MTD_INODE_FS_MAGIC                          = 0x11307854
-+	NAME_MAX                                    = 0xff
-+	NCP_SUPER_MAGIC                             = 0x564c
-+	NETLINK_ADD_MEMBERSHIP                      = 0x1
-+	NETLINK_AUDIT                               = 0x9
-+	NETLINK_BROADCAST_ERROR                     = 0x4
-+	NETLINK_CAP_ACK                             = 0xa
-+	NETLINK_CONNECTOR                           = 0xb
-+	NETLINK_CRYPTO                              = 0x15
-+	NETLINK_DNRTMSG                             = 0xe
-+	NETLINK_DROP_MEMBERSHIP                     = 0x2
-+	NETLINK_ECRYPTFS                            = 0x13
-+	NETLINK_EXT_ACK                             = 0xb
-+	NETLINK_FIB_LOOKUP                          = 0xa
-+	NETLINK_FIREWALL                            = 0x3
-+	NETLINK_GENERIC                             = 0x10
-+	NETLINK_GET_STRICT_CHK                      = 0xc
-+	NETLINK_INET_DIAG                           = 0x4
-+	NETLINK_IP6_FW                              = 0xd
-+	NETLINK_ISCSI                               = 0x8
-+	NETLINK_KOBJECT_UEVENT                      = 0xf
-+	NETLINK_LISTEN_ALL_NSID                     = 0x8
-+	NETLINK_LIST_MEMBERSHIPS                    = 0x9
-+	NETLINK_NETFILTER                           = 0xc
-+	NETLINK_NFLOG                               = 0x5
-+	NETLINK_NO_ENOBUFS                          = 0x5
-+	NETLINK_PKTINFO                             = 0x3
-+	NETLINK_RDMA                                = 0x14
-+	NETLINK_ROUTE                               = 0x0
-+	NETLINK_RX_RING                             = 0x6
-+	NETLINK_SCSITRANSPORT                       = 0x12
-+	NETLINK_SELINUX                             = 0x7
-+	NETLINK_SMC                                 = 0x16
-+	NETLINK_SOCK_DIAG                           = 0x4
-+	NETLINK_TX_RING                             = 0x7
-+	NETLINK_UNUSED                              = 0x1
-+	NETLINK_USERSOCK                            = 0x2
-+	NETLINK_XFRM                                = 0x6
-+	NETNSA_MAX                                  = 0x5
-+	NETNSA_NSID_NOT_ASSIGNED                    = -0x1
-+	NFNETLINK_V0                                = 0x0
-+	NFNLGRP_ACCT_QUOTA                          = 0x8
-+	NFNLGRP_CONNTRACK_DESTROY                   = 0x3
-+	NFNLGRP_CONNTRACK_EXP_DESTROY               = 0x6
-+	NFNLGRP_CONNTRACK_EXP_NEW                   = 0x4
-+	NFNLGRP_CONNTRACK_EXP_UPDATE                = 0x5
-+	NFNLGRP_CONNTRACK_NEW                       = 0x1
-+	NFNLGRP_CONNTRACK_UPDATE                    = 0x2
-+	NFNLGRP_MAX                                 = 0x9
-+	NFNLGRP_NFTABLES                            = 0x7
-+	NFNLGRP_NFTRACE                             = 0x9
-+	NFNLGRP_NONE                                = 0x0
-+	NFNL_BATCH_MAX                              = 0x1
-+	NFNL_MSG_BATCH_BEGIN                        = 0x10
-+	NFNL_MSG_BATCH_END                          = 0x11
-+	NFNL_NFA_NEST                               = 0x8000
-+	NFNL_SUBSYS_ACCT                            = 0x7
-+	NFNL_SUBSYS_COUNT                           = 0xc
-+	NFNL_SUBSYS_CTHELPER                        = 0x9
-+	NFNL_SUBSYS_CTNETLINK                       = 0x1
-+	NFNL_SUBSYS_CTNETLINK_EXP                   = 0x2
-+	NFNL_SUBSYS_CTNETLINK_TIMEOUT               = 0x8
-+	NFNL_SUBSYS_IPSET                           = 0x6
-+	NFNL_SUBSYS_NFTABLES                        = 0xa
-+	NFNL_SUBSYS_NFT_COMPAT                      = 0xb
-+	NFNL_SUBSYS_NONE                            = 0x0
-+	NFNL_SUBSYS_OSF                             = 0x5
-+	NFNL_SUBSYS_QUEUE                           = 0x3
-+	NFNL_SUBSYS_ULOG                            = 0x4
-+	NFS_SUPER_MAGIC                             = 0x6969
-+	NILFS_SUPER_MAGIC                           = 0x3434
-+	NL0                                         = 0x0
-+	NL1                                         = 0x100
-+	NLA_ALIGNTO                                 = 0x4
-+	NLA_F_NESTED                                = 0x8000
-+	NLA_F_NET_BYTEORDER                         = 0x4000
-+	NLA_HDRLEN                                  = 0x4
-+	NLMSG_ALIGNTO                               = 0x4
-+	NLMSG_DONE                                  = 0x3
-+	NLMSG_ERROR                                 = 0x2
-+	NLMSG_HDRLEN                                = 0x10
-+	NLMSG_MIN_TYPE                              = 0x10
-+	NLMSG_NOOP                                  = 0x1
-+	NLMSG_OVERRUN                               = 0x4
-+	NLM_F_ACK                                   = 0x4
-+	NLM_F_ACK_TLVS                              = 0x200
-+	NLM_F_APPEND                                = 0x800
-+	NLM_F_ATOMIC                                = 0x400
-+	NLM_F_CAPPED                                = 0x100
-+	NLM_F_CREATE                                = 0x400
-+	NLM_F_DUMP                                  = 0x300
-+	NLM_F_DUMP_FILTERED                         = 0x20
-+	NLM_F_DUMP_INTR                             = 0x10
-+	NLM_F_ECHO                                  = 0x8
-+	NLM_F_EXCL                                  = 0x200
-+	NLM_F_MATCH                                 = 0x200
-+	NLM_F_MULTI                                 = 0x2
-+	NLM_F_NONREC                                = 0x100
-+	NLM_F_REPLACE                               = 0x100
-+	NLM_F_REQUEST                               = 0x1
-+	NLM_F_ROOT                                  = 0x100
-+	NSFS_MAGIC                                  = 0x6e736673
-+	OCFS2_SUPER_MAGIC                           = 0x7461636f
-+	OCRNL                                       = 0x8
-+	OFDEL                                       = 0x80
-+	OFILL                                       = 0x40
-+	ONLRET                                      = 0x20
-+	ONOCR                                       = 0x10
-+	OPENPROM_SUPER_MAGIC                        = 0x9fa1
-+	OPOST                                       = 0x1
-+	OVERLAYFS_SUPER_MAGIC                       = 0x794c7630
-+	O_ACCMODE                                   = 0x3
-+	O_RDONLY                                    = 0x0
-+	O_RDWR                                      = 0x2
-+	O_WRONLY                                    = 0x1
-+	PACKET_ADD_MEMBERSHIP                       = 0x1
-+	PACKET_AUXDATA                              = 0x8
-+	PACKET_BROADCAST                            = 0x1
-+	PACKET_COPY_THRESH                          = 0x7
-+	PACKET_DROP_MEMBERSHIP                      = 0x2
-+	PACKET_FANOUT                               = 0x12
-+	PACKET_FANOUT_CBPF                          = 0x6
-+	PACKET_FANOUT_CPU                           = 0x2
-+	PACKET_FANOUT_DATA                          = 0x16
-+	PACKET_FANOUT_EBPF                          = 0x7
-+	PACKET_FANOUT_FLAG_DEFRAG                   = 0x8000
-+	PACKET_FANOUT_FLAG_ROLLOVER                 = 0x1000
-+	PACKET_FANOUT_FLAG_UNIQUEID                 = 0x2000
-+	PACKET_FANOUT_HASH                          = 0x0
-+	PACKET_FANOUT_LB                            = 0x1
-+	PACKET_FANOUT_QM                            = 0x5
-+	PACKET_FANOUT_RND                           = 0x4
-+	PACKET_FANOUT_ROLLOVER                      = 0x3
-+	PACKET_FASTROUTE                            = 0x6
-+	PACKET_HDRLEN                               = 0xb
-+	PACKET_HOST                                 = 0x0
-+	PACKET_IGNORE_OUTGOING                      = 0x17
-+	PACKET_KERNEL                               = 0x7
-+	PACKET_LOOPBACK                             = 0x5
-+	PACKET_LOSS                                 = 0xe
-+	PACKET_MR_ALLMULTI                          = 0x2
-+	PACKET_MR_MULTICAST                         = 0x0
-+	PACKET_MR_PROMISC                           = 0x1
-+	PACKET_MR_UNICAST                           = 0x3
-+	PACKET_MULTICAST                            = 0x2
-+	PACKET_ORIGDEV                              = 0x9
-+	PACKET_OTHERHOST                            = 0x3
-+	PACKET_OUTGOING                             = 0x4
-+	PACKET_QDISC_BYPASS                         = 0x14
-+	PACKET_RECV_OUTPUT                          = 0x3
-+	PACKET_RESERVE                              = 0xc
-+	PACKET_ROLLOVER_STATS                       = 0x15
-+	PACKET_RX_RING                              = 0x5
-+	PACKET_STATISTICS                           = 0x6
-+	PACKET_TIMESTAMP                            = 0x11
-+	PACKET_TX_HAS_OFF                           = 0x13
-+	PACKET_TX_RING                              = 0xd
-+	PACKET_TX_TIMESTAMP                         = 0x10
-+	PACKET_USER                                 = 0x6
-+	PACKET_VERSION                              = 0xa
-+	PACKET_VNET_HDR                             = 0xf
-+	PARITY_CRC16_PR0                            = 0x2
-+	PARITY_CRC16_PR0_CCITT                      = 0x4
-+	PARITY_CRC16_PR1                            = 0x3
-+	PARITY_CRC16_PR1_CCITT                      = 0x5
-+	PARITY_CRC32_PR0_CCITT                      = 0x6
-+	PARITY_CRC32_PR1_CCITT                      = 0x7
-+	PARITY_DEFAULT                              = 0x0
-+	PARITY_NONE                                 = 0x1
-+	PARMRK                                      = 0x8
-+	PIPEFS_MAGIC                                = 0x50495045
-+	PPC_CMM_MAGIC                               = 0xc7571590
-+	PPPIOCGNPMODE                               = 0xc008744c
-+	PPPIOCNEWUNIT                               = 0xc004743e
-+	PRIO_PGRP                                   = 0x1
-+	PRIO_PROCESS                                = 0x0
-+	PRIO_USER                                   = 0x2
-+	PROC_SUPER_MAGIC                            = 0x9fa0
-+	PROT_EXEC                                   = 0x4
-+	PROT_GROWSDOWN                              = 0x1000000
-+	PROT_GROWSUP                                = 0x2000000
-+	PROT_NONE                                   = 0x0
-+	PROT_READ                                   = 0x1
-+	PROT_WRITE                                  = 0x2
-+	PR_CAPBSET_DROP                             = 0x18
-+	PR_CAPBSET_READ                             = 0x17
-+	PR_CAP_AMBIENT                              = 0x2f
-+	PR_CAP_AMBIENT_CLEAR_ALL                    = 0x4
-+	PR_CAP_AMBIENT_IS_SET                       = 0x1
-+	PR_CAP_AMBIENT_LOWER                        = 0x3
-+	PR_CAP_AMBIENT_RAISE                        = 0x2
-+	PR_ENDIAN_BIG                               = 0x0
-+	PR_ENDIAN_LITTLE                            = 0x1
-+	PR_ENDIAN_PPC_LITTLE                        = 0x2
-+	PR_FPEMU_NOPRINT                            = 0x1
-+	PR_FPEMU_SIGFPE                             = 0x2
-+	PR_FP_EXC_ASYNC                             = 0x2
-+	PR_FP_EXC_DISABLED                          = 0x0
-+	PR_FP_EXC_DIV                               = 0x10000
-+	PR_FP_EXC_INV                               = 0x100000
-+	PR_FP_EXC_NONRECOV                          = 0x1
-+	PR_FP_EXC_OVF                               = 0x20000
-+	PR_FP_EXC_PRECISE                           = 0x3
-+	PR_FP_EXC_RES                               = 0x80000
-+	PR_FP_EXC_SW_ENABLE                         = 0x80
-+	PR_FP_EXC_UND                               = 0x40000
-+	PR_FP_MODE_FR                               = 0x1
-+	PR_FP_MODE_FRE                              = 0x2
-+	PR_GET_CHILD_SUBREAPER                      = 0x25
-+	PR_GET_DUMPABLE                             = 0x3
-+	PR_GET_ENDIAN                               = 0x13
-+	PR_GET_FPEMU                                = 0x9
-+	PR_GET_FPEXC                                = 0xb
-+	PR_GET_FP_MODE                              = 0x2e
-+	PR_GET_IO_FLUSHER                           = 0x3a
-+	PR_GET_KEEPCAPS                             = 0x7
-+	PR_GET_NAME                                 = 0x10
-+	PR_GET_NO_NEW_PRIVS                         = 0x27
-+	PR_GET_PDEATHSIG                            = 0x2
-+	PR_GET_SECCOMP                              = 0x15
-+	PR_GET_SECUREBITS                           = 0x1b
-+	PR_GET_SPECULATION_CTRL                     = 0x34
-+	PR_GET_TAGGED_ADDR_CTRL                     = 0x38
-+	PR_GET_THP_DISABLE                          = 0x2a
-+	PR_GET_TID_ADDRESS                          = 0x28
-+	PR_GET_TIMERSLACK                           = 0x1e
-+	PR_GET_TIMING                               = 0xd
-+	PR_GET_TSC                                  = 0x19
-+	PR_GET_UNALIGN                              = 0x5
-+	PR_MCE_KILL                                 = 0x21
-+	PR_MCE_KILL_CLEAR                           = 0x0
-+	PR_MCE_KILL_DEFAULT                         = 0x2
-+	PR_MCE_KILL_EARLY                           = 0x1
-+	PR_MCE_KILL_GET                             = 0x22
-+	PR_MCE_KILL_LATE                            = 0x0
-+	PR_MCE_KILL_SET                             = 0x1
-+	PR_MPX_DISABLE_MANAGEMENT                   = 0x2c
-+	PR_MPX_ENABLE_MANAGEMENT                    = 0x2b
-+	PR_PAC_APDAKEY                              = 0x4
-+	PR_PAC_APDBKEY                              = 0x8
-+	PR_PAC_APGAKEY                              = 0x10
-+	PR_PAC_APIAKEY                              = 0x1
-+	PR_PAC_APIBKEY                              = 0x2
-+	PR_PAC_RESET_KEYS                           = 0x36
-+	PR_SET_CHILD_SUBREAPER                      = 0x24
-+	PR_SET_DUMPABLE                             = 0x4
-+	PR_SET_ENDIAN                               = 0x14
-+	PR_SET_FPEMU                                = 0xa
-+	PR_SET_FPEXC                                = 0xc
-+	PR_SET_FP_MODE                              = 0x2d
-+	PR_SET_IO_FLUSHER                           = 0x39
-+	PR_SET_KEEPCAPS                             = 0x8
-+	PR_SET_MM                                   = 0x23
-+	PR_SET_MM_ARG_END                           = 0x9
-+	PR_SET_MM_ARG_START                         = 0x8
-+	PR_SET_MM_AUXV                              = 0xc
-+	PR_SET_MM_BRK                               = 0x7
-+	PR_SET_MM_END_CODE                          = 0x2
-+	PR_SET_MM_END_DATA                          = 0x4
-+	PR_SET_MM_ENV_END                           = 0xb
-+	PR_SET_MM_ENV_START                         = 0xa
-+	PR_SET_MM_EXE_FILE                          = 0xd
-+	PR_SET_MM_MAP                               = 0xe
-+	PR_SET_MM_MAP_SIZE                          = 0xf
-+	PR_SET_MM_START_BRK                         = 0x6
-+	PR_SET_MM_START_CODE                        = 0x1
-+	PR_SET_MM_START_DATA                        = 0x3
-+	PR_SET_MM_START_STACK                       = 0x5
-+	PR_SET_NAME                                 = 0xf
-+	PR_SET_NO_NEW_PRIVS                         = 0x26
-+	PR_SET_PDEATHSIG                            = 0x1
-+	PR_SET_PTRACER                              = 0x59616d61
-+	PR_SET_SECCOMP                              = 0x16
-+	PR_SET_SECUREBITS                           = 0x1c
-+	PR_SET_SPECULATION_CTRL                     = 0x35
-+	PR_SET_TAGGED_ADDR_CTRL                     = 0x37
-+	PR_SET_THP_DISABLE                          = 0x29
-+	PR_SET_TIMERSLACK                           = 0x1d
-+	PR_SET_TIMING                               = 0xe
-+	PR_SET_TSC                                  = 0x1a
-+	PR_SET_UNALIGN                              = 0x6
-+	PR_SPEC_DISABLE                             = 0x4
-+	PR_SPEC_DISABLE_NOEXEC                      = 0x10
-+	PR_SPEC_ENABLE                              = 0x2
-+	PR_SPEC_FORCE_DISABLE                       = 0x8
-+	PR_SPEC_INDIRECT_BRANCH                     = 0x1
-+	PR_SPEC_NOT_AFFECTED                        = 0x0
-+	PR_SPEC_PRCTL                               = 0x1
-+	PR_SPEC_STORE_BYPASS                        = 0x0
-+	PR_SVE_GET_VL                               = 0x33
-+	PR_SVE_SET_VL                               = 0x32
-+	PR_SVE_SET_VL_ONEXEC                        = 0x40000
-+	PR_SVE_VL_INHERIT                           = 0x20000
-+	PR_SVE_VL_LEN_MASK                          = 0xffff
-+	PR_TAGGED_ADDR_ENABLE                       = 0x1
-+	PR_TASK_PERF_EVENTS_DISABLE                 = 0x1f
-+	PR_TASK_PERF_EVENTS_ENABLE                  = 0x20
-+	PR_TIMING_STATISTICAL                       = 0x0
-+	PR_TIMING_TIMESTAMP                         = 0x1
-+	PR_TSC_ENABLE                               = 0x1
-+	PR_TSC_SIGSEGV                              = 0x2
-+	PR_UNALIGN_NOPRINT                          = 0x1
-+	PR_UNALIGN_SIGBUS                           = 0x2
-+	PSTOREFS_MAGIC                              = 0x6165676c
-+	PTRACE_ATTACH                               = 0x10
-+	PTRACE_CONT                                 = 0x7
-+	PTRACE_DETACH                               = 0x11
-+	PTRACE_EVENTMSG_SYSCALL_ENTRY               = 0x1
-+	PTRACE_EVENTMSG_SYSCALL_EXIT                = 0x2
-+	PTRACE_EVENT_CLONE                          = 0x3
-+	PTRACE_EVENT_EXEC                           = 0x4
-+	PTRACE_EVENT_EXIT                           = 0x6
-+	PTRACE_EVENT_FORK                           = 0x1
-+	PTRACE_EVENT_SECCOMP                        = 0x7
-+	PTRACE_EVENT_STOP                           = 0x80
-+	PTRACE_EVENT_VFORK                          = 0x2
-+	PTRACE_EVENT_VFORK_DONE                     = 0x5
-+	PTRACE_GETEVENTMSG                          = 0x4201
-+	PTRACE_GETREGS                              = 0xc
-+	PTRACE_GETREGSET                            = 0x4204
-+	PTRACE_GETSIGINFO                           = 0x4202
-+	PTRACE_GETSIGMASK                           = 0x420a
-+	PTRACE_GET_SYSCALL_INFO                     = 0x420e
-+	PTRACE_INTERRUPT                            = 0x4207
-+	PTRACE_KILL                                 = 0x8
-+	PTRACE_LISTEN                               = 0x4208
-+	PTRACE_O_EXITKILL                           = 0x100000
-+	PTRACE_O_MASK                               = 0x3000ff
-+	PTRACE_O_SUSPEND_SECCOMP                    = 0x200000
-+	PTRACE_O_TRACECLONE                         = 0x8
-+	PTRACE_O_TRACEEXEC                          = 0x10
-+	PTRACE_O_TRACEEXIT                          = 0x40
-+	PTRACE_O_TRACEFORK                          = 0x2
-+	PTRACE_O_TRACESECCOMP                       = 0x80
-+	PTRACE_O_TRACESYSGOOD                       = 0x1
-+	PTRACE_O_TRACEVFORK                         = 0x4
-+	PTRACE_O_TRACEVFORKDONE                     = 0x20
-+	PTRACE_PEEKDATA                             = 0x2
-+	PTRACE_PEEKSIGINFO                          = 0x4209
-+	PTRACE_PEEKSIGINFO_SHARED                   = 0x1
-+	PTRACE_PEEKTEXT                             = 0x1
-+	PTRACE_PEEKUSR                              = 0x3
-+	PTRACE_POKEDATA                             = 0x5
-+	PTRACE_POKETEXT                             = 0x4
-+	PTRACE_POKEUSR                              = 0x6
-+	PTRACE_SECCOMP_GET_FILTER                   = 0x420c
-+	PTRACE_SECCOMP_GET_METADATA                 = 0x420d
-+	PTRACE_SEIZE                                = 0x4206
-+	PTRACE_SETOPTIONS                           = 0x4200
-+	PTRACE_SETREGS                              = 0xd
-+	PTRACE_SETREGSET                            = 0x4205
-+	PTRACE_SETSIGINFO                           = 0x4203
-+	PTRACE_SETSIGMASK                           = 0x420b
-+	PTRACE_SINGLESTEP                           = 0x9
-+	PTRACE_SYSCALL                              = 0x18
-+	PTRACE_SYSCALL_INFO_ENTRY                   = 0x1
-+	PTRACE_SYSCALL_INFO_EXIT                    = 0x2
-+	PTRACE_SYSCALL_INFO_NONE                    = 0x0
-+	PTRACE_SYSCALL_INFO_SECCOMP                 = 0x3
-+	PTRACE_TRACEME                              = 0x0
-+	QNX4_SUPER_MAGIC                            = 0x2f
-+	QNX6_SUPER_MAGIC                            = 0x68191122
-+	RAMFS_MAGIC                                 = 0x858458f6
-+	RDTGROUP_SUPER_MAGIC                        = 0x7655821
-+	REISERFS_SUPER_MAGIC                        = 0x52654973
-+	RENAME_EXCHANGE                             = 0x2
-+	RENAME_NOREPLACE                            = 0x1
-+	RENAME_WHITEOUT                             = 0x4
-+	RLIMIT_CORE                                 = 0x4
-+	RLIMIT_CPU                                  = 0x0
-+	RLIMIT_DATA                                 = 0x2
-+	RLIMIT_FSIZE                                = 0x1
-+	RLIMIT_LOCKS                                = 0xa
-+	RLIMIT_MSGQUEUE                             = 0xc
-+	RLIMIT_NICE                                 = 0xd
-+	RLIMIT_RTPRIO                               = 0xe
-+	RLIMIT_RTTIME                               = 0xf
-+	RLIMIT_SIGPENDING                           = 0xb
-+	RLIMIT_STACK                                = 0x3
-+	RLIM_INFINITY                               = 0xffffffffffffffff
-+	RTAX_ADVMSS                                 = 0x8
-+	RTAX_CC_ALGO                                = 0x10
-+	RTAX_CWND                                   = 0x7
-+	RTAX_FASTOPEN_NO_COOKIE                     = 0x11
-+	RTAX_FEATURES                               = 0xc
-+	RTAX_FEATURE_ALLFRAG                        = 0x8
-+	RTAX_FEATURE_ECN                            = 0x1
-+	RTAX_FEATURE_MASK                           = 0xf
-+	RTAX_FEATURE_SACK                           = 0x2
-+	RTAX_FEATURE_TIMESTAMP                      = 0x4
-+	RTAX_HOPLIMIT                               = 0xa
-+	RTAX_INITCWND                               = 0xb
-+	RTAX_INITRWND                               = 0xe
-+	RTAX_LOCK                                   = 0x1
-+	RTAX_MAX                                    = 0x11
-+	RTAX_MTU                                    = 0x2
-+	RTAX_QUICKACK                               = 0xf
-+	RTAX_REORDERING                             = 0x9
-+	RTAX_RTO_MIN                                = 0xd
-+	RTAX_RTT                                    = 0x4
-+	RTAX_RTTVAR                                 = 0x5
-+	RTAX_SSTHRESH                               = 0x6
-+	RTAX_UNSPEC                                 = 0x0
-+	RTAX_WINDOW                                 = 0x3
-+	RTA_ALIGNTO                                 = 0x4
-+	RTA_MAX                                     = 0x1e
-+	RTCF_DIRECTSRC                              = 0x4000000
-+	RTCF_DOREDIRECT                             = 0x1000000
-+	RTCF_LOG                                    = 0x2000000
-+	RTCF_MASQ                                   = 0x400000
-+	RTCF_NAT                                    = 0x800000
-+	RTCF_VALVE                                  = 0x200000
-+	RTC_AF                                      = 0x20
-+	RTC_IRQF                                    = 0x80
-+	RTC_MAX_FREQ                                = 0x2000
-+	RTC_PF                                      = 0x40
-+	RTC_UF                                      = 0x10
-+	RTF_ADDRCLASSMASK                           = 0xf8000000
-+	RTF_ADDRCONF                                = 0x40000
-+	RTF_ALLONLINK                               = 0x20000
-+	RTF_BROADCAST                               = 0x10000000
-+	RTF_CACHE                                   = 0x1000000
-+	RTF_DEFAULT                                 = 0x10000
-+	RTF_DYNAMIC                                 = 0x10
-+	RTF_FLOW                                    = 0x2000000
-+	RTF_GATEWAY                                 = 0x2
-+	RTF_HOST                                    = 0x4
-+	RTF_INTERFACE                               = 0x40000000
-+	RTF_IRTT                                    = 0x100
-+	RTF_LINKRT                                  = 0x100000
-+	RTF_LOCAL                                   = 0x80000000
-+	RTF_MODIFIED                                = 0x20
-+	RTF_MSS                                     = 0x40
-+	RTF_MTU                                     = 0x40
-+	RTF_MULTICAST                               = 0x20000000
-+	RTF_NAT                                     = 0x8000000
-+	RTF_NOFORWARD                               = 0x1000
-+	RTF_NONEXTHOP                               = 0x200000
-+	RTF_NOPMTUDISC                              = 0x4000
-+	RTF_POLICY                                  = 0x4000000
-+	RTF_REINSTATE                               = 0x8
-+	RTF_REJECT                                  = 0x200
-+	RTF_STATIC                                  = 0x400
-+	RTF_THROW                                   = 0x2000
-+	RTF_UP                                      = 0x1
-+	RTF_WINDOW                                  = 0x80
-+	RTF_XRESOLVE                                = 0x800
-+	RTMGRP_DECnet_IFADDR                        = 0x1000
-+	RTMGRP_DECnet_ROUTE                         = 0x4000
-+	RTMGRP_IPV4_IFADDR                          = 0x10
-+	RTMGRP_IPV4_MROUTE                          = 0x20
-+	RTMGRP_IPV4_ROUTE                           = 0x40
-+	RTMGRP_IPV4_RULE                            = 0x80
-+	RTMGRP_IPV6_IFADDR                          = 0x100
-+	RTMGRP_IPV6_IFINFO                          = 0x800
-+	RTMGRP_IPV6_MROUTE                          = 0x200
-+	RTMGRP_IPV6_PREFIX                          = 0x20000
-+	RTMGRP_IPV6_ROUTE                           = 0x400
-+	RTMGRP_LINK                                 = 0x1
-+	RTMGRP_NEIGH                                = 0x4
-+	RTMGRP_NOTIFY                               = 0x2
-+	RTMGRP_TC                                   = 0x8
-+	RTM_BASE                                    = 0x10
-+	RTM_DELACTION                               = 0x31
-+	RTM_DELADDR                                 = 0x15
-+	RTM_DELADDRLABEL                            = 0x49
-+	RTM_DELCHAIN                                = 0x65
-+	RTM_DELLINK                                 = 0x11
-+	RTM_DELLINKPROP                             = 0x6d
-+	RTM_DELMDB                                  = 0x55
-+	RTM_DELNEIGH                                = 0x1d
-+	RTM_DELNETCONF                              = 0x51
-+	RTM_DELNEXTHOP                              = 0x69
-+	RTM_DELNSID                                 = 0x59
-+	RTM_DELQDISC                                = 0x25
-+	RTM_DELROUTE                                = 0x19
-+	RTM_DELRULE                                 = 0x21
-+	RTM_DELTCLASS                               = 0x29
-+	RTM_DELTFILTER                              = 0x2d
-+	RTM_DELVLAN                                 = 0x71
-+	RTM_F_CLONED                                = 0x200
-+	RTM_F_EQUALIZE                              = 0x400
-+	RTM_F_FIB_MATCH                             = 0x2000
-+	RTM_F_LOOKUP_TABLE                          = 0x1000
-+	RTM_F_NOTIFY                                = 0x100
-+	RTM_F_OFFLOAD                               = 0x4000
-+	RTM_F_PREFIX                                = 0x800
-+	RTM_F_TRAP                                  = 0x8000
-+	RTM_GETACTION                               = 0x32
-+	RTM_GETADDR                                 = 0x16
-+	RTM_GETADDRLABEL                            = 0x4a
-+	RTM_GETANYCAST                              = 0x3e
-+	RTM_GETCHAIN                                = 0x66
-+	RTM_GETDCB                                  = 0x4e
-+	RTM_GETLINK                                 = 0x12
-+	RTM_GETLINKPROP                             = 0x6e
-+	RTM_GETMDB                                  = 0x56
-+	RTM_GETMULTICAST                            = 0x3a
-+	RTM_GETNEIGH                                = 0x1e
-+	RTM_GETNEIGHTBL                             = 0x42
-+	RTM_GETNETCONF                              = 0x52
-+	RTM_GETNEXTHOP                              = 0x6a
-+	RTM_GETNSID                                 = 0x5a
-+	RTM_GETQDISC                                = 0x26
-+	RTM_GETROUTE                                = 0x1a
-+	RTM_GETRULE                                 = 0x22
-+	RTM_GETSTATS                                = 0x5e
-+	RTM_GETTCLASS                               = 0x2a
-+	RTM_GETTFILTER                              = 0x2e
-+	RTM_GETVLAN                                 = 0x72
-+	RTM_MAX                                     = 0x73
-+	RTM_NEWACTION                               = 0x30
-+	RTM_NEWADDR                                 = 0x14
-+	RTM_NEWADDRLABEL                            = 0x48
-+	RTM_NEWCACHEREPORT                          = 0x60
-+	RTM_NEWCHAIN                                = 0x64
-+	RTM_NEWLINK                                 = 0x10
-+	RTM_NEWLINKPROP                             = 0x6c
-+	RTM_NEWMDB                                  = 0x54
-+	RTM_NEWNDUSEROPT                            = 0x44
-+	RTM_NEWNEIGH                                = 0x1c
-+	RTM_NEWNEIGHTBL                             = 0x40
-+	RTM_NEWNETCONF                              = 0x50
-+	RTM_NEWNEXTHOP                              = 0x68
-+	RTM_NEWNSID                                 = 0x58
-+	RTM_NEWNVLAN                                = 0x70
-+	RTM_NEWPREFIX                               = 0x34
-+	RTM_NEWQDISC                                = 0x24
-+	RTM_NEWROUTE                                = 0x18
-+	RTM_NEWRULE                                 = 0x20
-+	RTM_NEWSTATS                                = 0x5c
-+	RTM_NEWTCLASS                               = 0x28
-+	RTM_NEWTFILTER                              = 0x2c
-+	RTM_NR_FAMILIES                             = 0x19
-+	RTM_NR_MSGTYPES                             = 0x64
-+	RTM_SETDCB                                  = 0x4f
-+	RTM_SETLINK                                 = 0x13
-+	RTM_SETNEIGHTBL                             = 0x43
-+	RTNH_ALIGNTO                                = 0x4
-+	RTNH_COMPARE_MASK                           = 0x19
-+	RTNH_F_DEAD                                 = 0x1
-+	RTNH_F_LINKDOWN                             = 0x10
-+	RTNH_F_OFFLOAD                              = 0x8
-+	RTNH_F_ONLINK                               = 0x4
-+	RTNH_F_PERVASIVE                            = 0x2
-+	RTNH_F_UNRESOLVED                           = 0x20
-+	RTN_MAX                                     = 0xb
-+	RTPROT_BABEL                                = 0x2a
-+	RTPROT_BGP                                  = 0xba
-+	RTPROT_BIRD                                 = 0xc
-+	RTPROT_BOOT                                 = 0x3
-+	RTPROT_DHCP                                 = 0x10
-+	RTPROT_DNROUTED                             = 0xd
-+	RTPROT_EIGRP                                = 0xc0
-+	RTPROT_GATED                                = 0x8
-+	RTPROT_ISIS                                 = 0xbb
-+	RTPROT_KERNEL                               = 0x2
-+	RTPROT_MROUTED                              = 0x11
-+	RTPROT_MRT                                  = 0xa
-+	RTPROT_NTK                                  = 0xf
-+	RTPROT_OSPF                                 = 0xbc
-+	RTPROT_RA                                   = 0x9
-+	RTPROT_REDIRECT                             = 0x1
-+	RTPROT_RIP                                  = 0xbd
-+	RTPROT_STATIC                               = 0x4
-+	RTPROT_UNSPEC                               = 0x0
-+	RTPROT_XORP                                 = 0xe
-+	RTPROT_ZEBRA                                = 0xb
-+	RT_CLASS_DEFAULT                            = 0xfd
-+	RT_CLASS_LOCAL                              = 0xff
-+	RT_CLASS_MAIN                               = 0xfe
-+	RT_CLASS_MAX                                = 0xff
-+	RT_CLASS_UNSPEC                             = 0x0
-+	RUSAGE_CHILDREN                             = -0x1
-+	RUSAGE_SELF                                 = 0x0
-+	RUSAGE_THREAD                               = 0x1
-+	RWF_APPEND                                  = 0x10
-+	RWF_DSYNC                                   = 0x2
-+	RWF_HIPRI                                   = 0x1
-+	RWF_NOWAIT                                  = 0x8
-+	RWF_SUPPORTED                               = 0x1f
-+	RWF_SYNC                                    = 0x4
-+	RWF_WRITE_LIFE_NOT_SET                      = 0x0
-+	SCM_CREDENTIALS                             = 0x2
-+	SCM_RIGHTS                                  = 0x1
-+	SCM_TIMESTAMP                               = 0x1d
-+	SC_LOG_FLUSH                                = 0x100000
-+	SECCOMP_MODE_DISABLED                       = 0x0
-+	SECCOMP_MODE_FILTER                         = 0x2
-+	SECCOMP_MODE_STRICT                         = 0x1
-+	SECURITYFS_MAGIC                            = 0x73636673
-+	SELINUX_MAGIC                               = 0xf97cff8c
-+	SHUT_RD                                     = 0x0
-+	SHUT_RDWR                                   = 0x2
-+	SHUT_WR                                     = 0x1
-+	SIOCADDDLCI                                 = 0x8980
-+	SIOCADDMULTI                                = 0x8931
-+	SIOCADDRT                                   = 0x890b
-+	SIOCBONDCHANGEACTIVE                        = 0x8995
-+	SIOCBONDENSLAVE                             = 0x8990
-+	SIOCBONDINFOQUERY                           = 0x8994
-+	SIOCBONDRELEASE                             = 0x8991
-+	SIOCBONDSETHWADDR                           = 0x8992
-+	SIOCBONDSLAVEINFOQUERY                      = 0x8993
-+	SIOCBRADDBR                                 = 0x89a0
-+	SIOCBRADDIF                                 = 0x89a2
-+	SIOCBRDELBR                                 = 0x89a1
-+	SIOCBRDELIF                                 = 0x89a3
-+	SIOCDARP                                    = 0x8953
-+	SIOCDELDLCI                                 = 0x8981
-+	SIOCDELMULTI                                = 0x8932
-+	SIOCDELRT                                   = 0x890c
-+	SIOCDEVPRIVATE                              = 0x89f0
-+	SIOCDIFADDR                                 = 0x8936
-+	SIOCDRARP                                   = 0x8960
-+	SIOCETHTOOL                                 = 0x8946
-+	SIOCGARP                                    = 0x8954
-+	SIOCGETLINKNAME                             = 0x89e0
-+	SIOCGETNODEID                               = 0x89e1
-+	SIOCGHWTSTAMP                               = 0x89b1
-+	SIOCGIFADDR                                 = 0x8915
-+	SIOCGIFBR                                   = 0x8940
-+	SIOCGIFBRDADDR                              = 0x8919
-+	SIOCGIFCONF                                 = 0x8912
-+	SIOCGIFCOUNT                                = 0x8938
-+	SIOCGIFDSTADDR                              = 0x8917
-+	SIOCGIFENCAP                                = 0x8925
-+	SIOCGIFFLAGS                                = 0x8913
-+	SIOCGIFHWADDR                               = 0x8927
-+	SIOCGIFINDEX                                = 0x8933
-+	SIOCGIFMAP                                  = 0x8970
-+	SIOCGIFMEM                                  = 0x891f
-+	SIOCGIFMETRIC                               = 0x891d
-+	SIOCGIFMTU                                  = 0x8921
-+	SIOCGIFNAME                                 = 0x8910
-+	SIOCGIFNETMASK                              = 0x891b
-+	SIOCGIFPFLAGS                               = 0x8935
-+	SIOCGIFSLAVE                                = 0x8929
-+	SIOCGIFTXQLEN                               = 0x8942
-+	SIOCGIFVLAN                                 = 0x8982
-+	SIOCGMIIPHY                                 = 0x8947
-+	SIOCGMIIREG                                 = 0x8948
-+	SIOCGPPPCSTATS                              = 0x89f2
-+	SIOCGPPPSTATS                               = 0x89f0
-+	SIOCGPPPVER                                 = 0x89f1
-+	SIOCGRARP                                   = 0x8961
-+	SIOCGSKNS                                   = 0x894c
-+	SIOCGSTAMP                                  = 0x8906
-+	SIOCGSTAMPNS                                = 0x8907
-+	SIOCGSTAMPNS_OLD                            = 0x8907
-+	SIOCGSTAMP_OLD                              = 0x8906
-+	SIOCOUTQNSD                                 = 0x894b
-+	SIOCPROTOPRIVATE                            = 0x89e0
-+	SIOCRTMSG                                   = 0x890d
-+	SIOCSARP                                    = 0x8955
-+	SIOCSHWTSTAMP                               = 0x89b0
-+	SIOCSIFADDR                                 = 0x8916
-+	SIOCSIFBR                                   = 0x8941
-+	SIOCSIFBRDADDR                              = 0x891a
-+	SIOCSIFDSTADDR                              = 0x8918
-+	SIOCSIFENCAP                                = 0x8926
-+	SIOCSIFFLAGS                                = 0x8914
-+	SIOCSIFHWADDR                               = 0x8924
-+	SIOCSIFHWBROADCAST                          = 0x8937
-+	SIOCSIFLINK                                 = 0x8911
-+	SIOCSIFMAP                                  = 0x8971
-+	SIOCSIFMEM                                  = 0x8920
-+	SIOCSIFMETRIC                               = 0x891e
-+	SIOCSIFMTU                                  = 0x8922
-+	SIOCSIFNAME                                 = 0x8923
-+	SIOCSIFNETMASK                              = 0x891c
-+	SIOCSIFPFLAGS                               = 0x8934
-+	SIOCSIFSLAVE                                = 0x8930
-+	SIOCSIFTXQLEN                               = 0x8943
-+	SIOCSIFVLAN                                 = 0x8983
-+	SIOCSMIIREG                                 = 0x8949
-+	SIOCSRARP                                   = 0x8962
-+	SIOCWANDEV                                  = 0x894a
-+	SMACK_MAGIC                                 = 0x43415d53
-+	SMART_AUTOSAVE                              = 0xd2
-+	SMART_AUTO_OFFLINE                          = 0xdb
-+	SMART_DISABLE                               = 0xd9
-+	SMART_ENABLE                                = 0xd8
-+	SMART_HCYL_PASS                             = 0xc2
-+	SMART_IMMEDIATE_OFFLINE                     = 0xd4
-+	SMART_LCYL_PASS                             = 0x4f
-+	SMART_READ_LOG_SECTOR                       = 0xd5
-+	SMART_READ_THRESHOLDS                       = 0xd1
-+	SMART_READ_VALUES                           = 0xd0
-+	SMART_SAVE                                  = 0xd3
-+	SMART_STATUS                                = 0xda
-+	SMART_WRITE_LOG_SECTOR                      = 0xd6
-+	SMART_WRITE_THRESHOLDS                      = 0xd7
-+	SMB_SUPER_MAGIC                             = 0x517b
-+	SOCKFS_MAGIC                                = 0x534f434b
-+	SOCK_DCCP                                   = 0x6
-+	SOCK_IOC_TYPE                               = 0x89
-+	SOCK_PACKET                                 = 0xa
-+	SOCK_RAW                                    = 0x3
-+	SOCK_RDM                                    = 0x4
-+	SOCK_SEQPACKET                              = 0x5
-+	SOL_AAL                                     = 0x109
-+	SOL_ALG                                     = 0x117
-+	SOL_ATM                                     = 0x108
-+	SOL_CAIF                                    = 0x116
-+	SOL_CAN_BASE                                = 0x64
-+	SOL_DCCP                                    = 0x10d
-+	SOL_DECNET                                  = 0x105
-+	SOL_ICMPV6                                  = 0x3a
-+	SOL_IP                                      = 0x0
-+	SOL_IPV6                                    = 0x29
-+	SOL_IRDA                                    = 0x10a
-+	SOL_IUCV                                    = 0x115
-+	SOL_KCM                                     = 0x119
-+	SOL_LLC                                     = 0x10c
-+	SOL_NETBEUI                                 = 0x10b
-+	SOL_NETLINK                                 = 0x10e
-+	SOL_NFC                                     = 0x118
-+	SOL_PACKET                                  = 0x107
-+	SOL_PNPIPE                                  = 0x113
-+	SOL_PPPOL2TP                                = 0x111
-+	SOL_RAW                                     = 0xff
-+	SOL_RDS                                     = 0x114
-+	SOL_RXRPC                                   = 0x110
-+	SOL_TCP                                     = 0x6
-+	SOL_TIPC                                    = 0x10f
-+	SOL_TLS                                     = 0x11a
-+	SOL_X25                                     = 0x106
-+	SOL_XDP                                     = 0x11b
-+	SOMAXCONN                                   = 0x1000
-+	SO_ATTACH_FILTER                            = 0x1a
-+	SO_DEBUG                                    = 0x1
-+	SO_DETACH_BPF                               = 0x1b
-+	SO_DETACH_FILTER                            = 0x1b
-+	SO_EE_CODE_TXTIME_INVALID_PARAM             = 0x1
-+	SO_EE_CODE_TXTIME_MISSED                    = 0x2
-+	SO_EE_CODE_ZEROCOPY_COPIED                  = 0x1
-+	SO_EE_ORIGIN_ICMP                           = 0x2
-+	SO_EE_ORIGIN_ICMP6                          = 0x3
-+	SO_EE_ORIGIN_LOCAL                          = 0x1
-+	SO_EE_ORIGIN_NONE                           = 0x0
-+	SO_EE_ORIGIN_TIMESTAMPING                   = 0x4
-+	SO_EE_ORIGIN_TXSTATUS                       = 0x4
-+	SO_EE_ORIGIN_TXTIME                         = 0x6
-+	SO_EE_ORIGIN_ZEROCOPY                       = 0x5
-+	SO_GET_FILTER                               = 0x1a
-+	SO_NO_CHECK                                 = 0xb
-+	SO_PEERNAME                                 = 0x1c
-+	SO_PRIORITY                                 = 0xc
-+	SO_TIMESTAMP                                = 0x1d
-+	SO_TIMESTAMP_OLD                            = 0x1d
-+	SO_VM_SOCKETS_BUFFER_MAX_SIZE               = 0x2
-+	SO_VM_SOCKETS_BUFFER_MIN_SIZE               = 0x1
-+	SO_VM_SOCKETS_BUFFER_SIZE                   = 0x0
-+	SO_VM_SOCKETS_CONNECT_TIMEOUT               = 0x6
-+	SO_VM_SOCKETS_NONBLOCK_TXRX                 = 0x7
-+	SO_VM_SOCKETS_PEER_HOST_VM_ID               = 0x3
-+	SO_VM_SOCKETS_TRUSTED                       = 0x5
-+	SPLICE_F_GIFT                               = 0x8
-+	SPLICE_F_MORE                               = 0x4
-+	SPLICE_F_MOVE                               = 0x1
-+	SPLICE_F_NONBLOCK                           = 0x2
-+	SQUASHFS_MAGIC                              = 0x73717368
-+	STACK_END_MAGIC                             = 0x57ac6e9d
-+	STATX_ALL                                   = 0xfff
-+	STATX_ATIME                                 = 0x20
-+	STATX_ATTR_APPEND                           = 0x20
-+	STATX_ATTR_AUTOMOUNT                        = 0x1000
-+	STATX_ATTR_COMPRESSED                       = 0x4
-+	STATX_ATTR_ENCRYPTED                        = 0x800
-+	STATX_ATTR_IMMUTABLE                        = 0x10
-+	STATX_ATTR_NODUMP                           = 0x40
-+	STATX_ATTR_VERITY                           = 0x100000
-+	STATX_BASIC_STATS                           = 0x7ff
-+	STATX_BLOCKS                                = 0x400
-+	STATX_BTIME                                 = 0x800
-+	STATX_CTIME                                 = 0x80
-+	STATX_GID                                   = 0x10
-+	STATX_INO                                   = 0x100
-+	STATX_MODE                                  = 0x2
-+	STATX_MTIME                                 = 0x40
-+	STATX_NLINK                                 = 0x4
-+	STATX_SIZE                                  = 0x200
-+	STATX_TYPE                                  = 0x1
-+	STATX_UID                                   = 0x8
-+	STATX__RESERVED                             = 0x80000000
-+	SYNC_FILE_RANGE_WAIT_AFTER                  = 0x4
-+	SYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1
-+	SYNC_FILE_RANGE_WRITE                       = 0x2
-+	SYNC_FILE_RANGE_WRITE_AND_WAIT              = 0x7
-+	SYSFS_MAGIC                                 = 0x62656572
-+	S_BLKSIZE                                   = 0x200
-+	S_IEXEC                                     = 0x40
-+	S_IFBLK                                     = 0x6000
-+	S_IFCHR                                     = 0x2000
-+	S_IFDIR                                     = 0x4000
-+	S_IFIFO                                     = 0x1000
-+	S_IFLNK                                     = 0xa000
-+	S_IFMT                                      = 0xf000
-+	S_IFREG                                     = 0x8000
-+	S_IFSOCK                                    = 0xc000
-+	S_IREAD                                     = 0x100
-+	S_IRGRP                                     = 0x20
-+	S_IROTH                                     = 0x4
-+	S_IRUSR                                     = 0x100
-+	S_IRWXG                                     = 0x38
-+	S_IRWXO                                     = 0x7
-+	S_IRWXU                                     = 0x1c0
-+	S_ISGID                                     = 0x400
-+	S_ISUID                                     = 0x800
-+	S_ISVTX                                     = 0x200
-+	S_IWGRP                                     = 0x10
-+	S_IWOTH                                     = 0x2
-+	S_IWRITE                                    = 0x80
-+	S_IWUSR                                     = 0x80
-+	S_IXGRP                                     = 0x8
-+	S_IXOTH                                     = 0x1
-+	S_IXUSR                                     = 0x40
-+	TAB0                                        = 0x0
-+	TASKSTATS_CMD_ATTR_MAX                      = 0x4
-+	TASKSTATS_CMD_MAX                           = 0x2
-+	TASKSTATS_GENL_NAME                         = "TASKSTATS"
-+	TASKSTATS_GENL_VERSION                      = 0x1
-+	TASKSTATS_TYPE_MAX                          = 0x6
-+	TASKSTATS_VERSION                           = 0xa
-+	TCIFLUSH                                    = 0x0
-+	TCIOFF                                      = 0x2
-+	TCIOFLUSH                                   = 0x2
-+	TCION                                       = 0x3
-+	TCOFLUSH                                    = 0x1
-+	TCOOFF                                      = 0x0
-+	TCOON                                       = 0x1
-+	TCP_BPF_IW                                  = 0x3e9
-+	TCP_BPF_SNDCWND_CLAMP                       = 0x3ea
-+	TCP_CC_INFO                                 = 0x1a
-+	TCP_CM_INQ                                  = 0x24
-+	TCP_CONGESTION                              = 0xd
-+	TCP_COOKIE_IN_ALWAYS                        = 0x1
-+	TCP_COOKIE_MAX                              = 0x10
-+	TCP_COOKIE_MIN                              = 0x8
-+	TCP_COOKIE_OUT_NEVER                        = 0x2
-+	TCP_COOKIE_PAIR_SIZE                        = 0x20
-+	TCP_COOKIE_TRANSACTIONS                     = 0xf
-+	TCP_CORK                                    = 0x3
-+	TCP_DEFER_ACCEPT                            = 0x9
-+	TCP_FASTOPEN                                = 0x17
-+	TCP_FASTOPEN_CONNECT                        = 0x1e
-+	TCP_FASTOPEN_KEY                            = 0x21
-+	TCP_FASTOPEN_NO_COOKIE                      = 0x22
-+	TCP_INFO                                    = 0xb
-+	TCP_INQ                                     = 0x24
-+	TCP_KEEPCNT                                 = 0x6
-+	TCP_KEEPIDLE                                = 0x4
-+	TCP_KEEPINTVL                               = 0x5
-+	TCP_LINGER2                                 = 0x8
-+	TCP_MAXSEG                                  = 0x2
-+	TCP_MAXWIN                                  = 0xffff
-+	TCP_MAX_WINSHIFT                            = 0xe
-+	TCP_MD5SIG                                  = 0xe
-+	TCP_MD5SIG_EXT                              = 0x20
-+	TCP_MD5SIG_FLAG_PREFIX                      = 0x1
-+	TCP_MD5SIG_MAXKEYLEN                        = 0x50
-+	TCP_MSS                                     = 0x200
-+	TCP_MSS_DEFAULT                             = 0x218
-+	TCP_MSS_DESIRED                             = 0x4c4
-+	TCP_NODELAY                                 = 0x1
-+	TCP_NOTSENT_LOWAT                           = 0x19
-+	TCP_QUEUE_SEQ                               = 0x15
-+	TCP_QUICKACK                                = 0xc
-+	TCP_REPAIR                                  = 0x13
-+	TCP_REPAIR_OFF                              = 0x0
-+	TCP_REPAIR_OFF_NO_WP                        = -0x1
-+	TCP_REPAIR_ON                               = 0x1
-+	TCP_REPAIR_OPTIONS                          = 0x16
-+	TCP_REPAIR_QUEUE                            = 0x14
-+	TCP_REPAIR_WINDOW                           = 0x1d
-+	TCP_SAVED_SYN                               = 0x1c
-+	TCP_SAVE_SYN                                = 0x1b
-+	TCP_SYNCNT                                  = 0x7
-+	TCP_S_DATA_IN                               = 0x4
-+	TCP_S_DATA_OUT                              = 0x8
-+	TCP_THIN_DUPACK                             = 0x11
-+	TCP_THIN_LINEAR_TIMEOUTS                    = 0x10
-+	TCP_TIMESTAMP                               = 0x18
-+	TCP_TX_DELAY                                = 0x25
-+	TCP_ULP                                     = 0x1f
-+	TCP_USER_TIMEOUT                            = 0x12
-+	TCP_WINDOW_CLAMP                            = 0xa
-+	TCP_ZEROCOPY_RECEIVE                        = 0x23
-+	TIMER_ABSTIME                               = 0x1
-+	TIOCM_DTR                                   = 0x2
-+	TIOCM_LE                                    = 0x1
-+	TIOCM_RTS                                   = 0x4
-+	TIOCPKT_DATA                                = 0x0
-+	TIOCPKT_DOSTOP                              = 0x20
-+	TIOCPKT_FLUSHREAD                           = 0x1
-+	TIOCPKT_FLUSHWRITE                          = 0x2
-+	TIOCPKT_IOCTL                               = 0x40
-+	TIOCPKT_NOSTOP                              = 0x10
-+	TIOCPKT_START                               = 0x8
-+	TIOCPKT_STOP                                = 0x4
-+	TIPC_ADDR_ID                                = 0x3
-+	TIPC_ADDR_MCAST                             = 0x1
-+	TIPC_ADDR_NAME                              = 0x2
-+	TIPC_ADDR_NAMESEQ                           = 0x1
-+	TIPC_AEAD_ALG_NAME                          = 0x20
-+	TIPC_AEAD_KEYLEN_MAX                        = 0x24
-+	TIPC_AEAD_KEYLEN_MIN                        = 0x14
-+	TIPC_AEAD_KEY_SIZE_MAX                      = 0x48
-+	TIPC_CFG_SRV                                = 0x0
-+	TIPC_CLUSTER_BITS                           = 0xc
-+	TIPC_CLUSTER_MASK                           = 0xfff000
-+	TIPC_CLUSTER_OFFSET                         = 0xc
-+	TIPC_CLUSTER_SIZE                           = 0xfff
-+	TIPC_CONN_SHUTDOWN                          = 0x5
-+	TIPC_CONN_TIMEOUT                           = 0x82
-+	TIPC_CRITICAL_IMPORTANCE                    = 0x3
-+	TIPC_DESTNAME                               = 0x3
-+	TIPC_DEST_DROPPABLE                         = 0x81
-+	TIPC_ERRINFO                                = 0x1
-+	TIPC_ERR_NO_NAME                            = 0x1
-+	TIPC_ERR_NO_NODE                            = 0x3
-+	TIPC_ERR_NO_PORT                            = 0x2
-+	TIPC_ERR_OVERLOAD                           = 0x4
-+	TIPC_GROUP_JOIN                             = 0x87
-+	TIPC_GROUP_LEAVE                            = 0x88
-+	TIPC_GROUP_LOOPBACK                         = 0x1
-+	TIPC_GROUP_MEMBER_EVTS                      = 0x2
-+	TIPC_HIGH_IMPORTANCE                        = 0x2
-+	TIPC_IMPORTANCE                             = 0x7f
-+	TIPC_LINK_STATE                             = 0x2
-+	TIPC_LOW_IMPORTANCE                         = 0x0
-+	TIPC_MAX_BEARER_NAME                        = 0x20
-+	TIPC_MAX_IF_NAME                            = 0x10
-+	TIPC_MAX_LINK_NAME                          = 0x44
-+	TIPC_MAX_MEDIA_NAME                         = 0x10
-+	TIPC_MAX_USER_MSG_SIZE                      = 0x101d0
-+	TIPC_MCAST_BROADCAST                        = 0x85
-+	TIPC_MCAST_REPLICAST                        = 0x86
-+	TIPC_MEDIUM_IMPORTANCE                      = 0x1
-+	TIPC_NODEID_LEN                             = 0x10
-+	TIPC_NODELAY                                = 0x8a
-+	TIPC_NODE_BITS                              = 0xc
-+	TIPC_NODE_MASK                              = 0xfff
-+	TIPC_NODE_OFFSET                            = 0x0
-+	TIPC_NODE_RECVQ_DEPTH                       = 0x83
-+	TIPC_NODE_SIZE                              = 0xfff
-+	TIPC_NODE_STATE                             = 0x0
-+	TIPC_OK                                     = 0x0
-+	TIPC_PUBLISHED                              = 0x1
-+	TIPC_RESERVED_TYPES                         = 0x40
-+	TIPC_RETDATA                                = 0x2
-+	TIPC_SERVICE_ADDR                           = 0x2
-+	TIPC_SERVICE_RANGE                          = 0x1
-+	TIPC_SOCKET_ADDR                            = 0x3
-+	TIPC_SOCK_RECVQ_DEPTH                       = 0x84
-+	TIPC_SOCK_RECVQ_USED                        = 0x89
-+	TIPC_SRC_DROPPABLE                          = 0x80
-+	TIPC_SUBSCR_TIMEOUT                         = 0x3
-+	TIPC_SUB_CANCEL                             = 0x4
-+	TIPC_SUB_PORTS                              = 0x1
-+	TIPC_SUB_SERVICE                            = 0x2
-+	TIPC_TOP_SRV                                = 0x1
-+	TIPC_WAIT_FOREVER                           = 0xffffffff
-+	TIPC_WITHDRAWN                              = 0x2
-+	TIPC_ZONE_BITS                              = 0x8
-+	TIPC_ZONE_CLUSTER_MASK                      = 0xfffff000
-+	TIPC_ZONE_MASK                              = 0xff000000
-+	TIPC_ZONE_OFFSET                            = 0x18
-+	TIPC_ZONE_SCOPE                             = 0x1
-+	TIPC_ZONE_SIZE                              = 0xff
-+	TMPFS_MAGIC                                 = 0x1021994
-+	TPACKET_ALIGNMENT                           = 0x10
-+	TPACKET_HDRLEN                              = 0x34
-+	TP_STATUS_AVAILABLE                         = 0x0
-+	TP_STATUS_BLK_TMO                           = 0x20
-+	TP_STATUS_COPY                              = 0x2
-+	TP_STATUS_CSUMNOTREADY                      = 0x8
-+	TP_STATUS_CSUM_VALID                        = 0x80
-+	TP_STATUS_KERNEL                            = 0x0
-+	TP_STATUS_LOSING                            = 0x4
-+	TP_STATUS_SENDING                           = 0x2
-+	TP_STATUS_SEND_REQUEST                      = 0x1
-+	TP_STATUS_TS_RAW_HARDWARE                   = 0x80000000
-+	TP_STATUS_TS_SOFTWARE                       = 0x20000000
-+	TP_STATUS_TS_SYS_HARDWARE                   = 0x40000000
-+	TP_STATUS_USER                              = 0x1
-+	TP_STATUS_VLAN_TPID_VALID                   = 0x40
-+	TP_STATUS_VLAN_VALID                        = 0x10
-+	TP_STATUS_WRONG_FORMAT                      = 0x4
-+	TRACEFS_MAGIC                               = 0x74726163
-+	TS_COMM_LEN                                 = 0x20
-+	UDF_SUPER_MAGIC                             = 0x15013346
-+	UMOUNT_NOFOLLOW                             = 0x8
-+	USBDEVICE_SUPER_MAGIC                       = 0x9fa2
-+	UTIME_NOW                                   = 0x3fffffff
-+	UTIME_OMIT                                  = 0x3ffffffe
-+	V9FS_MAGIC                                  = 0x1021997
-+	VERASE                                      = 0x2
-+	VINTR                                       = 0x0
-+	VKILL                                       = 0x3
-+	VLNEXT                                      = 0xf
-+	VMADDR_CID_ANY                              = 0xffffffff
-+	VMADDR_CID_HOST                             = 0x2
-+	VMADDR_CID_HYPERVISOR                       = 0x0
-+	VMADDR_CID_LOCAL                            = 0x1
-+	VMADDR_PORT_ANY                             = 0xffffffff
-+	VM_SOCKETS_INVALID_VERSION                  = 0xffffffff
-+	VQUIT                                       = 0x1
-+	VT0                                         = 0x0
-+	WALL                                        = 0x40000000
-+	WCLONE                                      = 0x80000000
-+	WCONTINUED                                  = 0x8
-+	WDIOC_SETPRETIMEOUT                         = 0xc0045708
-+	WDIOC_SETTIMEOUT                            = 0xc0045706
-+	WEXITED                                     = 0x4
-+	WIN_ACKMEDIACHANGE                          = 0xdb
-+	WIN_CHECKPOWERMODE1                         = 0xe5
-+	WIN_CHECKPOWERMODE2                         = 0x98
-+	WIN_DEVICE_RESET                            = 0x8
-+	WIN_DIAGNOSE                                = 0x90
-+	WIN_DOORLOCK                                = 0xde
-+	WIN_DOORUNLOCK                              = 0xdf
-+	WIN_DOWNLOAD_MICROCODE                      = 0x92
-+	WIN_FLUSH_CACHE                             = 0xe7
-+	WIN_FLUSH_CACHE_EXT                         = 0xea
-+	WIN_FORMAT                                  = 0x50
-+	WIN_GETMEDIASTATUS                          = 0xda
-+	WIN_IDENTIFY                                = 0xec
-+	WIN_IDENTIFY_DMA                            = 0xee
-+	WIN_IDLEIMMEDIATE                           = 0xe1
-+	WIN_INIT                                    = 0x60
-+	WIN_MEDIAEJECT                              = 0xed
-+	WIN_MULTREAD                                = 0xc4
-+	WIN_MULTREAD_EXT                            = 0x29
-+	WIN_MULTWRITE                               = 0xc5
-+	WIN_MULTWRITE_EXT                           = 0x39
-+	WIN_NOP                                     = 0x0
-+	WIN_PACKETCMD                               = 0xa0
-+	WIN_PIDENTIFY                               = 0xa1
-+	WIN_POSTBOOT                                = 0xdc
-+	WIN_PREBOOT                                 = 0xdd
-+	WIN_QUEUED_SERVICE                          = 0xa2
-+	WIN_READ                                    = 0x20
-+	WIN_READDMA                                 = 0xc8
-+	WIN_READDMA_EXT                             = 0x25
-+	WIN_READDMA_ONCE                            = 0xc9
-+	WIN_READDMA_QUEUED                          = 0xc7
-+	WIN_READDMA_QUEUED_EXT                      = 0x26
-+	WIN_READ_BUFFER                             = 0xe4
-+	WIN_READ_EXT                                = 0x24
-+	WIN_READ_LONG                               = 0x22
-+	WIN_READ_LONG_ONCE                          = 0x23
-+	WIN_READ_NATIVE_MAX                         = 0xf8
-+	WIN_READ_NATIVE_MAX_EXT                     = 0x27
-+	WIN_READ_ONCE                               = 0x21
-+	WIN_RECAL                                   = 0x10
-+	WIN_RESTORE                                 = 0x10
-+	WIN_SECURITY_DISABLE                        = 0xf6
-+	WIN_SECURITY_ERASE_PREPARE                  = 0xf3
-+	WIN_SECURITY_ERASE_UNIT                     = 0xf4
-+	WIN_SECURITY_FREEZE_LOCK                    = 0xf5
-+	WIN_SECURITY_SET_PASS                       = 0xf1
-+	WIN_SECURITY_UNLOCK                         = 0xf2
-+	WIN_SEEK                                    = 0x70
-+	WIN_SETFEATURES                             = 0xef
-+	WIN_SETIDLE1                                = 0xe3
-+	WIN_SETIDLE2                                = 0x97
-+	WIN_SETMULT                                 = 0xc6
-+	WIN_SET_MAX                                 = 0xf9
-+	WIN_SET_MAX_EXT                             = 0x37
-+	WIN_SLEEPNOW1                               = 0xe6
-+	WIN_SLEEPNOW2                               = 0x99
-+	WIN_SMART                                   = 0xb0
-+	WIN_SPECIFY                                 = 0x91
-+	WIN_SRST                                    = 0x8
-+	WIN_STANDBY                                 = 0xe2
-+	WIN_STANDBY2                                = 0x96
-+	WIN_STANDBYNOW1                             = 0xe0
-+	WIN_STANDBYNOW2                             = 0x94
-+	WIN_VERIFY                                  = 0x40
-+	WIN_VERIFY_EXT                              = 0x42
-+	WIN_VERIFY_ONCE                             = 0x41
-+	WIN_WRITE                                   = 0x30
-+	WIN_WRITEDMA                                = 0xca
-+	WIN_WRITEDMA_EXT                            = 0x35
-+	WIN_WRITEDMA_ONCE                           = 0xcb
-+	WIN_WRITEDMA_QUEUED                         = 0xcc
-+	WIN_WRITEDMA_QUEUED_EXT                     = 0x36
-+	WIN_WRITE_BUFFER                            = 0xe8
-+	WIN_WRITE_EXT                               = 0x34
-+	WIN_WRITE_LONG                              = 0x32
-+	WIN_WRITE_LONG_ONCE                         = 0x33
-+	WIN_WRITE_ONCE                              = 0x31
-+	WIN_WRITE_SAME                              = 0xe9
-+	WIN_WRITE_VERIFY                            = 0x3c
-+	WNOHANG                                     = 0x1
-+	WNOTHREAD                                   = 0x20000000
-+	WNOWAIT                                     = 0x1000000
-+	WSTOPPED                                    = 0x2
-+	WUNTRACED                                   = 0x2
-+	XATTR_CREATE                                = 0x1
-+	XATTR_REPLACE                               = 0x2
-+	XDP_COPY                                    = 0x2
-+	XDP_FLAGS_DRV_MODE                          = 0x4
-+	XDP_FLAGS_HW_MODE                           = 0x8
-+	XDP_FLAGS_MASK                              = 0xf
-+	XDP_FLAGS_MODES                             = 0xe
-+	XDP_FLAGS_SKB_MODE                          = 0x2
-+	XDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1
-+	XDP_MMAP_OFFSETS                            = 0x1
-+	XDP_OPTIONS                                 = 0x8
-+	XDP_OPTIONS_ZEROCOPY                        = 0x1
-+	XDP_PACKET_HEADROOM                         = 0x100
-+	XDP_PGOFF_RX_RING                           = 0x0
-+	XDP_PGOFF_TX_RING                           = 0x80000000
-+	XDP_RING_NEED_WAKEUP                        = 0x1
-+	XDP_RX_RING                                 = 0x2
-+	XDP_SHARED_UMEM                             = 0x1
-+	XDP_STATISTICS                              = 0x7
-+	XDP_TX_RING                                 = 0x3
-+	XDP_UMEM_COMPLETION_RING                    = 0x6
-+	XDP_UMEM_FILL_RING                          = 0x5
-+	XDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000
-+	XDP_UMEM_PGOFF_FILL_RING                    = 0x100000000
-+	XDP_UMEM_REG                                = 0x4
-+	XDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1
-+	XDP_USE_NEED_WAKEUP                         = 0x8
-+	XDP_ZEROCOPY                                = 0x4
-+	XENFS_SUPER_MAGIC                           = 0xabba1974
-+	XFS_SUPER_MAGIC                             = 0x58465342
-+	Z3FOLD_MAGIC                                = 0x33
-+	ZONEFS_MAGIC                                = 0x5a4f4653
-+	ZSMALLOC_MAGIC                              = 0x58295829
-+)
-+
-+// Errors
-+const (
-+	E2BIG       = syscall.Errno(0x7)
-+	EACCES      = syscall.Errno(0xd)
-+	EAGAIN      = syscall.Errno(0xb)
-+	EBADF       = syscall.Errno(0x9)
-+	EBUSY       = syscall.Errno(0x10)
-+	ECHILD      = syscall.Errno(0xa)
-+	EDOM        = syscall.Errno(0x21)
-+	EEXIST      = syscall.Errno(0x11)
-+	EFAULT      = syscall.Errno(0xe)
-+	EFBIG       = syscall.Errno(0x1b)
-+	EINTR       = syscall.Errno(0x4)
-+	EINVAL      = syscall.Errno(0x16)
-+	EIO         = syscall.Errno(0x5)
-+	EISDIR      = syscall.Errno(0x15)
-+	EMFILE      = syscall.Errno(0x18)
-+	EMLINK      = syscall.Errno(0x1f)
-+	ENFILE      = syscall.Errno(0x17)
-+	ENODEV      = syscall.Errno(0x13)
-+	ENOENT      = syscall.Errno(0x2)
-+	ENOEXEC     = syscall.Errno(0x8)
-+	ENOMEM      = syscall.Errno(0xc)
-+	ENOSPC      = syscall.Errno(0x1c)
-+	ENOTBLK     = syscall.Errno(0xf)
-+	ENOTDIR     = syscall.Errno(0x14)
-+	ENOTTY      = syscall.Errno(0x19)
-+	ENXIO       = syscall.Errno(0x6)
-+	EPERM       = syscall.Errno(0x1)
-+	EPIPE       = syscall.Errno(0x20)
-+	ERANGE      = syscall.Errno(0x22)
-+	EROFS       = syscall.Errno(0x1e)
-+	ESPIPE      = syscall.Errno(0x1d)
-+	ESRCH       = syscall.Errno(0x3)
-+	ETXTBSY     = syscall.Errno(0x1a)
-+	EWOULDBLOCK = syscall.Errno(0xb)
-+	EXDEV       = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+	SIGABRT = syscall.Signal(0x6)
-+	SIGALRM = syscall.Signal(0xe)
-+	SIGFPE  = syscall.Signal(0x8)
-+	SIGHUP  = syscall.Signal(0x1)
-+	SIGILL  = syscall.Signal(0x4)
-+	SIGINT  = syscall.Signal(0x2)
-+	SIGIOT  = syscall.Signal(0x6)
-+	SIGKILL = syscall.Signal(0x9)
-+	SIGPIPE = syscall.Signal(0xd)
-+	SIGQUIT = syscall.Signal(0x3)
-+	SIGSEGV = syscall.Signal(0xb)
-+	SIGTERM = syscall.Signal(0xf)
-+	SIGTRAP = syscall.Signal(0x5)
-+)
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-index 33ced1ae..028c9d87 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-@@ -3,7 +3,7 @@
- 
- // +build 386,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go
- 
- package unix
-@@ -11,1868 +11,487 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x80041270
--	BLKBSZSET                            = 0x40041271
--	BLKFLSBUF                            = 0x1261
--	BLKFRAGET                            = 0x1265
--	BLKFRASET                            = 0x1264
--	BLKGETSIZE                           = 0x1260
--	BLKGETSIZE64                         = 0x80041272
--	BLKPBSZGET                           = 0x127b
--	BLKRAGET                             = 0x1263
--	BLKRASET                             = 0x1262
--	BLKROGET                             = 0x125e
--	BLKROSET                             = 0x125d
--	BLKRRPART                            = 0x125f
--	BLKSECTGET                           = 0x1267
--	BLKSECTSET                           = 0x1266
--	BLKSSZGET                            = 0x1268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x1000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0xc
--	F_GETLK64                            = 0xc
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0xd
--	F_SETLK64                            = 0xd
--	F_SETLKW                             = 0xe
--	F_SETLKW64                           = 0xe
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x8000
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_32BIT                            = 0x40
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x2000
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x4000
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x4000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x8000
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x2401
--	PERF_EVENT_IOC_ENABLE                = 0x2400
--	PERF_EVENT_IOC_ID                    = 0x80042407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
--	PERF_EVENT_IOC_PERIOD                = 0x40082404
--	PERF_EVENT_IOC_REFRESH               = 0x2402
--	PERF_EVENT_IOC_RESET                 = 0x2403
--	PERF_EVENT_IOC_SET_BPF               = 0x40042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x40042406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = 0xffffffff
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETFPXREGS                    = 0x12
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETFPXREGS                    = 0x13
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SINGLEBLOCK                   = 0x21
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_SYSEMU                        = 0x1f
--	PTRACE_SYSEMU_SINGLESTEP             = 0x20
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x541b
--	SIOCOUTQ                             = 0x5411
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x10
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x11
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x12
--	SO_RCVTIMEO                          = 0x14
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x13
--	SO_SNDTIMEO                          = 0x15
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x540b
--	TCGETA                               = 0x5405
--	TCGETS                               = 0x5401
--	TCGETS2                              = 0x802c542a
--	TCGETX                               = 0x5432
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x5409
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x5406
--	TCSETAF                              = 0x5408
--	TCSETAW                              = 0x5407
--	TCSETS                               = 0x5402
--	TCSETS2                              = 0x402c542b
--	TCSETSF                              = 0x5404
--	TCSETSF2                             = 0x402c542d
--	TCSETSW                              = 0x5403
--	TCSETSW2                             = 0x402c542c
--	TCSETX                               = 0x5433
--	TCSETXF                              = 0x5434
--	TCSETXW                              = 0x5435
--	TCXONC                               = 0x540a
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x80045432
--	TIOCGETD                             = 0x5424
--	TIOCGEXCL                            = 0x80045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGPGRP                            = 0x540f
--	TIOCGPKT                             = 0x80045438
--	TIOCGPTLCK                           = 0x80045439
--	TIOCGPTN                             = 0x80045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x5413
--	TIOCINQ                              = 0x541b
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x5411
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x5423
--	TIOCSIG                              = 0x40045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSPGRP                            = 0x5410
--	TIOCSPTLCK                           = 0x40045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTI                              = 0x5412
--	TIOCSWINSZ                           = 0x5414
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x100
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x400854d5
--	TUNDETACHFILTER                      = 0x400854d6
--	TUNGETFEATURES                       = 0x800454cf
--	TUNGETFILTER                         = 0x800854db
--	TUNGETIFF                            = 0x800454d2
--	TUNGETSNDBUF                         = 0x800454d3
--	TUNGETVNETBE                         = 0x800454df
--	TUNGETVNETHDRSZ                      = 0x800454d7
--	TUNGETVNETLE                         = 0x800454dd
--	TUNSETDEBUG                          = 0x400454c9
--	TUNSETGROUP                          = 0x400454ce
--	TUNSETIFF                            = 0x400454ca
--	TUNSETIFINDEX                        = 0x400454da
--	TUNSETLINK                           = 0x400454cd
--	TUNSETNOCSUM                         = 0x400454c8
--	TUNSETOFFLOAD                        = 0x400454d0
--	TUNSETOWNER                          = 0x400454cc
--	TUNSETPERSIST                        = 0x400454cb
--	TUNSETQUEUE                          = 0x400454d9
--	TUNSETSNDBUF                         = 0x400454d4
--	TUNSETTXFILTER                       = 0x400454d1
--	TUNSETVNETBE                         = 0x400454de
--	TUNSETVNETHDRSZ                      = 0x400454d8
--	TUNSETVNETLE                         = 0x400454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x4
--	VEOL                                 = 0xb
--	VEOL2                                = 0x10
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x6
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x20
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80041270
-+	BLKBSZSET                        = 0x40041271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80041272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FP_XSTATE_MAGIC2                 = 0x46505845
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80046601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0xc
-+	F_GETLK64                        = 0xc
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0xd
-+	F_SETLK64                        = 0xd
-+	F_SETLKW                         = 0xe
-+	F_SETLKW64                       = 0xe
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_32BIT                        = 0x40
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x20
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x4000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x8000
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80042407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc004240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40042406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8008743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40087446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x400c744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40087447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffff
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GETFPXREGS                = 0x12
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SETFPXREGS                = 0x13
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SINGLEBLOCK               = 0x21
-+	PTRACE_SYSEMU                    = 0x1f
-+	PTRACE_SYSEMU_SINGLESTEP         = 0x20
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8004700d
-+	RTC_EPOCH_SET                    = 0x4004700e
-+	RTC_IRQP_READ                    = 0x8004700b
-+	RTC_IRQP_SET                     = 0x4004700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x801c7011
-+	RTC_PLL_SET                      = 0x401c7012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x400854d5
-+	TUNDETACHFILTER                  = 0x400854d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x800854db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x20
-+	X86_FXSR_MAGIC                   = 0x0
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1881,23 +500,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x23)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1914,8 +525,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1923,103 +532,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2030,171 +606,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-index a6618fc1..005970f7 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-@@ -3,7 +3,7 @@
- 
- // +build amd64,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go
- 
- package unix
-@@ -11,1869 +11,487 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x80081270
--	BLKBSZSET                            = 0x40081271
--	BLKFLSBUF                            = 0x1261
--	BLKFRAGET                            = 0x1265
--	BLKFRASET                            = 0x1264
--	BLKGETSIZE                           = 0x1260
--	BLKGETSIZE64                         = 0x80081272
--	BLKPBSZGET                           = 0x127b
--	BLKRAGET                             = 0x1263
--	BLKRASET                             = 0x1262
--	BLKROGET                             = 0x125e
--	BLKROSET                             = 0x125d
--	BLKRRPART                            = 0x125f
--	BLKSECTGET                           = 0x1267
--	BLKSECTSET                           = 0x1266
--	BLKSSZGET                            = 0x1268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x1000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x5
--	F_GETLK64                            = 0x5
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0x6
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0x7
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x8000
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_32BIT                            = 0x40
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x2000
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x4000
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x4000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x2401
--	PERF_EVENT_IOC_ENABLE                = 0x2400
--	PERF_EVENT_IOC_ID                    = 0x80082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
--	PERF_EVENT_IOC_PERIOD                = 0x40082404
--	PERF_EVENT_IOC_REFRESH               = 0x2402
--	PERF_EVENT_IOC_RESET                 = 0x2403
--	PERF_EVENT_IOC_SET_BPF               = 0x40042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ARCH_PRCTL                    = 0x1e
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETFPXREGS                    = 0x12
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETFPXREGS                    = 0x13
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SINGLEBLOCK                   = 0x21
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_SYSEMU                        = 0x1f
--	PTRACE_SYSEMU_SINGLESTEP             = 0x20
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x541b
--	SIOCOUTQ                             = 0x5411
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x10
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x11
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x12
--	SO_RCVTIMEO                          = 0x14
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x13
--	SO_SNDTIMEO                          = 0x15
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x540b
--	TCGETA                               = 0x5405
--	TCGETS                               = 0x5401
--	TCGETS2                              = 0x802c542a
--	TCGETX                               = 0x5432
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x5409
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x5406
--	TCSETAF                              = 0x5408
--	TCSETAW                              = 0x5407
--	TCSETS                               = 0x5402
--	TCSETS2                              = 0x402c542b
--	TCSETSF                              = 0x5404
--	TCSETSF2                             = 0x402c542d
--	TCSETSW                              = 0x5403
--	TCSETSW2                             = 0x402c542c
--	TCSETX                               = 0x5433
--	TCSETXF                              = 0x5434
--	TCSETXW                              = 0x5435
--	TCXONC                               = 0x540a
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x80045432
--	TIOCGETD                             = 0x5424
--	TIOCGEXCL                            = 0x80045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGPGRP                            = 0x540f
--	TIOCGPKT                             = 0x80045438
--	TIOCGPTLCK                           = 0x80045439
--	TIOCGPTN                             = 0x80045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x5413
--	TIOCINQ                              = 0x541b
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x5411
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x5423
--	TIOCSIG                              = 0x40045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSPGRP                            = 0x5410
--	TIOCSPTLCK                           = 0x40045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTI                              = 0x5412
--	TIOCSWINSZ                           = 0x5414
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x100
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x401054d5
--	TUNDETACHFILTER                      = 0x401054d6
--	TUNGETFEATURES                       = 0x800454cf
--	TUNGETFILTER                         = 0x801054db
--	TUNGETIFF                            = 0x800454d2
--	TUNGETSNDBUF                         = 0x800454d3
--	TUNGETVNETBE                         = 0x800454df
--	TUNGETVNETHDRSZ                      = 0x800454d7
--	TUNGETVNETLE                         = 0x800454dd
--	TUNSETDEBUG                          = 0x400454c9
--	TUNSETGROUP                          = 0x400454ce
--	TUNSETIFF                            = 0x400454ca
--	TUNSETIFINDEX                        = 0x400454da
--	TUNSETLINK                           = 0x400454cd
--	TUNSETNOCSUM                         = 0x400454c8
--	TUNSETOFFLOAD                        = 0x400454d0
--	TUNSETOWNER                          = 0x400454cc
--	TUNSETPERSIST                        = 0x400454cb
--	TUNSETQUEUE                          = 0x400454d9
--	TUNSETSNDBUF                         = 0x400454d4
--	TUNSETTXFILTER                       = 0x400454d1
--	TUNSETVNETBE                         = 0x400454de
--	TUNSETVNETHDRSZ                      = 0x400454d8
--	TUNSETVNETLE                         = 0x400454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x4
--	VEOL                                 = 0xb
--	VEOL2                                = 0x10
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x6
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80081270
-+	BLKBSZSET                        = 0x40081271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80081272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FP_XSTATE_MAGIC2                 = 0x46505845
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0x5
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_32BIT                        = 0x40
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x4000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8010743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40107446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x4010744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40107447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_ARCH_PRCTL                = 0x1e
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GETFPXREGS                = 0x12
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SETFPXREGS                = 0x13
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SINGLEBLOCK               = 0x21
-+	PTRACE_SYSEMU                    = 0x1f
-+	PTRACE_SYSEMU_SINGLESTEP         = 0x20
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8008700d
-+	RTC_EPOCH_SET                    = 0x4008700e
-+	RTC_IRQP_READ                    = 0x8008700b
-+	RTC_IRQP_SET                     = 0x4008700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x80207011
-+	RTC_PLL_SET                      = 0x40207012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x401054d5
-+	TUNDETACHFILTER                  = 0x401054d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x801054db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1882,23 +500,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x23)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1915,8 +525,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1924,103 +532,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2031,171 +606,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-index 1adff0b2..0541f36e 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-@@ -3,7 +3,7 @@
- 
- // +build arm,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1873 +11,493 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x80041270
--	BLKBSZSET                            = 0x40041271
--	BLKFLSBUF                            = 0x1261
--	BLKFRAGET                            = 0x1265
--	BLKFRASET                            = 0x1264
--	BLKGETSIZE                           = 0x1260
--	BLKGETSIZE64                         = 0x80041272
--	BLKPBSZGET                           = 0x127b
--	BLKRAGET                             = 0x1263
--	BLKRASET                             = 0x1262
--	BLKROGET                             = 0x125e
--	BLKROSET                             = 0x125d
--	BLKRRPART                            = 0x125f
--	BLKSECTGET                           = 0x1267
--	BLKSECTSET                           = 0x1266
--	BLKSSZGET                            = 0x1268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x1000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0xc
--	F_GETLK64                            = 0xc
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0xd
--	F_SETLK64                            = 0xd
--	F_SETLKW                             = 0xe
--	F_SETLKW64                           = 0xe
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x8000
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x2000
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x4000
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x10000
--	O_DIRECTORY                          = 0x4000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x20000
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x8000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x404000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x2401
--	PERF_EVENT_IOC_ENABLE                = 0x2400
--	PERF_EVENT_IOC_ID                    = 0x80042407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
--	PERF_EVENT_IOC_PERIOD                = 0x40082404
--	PERF_EVENT_IOC_REFRESH               = 0x2402
--	PERF_EVENT_IOC_RESET                 = 0x2403
--	PERF_EVENT_IOC_SET_BPF               = 0x40042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x40042406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = 0xffffffff
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETCRUNCHREGS                 = 0x19
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETHBPREGS                    = 0x1d
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GETVFPREGS                    = 0x1b
--	PTRACE_GETWMMXREGS                   = 0x12
--	PTRACE_GET_THREAD_AREA               = 0x16
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETCRUNCHREGS                 = 0x1a
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETHBPREGS                    = 0x1e
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SETVFPREGS                    = 0x1c
--	PTRACE_SETWMMXREGS                   = 0x13
--	PTRACE_SET_SYSCALL                   = 0x17
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	PT_DATA_ADDR                         = 0x10004
--	PT_TEXT_ADDR                         = 0x10000
--	PT_TEXT_END_ADDR                     = 0x10008
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x541b
--	SIOCOUTQ                             = 0x5411
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x10
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x11
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x12
--	SO_RCVTIMEO                          = 0x14
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x13
--	SO_SNDTIMEO                          = 0x15
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x540b
--	TCGETA                               = 0x5405
--	TCGETS                               = 0x5401
--	TCGETS2                              = 0x802c542a
--	TCGETX                               = 0x5432
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x5409
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x5406
--	TCSETAF                              = 0x5408
--	TCSETAW                              = 0x5407
--	TCSETS                               = 0x5402
--	TCSETS2                              = 0x402c542b
--	TCSETSF                              = 0x5404
--	TCSETSF2                             = 0x402c542d
--	TCSETSW                              = 0x5403
--	TCSETSW2                             = 0x402c542c
--	TCSETX                               = 0x5433
--	TCSETXF                              = 0x5434
--	TCSETXW                              = 0x5435
--	TCXONC                               = 0x540a
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x80045432
--	TIOCGETD                             = 0x5424
--	TIOCGEXCL                            = 0x80045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGPGRP                            = 0x540f
--	TIOCGPKT                             = 0x80045438
--	TIOCGPTLCK                           = 0x80045439
--	TIOCGPTN                             = 0x80045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x5413
--	TIOCINQ                              = 0x541b
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x5411
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x5423
--	TIOCSIG                              = 0x40045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSPGRP                            = 0x5410
--	TIOCSPTLCK                           = 0x40045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTI                              = 0x5412
--	TIOCSWINSZ                           = 0x5414
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x100
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x400854d5
--	TUNDETACHFILTER                      = 0x400854d6
--	TUNGETFEATURES                       = 0x800454cf
--	TUNGETFILTER                         = 0x800854db
--	TUNGETIFF                            = 0x800454d2
--	TUNGETSNDBUF                         = 0x800454d3
--	TUNGETVNETBE                         = 0x800454df
--	TUNGETVNETHDRSZ                      = 0x800454d7
--	TUNGETVNETLE                         = 0x800454dd
--	TUNSETDEBUG                          = 0x400454c9
--	TUNSETGROUP                          = 0x400454ce
--	TUNSETIFF                            = 0x400454ca
--	TUNSETIFINDEX                        = 0x400454da
--	TUNSETLINK                           = 0x400454cd
--	TUNSETNOCSUM                         = 0x400454c8
--	TUNSETOFFLOAD                        = 0x400454d0
--	TUNSETOWNER                          = 0x400454cc
--	TUNSETPERSIST                        = 0x400454cb
--	TUNSETQUEUE                          = 0x400454d9
--	TUNSETSNDBUF                         = 0x400454d4
--	TUNSETTXFILTER                       = 0x400454d1
--	TUNSETVNETBE                         = 0x400454de
--	TUNSETVNETHDRSZ                      = 0x400454d8
--	TUNSETVNETLE                         = 0x400454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x4
--	VEOL                                 = 0xb
--	VEOL2                                = 0x10
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x6
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x20
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80041270
-+	BLKBSZSET                        = 0x40041271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80041272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80046601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0xc
-+	F_GETLK64                        = 0xc
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0xd
-+	F_SETLK64                        = 0xd
-+	F_SETLKW                         = 0xe
-+	F_SETLKW64                       = 0xe
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x20
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x10000
-+	O_DIRECTORY                      = 0x4000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x20000
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x8000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x404000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80042407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc004240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40042406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8008743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40087446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x400c744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40087447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffff
-+	PTRACE_GETCRUNCHREGS             = 0x19
-+	PTRACE_GETFDPIC                  = 0x1f
-+	PTRACE_GETFDPIC_EXEC             = 0x0
-+	PTRACE_GETFDPIC_INTERP           = 0x1
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GETHBPREGS                = 0x1d
-+	PTRACE_GETVFPREGS                = 0x1b
-+	PTRACE_GETWMMXREGS               = 0x12
-+	PTRACE_GET_THREAD_AREA           = 0x16
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_SETCRUNCHREGS             = 0x1a
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SETHBPREGS                = 0x1e
-+	PTRACE_SETVFPREGS                = 0x1c
-+	PTRACE_SETWMMXREGS               = 0x13
-+	PTRACE_SET_SYSCALL               = 0x17
-+	PT_DATA_ADDR                     = 0x10004
-+	PT_TEXT_ADDR                     = 0x10000
-+	PT_TEXT_END_ADDR                 = 0x10008
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8004700d
-+	RTC_EPOCH_SET                    = 0x4004700e
-+	RTC_IRQP_READ                    = 0x8004700b
-+	RTC_IRQP_SET                     = 0x4004700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x801c7011
-+	RTC_PLL_SET                      = 0x401c7012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x400854d5
-+	TUNDETACHFILTER                  = 0x400854d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x800854db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x20
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1886,23 +506,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x23)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1919,8 +531,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1928,103 +538,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2035,171 +612,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-index c0ecd47c..9ee8d1bc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-@@ -3,7 +3,7 @@
- 
- // +build arm64,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go
- 
- package unix
-@@ -11,1858 +11,480 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x80081270
--	BLKBSZSET                            = 0x40081271
--	BLKFLSBUF                            = 0x1261
--	BLKFRAGET                            = 0x1265
--	BLKFRASET                            = 0x1264
--	BLKGETSIZE                           = 0x1260
--	BLKGETSIZE64                         = 0x80081272
--	BLKPBSZGET                           = 0x127b
--	BLKRAGET                             = 0x1263
--	BLKRASET                             = 0x1262
--	BLKROGET                             = 0x125e
--	BLKROSET                             = 0x125d
--	BLKRRPART                            = 0x125f
--	BLKSECTGET                           = 0x1267
--	BLKSECTSET                           = 0x1266
--	BLKSSZGET                            = 0x1268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ESR_MAGIC                            = 0x45535201
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x1000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x5
--	F_GETLK64                            = 0x5
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0x6
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0x7
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x8000
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x2000
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x4000
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x10000
--	O_DIRECTORY                          = 0x4000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x8000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x404000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x2401
--	PERF_EVENT_IOC_ENABLE                = 0x2400
--	PERF_EVENT_IOC_ID                    = 0x80082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
--	PERF_EVENT_IOC_PERIOD                = 0x40082404
--	PERF_EVENT_IOC_REFRESH               = 0x2402
--	PERF_EVENT_IOC_RESET                 = 0x2403
--	PERF_EVENT_IOC_SET_BPF               = 0x40042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x541b
--	SIOCOUTQ                             = 0x5411
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x10
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x11
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x12
--	SO_RCVTIMEO                          = 0x14
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x13
--	SO_SNDTIMEO                          = 0x15
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x540b
--	TCGETA                               = 0x5405
--	TCGETS                               = 0x5401
--	TCGETS2                              = 0x802c542a
--	TCGETX                               = 0x5432
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x5409
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x5406
--	TCSETAF                              = 0x5408
--	TCSETAW                              = 0x5407
--	TCSETS                               = 0x5402
--	TCSETS2                              = 0x402c542b
--	TCSETSF                              = 0x5404
--	TCSETSF2                             = 0x402c542d
--	TCSETSW                              = 0x5403
--	TCSETSW2                             = 0x402c542c
--	TCSETX                               = 0x5433
--	TCSETXF                              = 0x5434
--	TCSETXW                              = 0x5435
--	TCXONC                               = 0x540a
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x80045432
--	TIOCGETD                             = 0x5424
--	TIOCGEXCL                            = 0x80045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGPGRP                            = 0x540f
--	TIOCGPKT                             = 0x80045438
--	TIOCGPTLCK                           = 0x80045439
--	TIOCGPTN                             = 0x80045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x5413
--	TIOCINQ                              = 0x541b
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x5411
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x5423
--	TIOCSIG                              = 0x40045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSPGRP                            = 0x5410
--	TIOCSPTLCK                           = 0x40045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTI                              = 0x5412
--	TIOCSWINSZ                           = 0x5414
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x100
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x401054d5
--	TUNDETACHFILTER                      = 0x401054d6
--	TUNGETFEATURES                       = 0x800454cf
--	TUNGETFILTER                         = 0x801054db
--	TUNGETIFF                            = 0x800454d2
--	TUNGETSNDBUF                         = 0x800454d3
--	TUNGETVNETBE                         = 0x800454df
--	TUNGETVNETHDRSZ                      = 0x800454d7
--	TUNGETVNETLE                         = 0x800454dd
--	TUNSETDEBUG                          = 0x400454c9
--	TUNSETGROUP                          = 0x400454ce
--	TUNSETIFF                            = 0x400454ca
--	TUNSETIFINDEX                        = 0x400454da
--	TUNSETLINK                           = 0x400454cd
--	TUNSETNOCSUM                         = 0x400454c8
--	TUNSETOFFLOAD                        = 0x400454d0
--	TUNSETOWNER                          = 0x400454cc
--	TUNSETPERSIST                        = 0x400454cb
--	TUNSETQUEUE                          = 0x400454d9
--	TUNSETSNDBUF                         = 0x400454d4
--	TUNSETTXFILTER                       = 0x400454d1
--	TUNSETVNETBE                         = 0x400454de
--	TUNSETVNETHDRSZ                      = 0x400454d8
--	TUNSETVNETLE                         = 0x400454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x4
--	VEOL                                 = 0xb
--	VEOL2                                = 0x10
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x6
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80081270
-+	BLKBSZSET                        = 0x40081271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80081272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	ESR_MAGIC                        = 0x45535201
-+	EXTPROC                          = 0x10000
-+	EXTRA_MAGIC                      = 0x45585401
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FPSIMD_MAGIC                     = 0x46508001
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0x5
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x10000
-+	O_DIRECTORY                      = 0x4000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x8000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x404000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8010743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40107446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x4010744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40107447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_SYSEMU                    = 0x1f
-+	PTRACE_SYSEMU_SINGLESTEP         = 0x20
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8008700d
-+	RTC_EPOCH_SET                    = 0x4008700e
-+	RTC_IRQP_READ                    = 0x8008700b
-+	RTC_IRQP_SET                     = 0x4008700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x80207011
-+	RTC_PLL_SET                      = 0x40207012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	SVE_MAGIC                        = 0x53564501
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x401054d5
-+	TUNDETACHFILTER                  = 0x401054d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x801054db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1871,23 +493,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x23)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1904,8 +518,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1913,103 +525,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2020,171 +599,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-index 900f568a..4826bd70 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-@@ -3,7 +3,7 @@
- 
- // +build mips,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40041270
--	BLKBSZSET                            = 0x80041271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40041272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x80
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x2000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x21
--	F_GETLK64                            = 0x21
--	F_GETOWN                             = 0x17
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x22
--	F_SETLK64                            = 0x22
--	F_SETLKW                             = 0x23
--	F_SETLKW64                           = 0x23
--	F_SETOWN                             = 0x18
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x100
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x80
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x800
--	MAP_ANONYMOUS                        = 0x800
--	MAP_DENYWRITE                        = 0x2000
--	MAP_EXECUTABLE                       = 0x4000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x1000
--	MAP_HUGETLB                          = 0x80000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x8000
--	MAP_NONBLOCK                         = 0x20000
--	MAP_NORESERVE                        = 0x400
--	MAP_POPULATE                         = 0x10000
--	MAP_PRIVATE                          = 0x2
--	MAP_RENAME                           = 0x800
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x40000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x8
--	O_ASYNC                              = 0x1000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x100
--	O_DIRECT                             = 0x8000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x10
--	O_EXCL                               = 0x400
--	O_FSYNC                              = 0x4010
--	O_LARGEFILE                          = 0x2000
--	O_NDELAY                             = 0x80
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x800
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x80
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x4010
--	O_SYNC                               = 0x4010
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40042407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80042406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = 0xffffffff
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_GET_THREAD_AREA_3264          = 0xc4
--	PTRACE_GET_WATCH_REGS                = 0xd0
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKDATA_3264                 = 0xc1
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKTEXT_3264                 = 0xc0
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKEDATA_3264                 = 0xc3
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKETEXT_3264                 = 0xc2
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SET_WATCH_REGS                = 0xd1
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x6
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x9
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x5
--	RLIMIT_NPROC                         = 0x8
--	RLIMIT_RSS                           = 0x7
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x40047307
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x40047309
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x467f
--	SIOCOUTQ                             = 0x7472
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x80047308
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x1
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x80
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x2
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0xffff
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1009
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x20
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x1029
--	SO_DONTROUTE                         = 0x10
--	SO_ERROR                             = 0x1007
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x8
--	SO_LINGER                            = 0x80
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0x100
--	SO_PASSCRED                          = 0x11
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x12
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1e
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x1028
--	SO_RCVBUF                            = 0x1002
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x1004
--	SO_RCVTIMEO                          = 0x1006
--	SO_REUSEADDR                         = 0x4
--	SO_REUSEPORT                         = 0x200
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x1001
--	SO_SNDBUFFORCE                       = 0x1f
--	SO_SNDLOWAT                          = 0x1003
--	SO_SNDTIMEO                          = 0x1005
--	SO_STYLE                             = 0x1008
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x1008
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x5407
--	TCGETA                               = 0x5401
--	TCGETS                               = 0x540d
--	TCGETS2                              = 0x4030542a
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x5410
--	TCSBRK                               = 0x5405
--	TCSBRKP                              = 0x5486
--	TCSETA                               = 0x5402
--	TCSETAF                              = 0x5404
--	TCSETAW                              = 0x5403
--	TCSETS                               = 0x540e
--	TCSETS2                              = 0x8030542b
--	TCSETSF                              = 0x5410
--	TCSETSF2                             = 0x8030542d
--	TCSETSW                              = 0x540f
--	TCSETSW2                             = 0x8030542c
--	TCXONC                               = 0x5406
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x80047478
--	TIOCEXCL                             = 0x740d
--	TIOCGDEV                             = 0x40045432
--	TIOCGETD                             = 0x7400
--	TIOCGETP                             = 0x7408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x5492
--	TIOCGLCKTRMIOS                       = 0x548b
--	TIOCGLTC                             = 0x7474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x4020542e
--	TIOCGSERIAL                          = 0x5484
--	TIOCGSID                             = 0x7416
--	TIOCGSOFTCAR                         = 0x5481
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x467f
--	TIOCLINUX                            = 0x5483
--	TIOCMBIC                             = 0x741c
--	TIOCMBIS                             = 0x741b
--	TIOCMGET                             = 0x741d
--	TIOCMIWAIT                           = 0x5491
--	TIOCMSET                             = 0x741a
--	TIOCM_CAR                            = 0x100
--	TIOCM_CD                             = 0x100
--	TIOCM_CTS                            = 0x40
--	TIOCM_DSR                            = 0x400
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x200
--	TIOCM_RNG                            = 0x200
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x20
--	TIOCM_ST                             = 0x10
--	TIOCNOTTY                            = 0x5471
--	TIOCNXCL                             = 0x740e
--	TIOCOUTQ                             = 0x7472
--	TIOCPKT                              = 0x5470
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x5480
--	TIOCSERCONFIG                        = 0x5488
--	TIOCSERGETLSR                        = 0x548e
--	TIOCSERGETMULTI                      = 0x548f
--	TIOCSERGSTRUCT                       = 0x548d
--	TIOCSERGWILD                         = 0x5489
--	TIOCSERSETMULTI                      = 0x5490
--	TIOCSERSWILD                         = 0x548a
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x7401
--	TIOCSETN                             = 0x740a
--	TIOCSETP                             = 0x7409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x548c
--	TIOCSLTC                             = 0x7475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0xc020542f
--	TIOCSSERIAL                          = 0x5485
--	TIOCSSOFTCAR                         = 0x5482
--	TIOCSTI                              = 0x5472
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x8000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x800854d5
--	TUNDETACHFILTER                      = 0x800854d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x400854db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x10
--	VEOL                                 = 0x11
--	VEOL2                                = 0x6
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x4
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VSWTCH                               = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x20
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x40041270
-+	BLKBSZSET                        = 0x80041271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40041272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x80
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x2000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40046601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0x21
-+	F_GETLK64                        = 0x21
-+	F_GETOWN                         = 0x17
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x22
-+	F_SETLK64                        = 0x22
-+	F_SETLKW                         = 0x23
-+	F_SETLKW64                       = 0x23
-+	F_SETOWN                         = 0x18
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x100
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x80
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x800
-+	MAP_ANONYMOUS                    = 0x800
-+	MAP_DENYWRITE                    = 0x2000
-+	MAP_EXECUTABLE                   = 0x4000
-+	MAP_GROWSDOWN                    = 0x1000
-+	MAP_HUGETLB                      = 0x80000
-+	MAP_LOCKED                       = 0x8000
-+	MAP_NONBLOCK                     = 0x20000
-+	MAP_NORESERVE                    = 0x400
-+	MAP_POPULATE                     = 0x10000
-+	MAP_RENAME                       = 0x800
-+	MAP_STACK                        = 0x40000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x20
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x8
-+	O_ASYNC                          = 0x1000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x100
-+	O_DIRECT                         = 0x8000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x10
-+	O_EXCL                           = 0x400
-+	O_FSYNC                          = 0x4010
-+	O_LARGEFILE                      = 0x2000
-+	O_NDELAY                         = 0x80
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x800
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x80
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x4010
-+	O_SYNC                           = 0x4010
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40042407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc004240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80042406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4008743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80087446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x800c744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80087447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PR_SET_PTRACER_ANY               = 0xffffffff
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_GET_THREAD_AREA_3264      = 0xc4
-+	PTRACE_GET_WATCH_REGS            = 0xd0
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_PEEKDATA_3264             = 0xc1
-+	PTRACE_PEEKTEXT_3264             = 0xc0
-+	PTRACE_POKEDATA_3264             = 0xc3
-+	PTRACE_POKETEXT_3264             = 0xc2
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SET_WATCH_REGS            = 0xd1
-+	RLIMIT_AS                        = 0x6
-+	RLIMIT_MEMLOCK                   = 0x9
-+	RLIMIT_NOFILE                    = 0x5
-+	RLIMIT_NPROC                     = 0x8
-+	RLIMIT_RSS                       = 0x7
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4004700d
-+	RTC_EPOCH_SET                    = 0x8004700e
-+	RTC_IRQP_READ                    = 0x4004700b
-+	RTC_IRQP_SET                     = 0x8004700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x401c7011
-+	RTC_PLL_SET                      = 0x801c7012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x80
-+	SIOCATMARK                       = 0x40047307
-+	SIOCGPGRP                        = 0x40047309
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x467f
-+	SIOCOUTQ                         = 0x7472
-+	SIOCSPGRP                        = 0x80047308
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x1
-+	SOCK_NONBLOCK                    = 0x80
-+	SOCK_STREAM                      = 0x2
-+	SOL_SOCKET                       = 0xffff
-+	SO_ACCEPTCONN                    = 0x1009
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x20
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x1029
-+	SO_DONTROUTE                     = 0x10
-+	SO_ERROR                         = 0x1007
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x8
-+	SO_LINGER                        = 0x80
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0x100
-+	SO_PASSCRED                      = 0x11
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x12
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1e
-+	SO_PROTOCOL                      = 0x1028
-+	SO_RCVBUF                        = 0x1002
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x1004
-+	SO_RCVTIMEO                      = 0x1006
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x1006
-+	SO_REUSEADDR                     = 0x4
-+	SO_REUSEPORT                     = 0x200
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x1001
-+	SO_SNDBUFFORCE                   = 0x1f
-+	SO_SNDLOWAT                      = 0x1003
-+	SO_SNDTIMEO                      = 0x1005
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x1005
-+	SO_STYLE                         = 0x1008
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x1008
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x5407
-+	TCGETA                           = 0x5401
-+	TCGETS                           = 0x540d
-+	TCGETS2                          = 0x4030542a
-+	TCSAFLUSH                        = 0x5410
-+	TCSBRK                           = 0x5405
-+	TCSBRKP                          = 0x5486
-+	TCSETA                           = 0x5402
-+	TCSETAF                          = 0x5404
-+	TCSETAW                          = 0x5403
-+	TCSETS                           = 0x540e
-+	TCSETS2                          = 0x8030542b
-+	TCSETSF                          = 0x5410
-+	TCSETSF2                         = 0x8030542d
-+	TCSETSW                          = 0x540f
-+	TCSETSW2                         = 0x8030542c
-+	TCXONC                           = 0x5406
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x80047478
-+	TIOCEXCL                         = 0x740d
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETD                         = 0x7400
-+	TIOCGETP                         = 0x7408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x5492
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x548b
-+	TIOCGLTC                         = 0x7474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x4020542e
-+	TIOCGSERIAL                      = 0x5484
-+	TIOCGSID                         = 0x7416
-+	TIOCGSOFTCAR                     = 0x5481
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x467f
-+	TIOCLINUX                        = 0x5483
-+	TIOCMBIC                         = 0x741c
-+	TIOCMBIS                         = 0x741b
-+	TIOCMGET                         = 0x741d
-+	TIOCMIWAIT                       = 0x5491
-+	TIOCMSET                         = 0x741a
-+	TIOCM_CAR                        = 0x100
-+	TIOCM_CD                         = 0x100
-+	TIOCM_CTS                        = 0x40
-+	TIOCM_DSR                        = 0x400
-+	TIOCM_RI                         = 0x200
-+	TIOCM_RNG                        = 0x200
-+	TIOCM_SR                         = 0x20
-+	TIOCM_ST                         = 0x10
-+	TIOCNOTTY                        = 0x5471
-+	TIOCNXCL                         = 0x740e
-+	TIOCOUTQ                         = 0x7472
-+	TIOCPKT                          = 0x5470
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x5480
-+	TIOCSERCONFIG                    = 0x5488
-+	TIOCSERGETLSR                    = 0x548e
-+	TIOCSERGETMULTI                  = 0x548f
-+	TIOCSERGSTRUCT                   = 0x548d
-+	TIOCSERGWILD                     = 0x5489
-+	TIOCSERSETMULTI                  = 0x5490
-+	TIOCSERSWILD                     = 0x548a
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x7401
-+	TIOCSETN                         = 0x740a
-+	TIOCSETP                         = 0x7409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x548c
-+	TIOCSLTC                         = 0x7475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0xc020542f
-+	TIOCSSERIAL                      = 0x5485
-+	TIOCSSOFTCAR                     = 0x5482
-+	TIOCSTI                          = 0x5472
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x8000
-+	TUNATTACHFILTER                  = 0x800854d5
-+	TUNDETACHFILTER                  = 0x800854d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x400854db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x10
-+	VEOL                             = 0x11
-+	VEOL2                            = 0x6
-+	VMIN                             = 0x4
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VSWTCH                           = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x20
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x7d)
- 	EADDRNOTAVAIL   = syscall.Errno(0x7e)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x7c)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x95)
- 	EBADE           = syscall.Errno(0x32)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x51)
- 	EBADMSG         = syscall.Errno(0x4d)
- 	EBADR           = syscall.Errno(0x33)
- 	EBADRQC         = syscall.Errno(0x36)
- 	EBADSLT         = syscall.Errno(0x37)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x9e)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x25)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- 	EDEADLK         = syscall.Errno(0x2d)
- 	EDEADLOCK       = syscall.Errno(0x38)
- 	EDESTADDRREQ    = syscall.Errno(0x60)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x46d)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x93)
- 	EHOSTUNREACH    = syscall.Errno(0x94)
- 	EHWPOISON       = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- 	EILSEQ          = syscall.Errno(0x58)
- 	EINIT           = syscall.Errno(0x8d)
- 	EINPROGRESS     = syscall.Errno(0x96)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x85)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x8b)
- 	EKEYEXPIRED     = syscall.Errno(0xa2)
- 	EKEYREJECTED    = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x29)
- 	ELOOP           = syscall.Errno(0x5a)
- 	EMEDIUMTYPE     = syscall.Errno(0xa0)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x61)
- 	EMULTIHOP       = syscall.Errno(0x4a)
- 	ENAMETOOLONG    = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- 	ENETDOWN        = syscall.Errno(0x7f)
- 	ENETRESET       = syscall.Errno(0x81)
- 	ENETUNREACH     = syscall.Errno(0x80)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x35)
- 	ENOBUFS         = syscall.Errno(0x84)
- 	ENOCSI          = syscall.Errno(0x2b)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0xa1)
- 	ENOLCK          = syscall.Errno(0x2e)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x9f)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x23)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x63)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x59)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x86)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x5d)
- 	ENOTNAM         = syscall.Errno(0x89)
- 	ENOTRECOVERABLE = syscall.Errno(0xa6)
- 	ENOTSOCK        = syscall.Errno(0x5f)
- 	ENOTSUP         = syscall.Errno(0x7a)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x50)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x7a)
- 	EOVERFLOW       = syscall.Errno(0x4f)
- 	EOWNERDEAD      = syscall.Errno(0xa5)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x7b)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x78)
- 	EPROTOTYPE      = syscall.Errno(0x62)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x52)
- 	EREMDEV         = syscall.Errno(0x8e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x8c)
- 	ERESTART        = syscall.Errno(0x5b)
- 	ERFKILL         = syscall.Errno(0xa7)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x8f)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x79)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x97)
- 	ESTRPIPE        = syscall.Errno(0x5c)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x91)
- 	ETOOMANYREFS    = syscall.Errno(0x90)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x87)
- 	EUNATCH         = syscall.Errno(0x2a)
- 	EUSERS          = syscall.Errno(0x5e)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x34)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0xa)
- 	SIGCHLD   = syscall.Signal(0x12)
- 	SIGCLD    = syscall.Signal(0x12)
- 	SIGCONT   = syscall.Signal(0x19)
- 	SIGEMT    = syscall.Signal(0x7)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x16)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x16)
- 	SIGPROF   = syscall.Signal(0x1d)
- 	SIGPWR    = syscall.Signal(0x13)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTOP   = syscall.Signal(0x17)
- 	SIGSYS    = syscall.Signal(0xc)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x18)
- 	SIGTTIN   = syscall.Signal(0x1a)
- 	SIGTTOU   = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:    "operation not permitted",
--	2:    "no such file or directory",
--	3:    "no such process",
--	4:    "interrupted system call",
--	5:    "input/output error",
--	6:    "no such device or address",
--	7:    "argument list too long",
--	8:    "exec format error",
--	9:    "bad file descriptor",
--	10:   "no child processes",
--	11:   "resource temporarily unavailable",
--	12:   "cannot allocate memory",
--	13:   "permission denied",
--	14:   "bad address",
--	15:   "block device required",
--	16:   "device or resource busy",
--	17:   "file exists",
--	18:   "invalid cross-device link",
--	19:   "no such device",
--	20:   "not a directory",
--	21:   "is a directory",
--	22:   "invalid argument",
--	23:   "too many open files in system",
--	24:   "too many open files",
--	25:   "inappropriate ioctl for device",
--	26:   "text file busy",
--	27:   "file too large",
--	28:   "no space left on device",
--	29:   "illegal seek",
--	30:   "read-only file system",
--	31:   "too many links",
--	32:   "broken pipe",
--	33:   "numerical argument out of domain",
--	34:   "numerical result out of range",
--	35:   "no message of desired type",
--	36:   "identifier removed",
--	37:   "channel number out of range",
--	38:   "level 2 not synchronized",
--	39:   "level 3 halted",
--	40:   "level 3 reset",
--	41:   "link number out of range",
--	42:   "protocol driver not attached",
--	43:   "no CSI structure available",
--	44:   "level 2 halted",
--	45:   "resource deadlock avoided",
--	46:   "no locks available",
--	50:   "invalid exchange",
--	51:   "invalid request descriptor",
--	52:   "exchange full",
--	53:   "no anode",
--	54:   "invalid request code",
--	55:   "invalid slot",
--	56:   "file locking deadlock error",
--	59:   "bad font file format",
--	60:   "device not a stream",
--	61:   "no data available",
--	62:   "timer expired",
--	63:   "out of streams resources",
--	64:   "machine is not on the network",
--	65:   "package not installed",
--	66:   "object is remote",
--	67:   "link has been severed",
--	68:   "advertise error",
--	69:   "srmount error",
--	70:   "communication error on send",
--	71:   "protocol error",
--	73:   "RFS specific error",
--	74:   "multihop attempted",
--	77:   "bad message",
--	78:   "file name too long",
--	79:   "value too large for defined data type",
--	80:   "name not unique on network",
--	81:   "file descriptor in bad state",
--	82:   "remote address changed",
--	83:   "can not access a needed shared library",
--	84:   "accessing a corrupted shared library",
--	85:   ".lib section in a.out corrupted",
--	86:   "attempting to link in too many shared libraries",
--	87:   "cannot exec a shared library directly",
--	88:   "invalid or incomplete multibyte or wide character",
--	89:   "function not implemented",
--	90:   "too many levels of symbolic links",
--	91:   "interrupted system call should be restarted",
--	92:   "streams pipe error",
--	93:   "directory not empty",
--	94:   "too many users",
--	95:   "socket operation on non-socket",
--	96:   "destination address required",
--	97:   "message too long",
--	98:   "protocol wrong type for socket",
--	99:   "protocol not available",
--	120:  "protocol not supported",
--	121:  "socket type not supported",
--	122:  "operation not supported",
--	123:  "protocol family not supported",
--	124:  "address family not supported by protocol",
--	125:  "address already in use",
--	126:  "cannot assign requested address",
--	127:  "network is down",
--	128:  "network is unreachable",
--	129:  "network dropped connection on reset",
--	130:  "software caused connection abort",
--	131:  "connection reset by peer",
--	132:  "no buffer space available",
--	133:  "transport endpoint is already connected",
--	134:  "transport endpoint is not connected",
--	135:  "structure needs cleaning",
--	137:  "not a XENIX named type file",
--	138:  "no XENIX semaphores available",
--	139:  "is a named type file",
--	140:  "remote I/O error",
--	141:  "unknown error 141",
--	142:  "unknown error 142",
--	143:  "cannot send after transport endpoint shutdown",
--	144:  "too many references: cannot splice",
--	145:  "connection timed out",
--	146:  "connection refused",
--	147:  "host is down",
--	148:  "no route to host",
--	149:  "operation already in progress",
--	150:  "operation now in progress",
--	151:  "stale file handle",
--	158:  "operation canceled",
--	159:  "no medium found",
--	160:  "wrong medium type",
--	161:  "required key not available",
--	162:  "key has expired",
--	163:  "key has been revoked",
--	164:  "key was rejected by service",
--	165:  "owner died",
--	166:  "state not recoverable",
--	167:  "operation not possible due to RF-kill",
--	168:  "memory page has hardware error",
--	1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "resource deadlock avoided"},
-+	{46, "ENOLCK", "no locks available"},
-+	{50, "EBADE", "invalid exchange"},
-+	{51, "EBADR", "invalid request descriptor"},
-+	{52, "EXFULL", "exchange full"},
-+	{53, "ENOANO", "no anode"},
-+	{54, "EBADRQC", "invalid request code"},
-+	{55, "EBADSLT", "invalid slot"},
-+	{56, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EMULTIHOP", "multihop attempted"},
-+	{77, "EBADMSG", "bad message"},
-+	{78, "ENAMETOOLONG", "file name too long"},
-+	{79, "EOVERFLOW", "value too large for defined data type"},
-+	{80, "ENOTUNIQ", "name not unique on network"},
-+	{81, "EBADFD", "file descriptor in bad state"},
-+	{82, "EREMCHG", "remote address changed"},
-+	{83, "ELIBACC", "can not access a needed shared library"},
-+	{84, "ELIBBAD", "accessing a corrupted shared library"},
-+	{85, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{87, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{89, "ENOSYS", "function not implemented"},
-+	{90, "ELOOP", "too many levels of symbolic links"},
-+	{91, "ERESTART", "interrupted system call should be restarted"},
-+	{92, "ESTRPIPE", "streams pipe error"},
-+	{93, "ENOTEMPTY", "directory not empty"},
-+	{94, "EUSERS", "too many users"},
-+	{95, "ENOTSOCK", "socket operation on non-socket"},
-+	{96, "EDESTADDRREQ", "destination address required"},
-+	{97, "EMSGSIZE", "message too long"},
-+	{98, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{99, "ENOPROTOOPT", "protocol not available"},
-+	{120, "EPROTONOSUPPORT", "protocol not supported"},
-+	{121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{122, "ENOTSUP", "operation not supported"},
-+	{123, "EPFNOSUPPORT", "protocol family not supported"},
-+	{124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{125, "EADDRINUSE", "address already in use"},
-+	{126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{127, "ENETDOWN", "network is down"},
-+	{128, "ENETUNREACH", "network is unreachable"},
-+	{129, "ENETRESET", "network dropped connection on reset"},
-+	{130, "ECONNABORTED", "software caused connection abort"},
-+	{131, "ECONNRESET", "connection reset by peer"},
-+	{132, "ENOBUFS", "no buffer space available"},
-+	{133, "EISCONN", "transport endpoint is already connected"},
-+	{134, "ENOTCONN", "transport endpoint is not connected"},
-+	{135, "EUCLEAN", "structure needs cleaning"},
-+	{137, "ENOTNAM", "not a XENIX named type file"},
-+	{138, "ENAVAIL", "no XENIX semaphores available"},
-+	{139, "EISNAM", "is a named type file"},
-+	{140, "EREMOTEIO", "remote I/O error"},
-+	{141, "EINIT", "unknown error 141"},
-+	{142, "EREMDEV", "unknown error 142"},
-+	{143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{144, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{145, "ETIMEDOUT", "connection timed out"},
-+	{146, "ECONNREFUSED", "connection refused"},
-+	{147, "EHOSTDOWN", "host is down"},
-+	{148, "EHOSTUNREACH", "no route to host"},
-+	{149, "EALREADY", "operation already in progress"},
-+	{150, "EINPROGRESS", "operation now in progress"},
-+	{151, "ESTALE", "stale file handle"},
-+	{158, "ECANCELED", "operation canceled"},
-+	{159, "ENOMEDIUM", "no medium found"},
-+	{160, "EMEDIUMTYPE", "wrong medium type"},
-+	{161, "ENOKEY", "required key not available"},
-+	{162, "EKEYEXPIRED", "key has expired"},
-+	{163, "EKEYREVOKED", "key has been revoked"},
-+	{164, "EKEYREJECTED", "key was rejected by service"},
-+	{165, "EOWNERDEAD", "owner died"},
-+	{166, "ENOTRECOVERABLE", "state not recoverable"},
-+	{167, "ERFKILL", "operation not possible due to RF-kill"},
-+	{168, "EHWPOISON", "memory page has hardware error"},
-+	{1133, "EDQUOT", "disk quota exceeded"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "user defined signal 1",
--	17: "user defined signal 2",
--	18: "child exited",
--	19: "power failure",
--	20: "window changed",
--	21: "urgent I/O condition",
--	22: "I/O possible",
--	23: "stopped (signal)",
--	24: "stopped",
--	25: "continued",
--	26: "stopped (tty input)",
--	27: "stopped (tty output)",
--	28: "virtual timer expired",
--	29: "profiling timer expired",
--	30: "CPU time limit exceeded",
--	31: "file size limit exceeded",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGUSR1", "user defined signal 1"},
-+	{17, "SIGUSR2", "user defined signal 2"},
-+	{18, "SIGCHLD", "child exited"},
-+	{19, "SIGPWR", "power failure"},
-+	{20, "SIGWINCH", "window changed"},
-+	{21, "SIGURG", "urgent I/O condition"},
-+	{22, "SIGIO", "I/O possible"},
-+	{23, "SIGSTOP", "stopped (signal)"},
-+	{24, "SIGTSTP", "stopped"},
-+	{25, "SIGCONT", "continued"},
-+	{26, "SIGTTIN", "stopped (tty input)"},
-+	{27, "SIGTTOU", "stopped (tty output)"},
-+	{28, "SIGVTALRM", "virtual timer expired"},
-+	{29, "SIGPROF", "profiling timer expired"},
-+	{30, "SIGXCPU", "CPU time limit exceeded"},
-+	{31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-index 4148f277..2346dc55 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-@@ -3,7 +3,7 @@
- 
- // +build mips64,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40081270
--	BLKBSZSET                            = 0x80081271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40081272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x80
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x2000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0xe
--	F_GETLK64                            = 0xe
--	F_GETOWN                             = 0x17
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0x6
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0x7
--	F_SETOWN                             = 0x18
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x100
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x80
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x800
--	MAP_ANONYMOUS                        = 0x800
--	MAP_DENYWRITE                        = 0x2000
--	MAP_EXECUTABLE                       = 0x4000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x1000
--	MAP_HUGETLB                          = 0x80000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x8000
--	MAP_NONBLOCK                         = 0x20000
--	MAP_NORESERVE                        = 0x400
--	MAP_POPULATE                         = 0x10000
--	MAP_PRIVATE                          = 0x2
--	MAP_RENAME                           = 0x800
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x40000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x8
--	O_ASYNC                              = 0x1000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x100
--	O_DIRECT                             = 0x8000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x10
--	O_EXCL                               = 0x400
--	O_FSYNC                              = 0x4010
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x80
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x800
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x80
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x4010
--	O_SYNC                               = 0x4010
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_GET_THREAD_AREA_3264          = 0xc4
--	PTRACE_GET_WATCH_REGS                = 0xd0
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKDATA_3264                 = 0xc1
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKTEXT_3264                 = 0xc0
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKEDATA_3264                 = 0xc3
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKETEXT_3264                 = 0xc2
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SET_WATCH_REGS                = 0xd1
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x6
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x9
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x5
--	RLIMIT_NPROC                         = 0x8
--	RLIMIT_RSS                           = 0x7
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x40047307
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x40047309
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x467f
--	SIOCOUTQ                             = 0x7472
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x80047308
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x1
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x80
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x2
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0xffff
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1009
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x20
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x1029
--	SO_DONTROUTE                         = 0x10
--	SO_ERROR                             = 0x1007
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x8
--	SO_LINGER                            = 0x80
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0x100
--	SO_PASSCRED                          = 0x11
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x12
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1e
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x1028
--	SO_RCVBUF                            = 0x1002
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x1004
--	SO_RCVTIMEO                          = 0x1006
--	SO_REUSEADDR                         = 0x4
--	SO_REUSEPORT                         = 0x200
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x1001
--	SO_SNDBUFFORCE                       = 0x1f
--	SO_SNDLOWAT                          = 0x1003
--	SO_SNDTIMEO                          = 0x1005
--	SO_STYLE                             = 0x1008
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x1008
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x5407
--	TCGETA                               = 0x5401
--	TCGETS                               = 0x540d
--	TCGETS2                              = 0x4030542a
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x5410
--	TCSBRK                               = 0x5405
--	TCSBRKP                              = 0x5486
--	TCSETA                               = 0x5402
--	TCSETAF                              = 0x5404
--	TCSETAW                              = 0x5403
--	TCSETS                               = 0x540e
--	TCSETS2                              = 0x8030542b
--	TCSETSF                              = 0x5410
--	TCSETSF2                             = 0x8030542d
--	TCSETSW                              = 0x540f
--	TCSETSW2                             = 0x8030542c
--	TCXONC                               = 0x5406
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x80047478
--	TIOCEXCL                             = 0x740d
--	TIOCGDEV                             = 0x40045432
--	TIOCGETD                             = 0x7400
--	TIOCGETP                             = 0x7408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x5492
--	TIOCGLCKTRMIOS                       = 0x548b
--	TIOCGLTC                             = 0x7474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x4020542e
--	TIOCGSERIAL                          = 0x5484
--	TIOCGSID                             = 0x7416
--	TIOCGSOFTCAR                         = 0x5481
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x467f
--	TIOCLINUX                            = 0x5483
--	TIOCMBIC                             = 0x741c
--	TIOCMBIS                             = 0x741b
--	TIOCMGET                             = 0x741d
--	TIOCMIWAIT                           = 0x5491
--	TIOCMSET                             = 0x741a
--	TIOCM_CAR                            = 0x100
--	TIOCM_CD                             = 0x100
--	TIOCM_CTS                            = 0x40
--	TIOCM_DSR                            = 0x400
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x200
--	TIOCM_RNG                            = 0x200
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x20
--	TIOCM_ST                             = 0x10
--	TIOCNOTTY                            = 0x5471
--	TIOCNXCL                             = 0x740e
--	TIOCOUTQ                             = 0x7472
--	TIOCPKT                              = 0x5470
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x5480
--	TIOCSERCONFIG                        = 0x5488
--	TIOCSERGETLSR                        = 0x548e
--	TIOCSERGETMULTI                      = 0x548f
--	TIOCSERGSTRUCT                       = 0x548d
--	TIOCSERGWILD                         = 0x5489
--	TIOCSERSETMULTI                      = 0x5490
--	TIOCSERSWILD                         = 0x548a
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x7401
--	TIOCSETN                             = 0x740a
--	TIOCSETP                             = 0x7409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x548c
--	TIOCSLTC                             = 0x7475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0xc020542f
--	TIOCSSERIAL                          = 0x5485
--	TIOCSSOFTCAR                         = 0x5482
--	TIOCSTI                              = 0x5472
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x8000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x801054d5
--	TUNDETACHFILTER                      = 0x801054d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x401054db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x10
--	VEOL                                 = 0x11
--	VEOL2                                = 0x6
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x4
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VSWTCH                               = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x40081270
-+	BLKBSZSET                        = 0x80081271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40081272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x80
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x2000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0xe
-+	F_GETLK64                        = 0xe
-+	F_GETOWN                         = 0x17
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x18
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x100
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x80
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x800
-+	MAP_ANONYMOUS                    = 0x800
-+	MAP_DENYWRITE                    = 0x2000
-+	MAP_EXECUTABLE                   = 0x4000
-+	MAP_GROWSDOWN                    = 0x1000
-+	MAP_HUGETLB                      = 0x80000
-+	MAP_LOCKED                       = 0x8000
-+	MAP_NONBLOCK                     = 0x20000
-+	MAP_NORESERVE                    = 0x400
-+	MAP_POPULATE                     = 0x10000
-+	MAP_RENAME                       = 0x800
-+	MAP_STACK                        = 0x40000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x8
-+	O_ASYNC                          = 0x1000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x100
-+	O_DIRECT                         = 0x8000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x10
-+	O_EXCL                           = 0x400
-+	O_FSYNC                          = 0x4010
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x80
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x800
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x80
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x4010
-+	O_SYNC                           = 0x4010
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4010743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80107446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x8010744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80107447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_GET_THREAD_AREA_3264      = 0xc4
-+	PTRACE_GET_WATCH_REGS            = 0xd0
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_PEEKDATA_3264             = 0xc1
-+	PTRACE_PEEKTEXT_3264             = 0xc0
-+	PTRACE_POKEDATA_3264             = 0xc3
-+	PTRACE_POKETEXT_3264             = 0xc2
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SET_WATCH_REGS            = 0xd1
-+	RLIMIT_AS                        = 0x6
-+	RLIMIT_MEMLOCK                   = 0x9
-+	RLIMIT_NOFILE                    = 0x5
-+	RLIMIT_NPROC                     = 0x8
-+	RLIMIT_RSS                       = 0x7
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4008700d
-+	RTC_EPOCH_SET                    = 0x8008700e
-+	RTC_IRQP_READ                    = 0x4008700b
-+	RTC_IRQP_SET                     = 0x8008700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x40207011
-+	RTC_PLL_SET                      = 0x80207012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x80
-+	SIOCATMARK                       = 0x40047307
-+	SIOCGPGRP                        = 0x40047309
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x467f
-+	SIOCOUTQ                         = 0x7472
-+	SIOCSPGRP                        = 0x80047308
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x1
-+	SOCK_NONBLOCK                    = 0x80
-+	SOCK_STREAM                      = 0x2
-+	SOL_SOCKET                       = 0xffff
-+	SO_ACCEPTCONN                    = 0x1009
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x20
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x1029
-+	SO_DONTROUTE                     = 0x10
-+	SO_ERROR                         = 0x1007
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x8
-+	SO_LINGER                        = 0x80
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0x100
-+	SO_PASSCRED                      = 0x11
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x12
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1e
-+	SO_PROTOCOL                      = 0x1028
-+	SO_RCVBUF                        = 0x1002
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x1004
-+	SO_RCVTIMEO                      = 0x1006
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x1006
-+	SO_REUSEADDR                     = 0x4
-+	SO_REUSEPORT                     = 0x200
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x1001
-+	SO_SNDBUFFORCE                   = 0x1f
-+	SO_SNDLOWAT                      = 0x1003
-+	SO_SNDTIMEO                      = 0x1005
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x1005
-+	SO_STYLE                         = 0x1008
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x1008
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x5407
-+	TCGETA                           = 0x5401
-+	TCGETS                           = 0x540d
-+	TCGETS2                          = 0x4030542a
-+	TCSAFLUSH                        = 0x5410
-+	TCSBRK                           = 0x5405
-+	TCSBRKP                          = 0x5486
-+	TCSETA                           = 0x5402
-+	TCSETAF                          = 0x5404
-+	TCSETAW                          = 0x5403
-+	TCSETS                           = 0x540e
-+	TCSETS2                          = 0x8030542b
-+	TCSETSF                          = 0x5410
-+	TCSETSF2                         = 0x8030542d
-+	TCSETSW                          = 0x540f
-+	TCSETSW2                         = 0x8030542c
-+	TCXONC                           = 0x5406
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x80047478
-+	TIOCEXCL                         = 0x740d
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETD                         = 0x7400
-+	TIOCGETP                         = 0x7408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x5492
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x548b
-+	TIOCGLTC                         = 0x7474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x4020542e
-+	TIOCGSERIAL                      = 0x5484
-+	TIOCGSID                         = 0x7416
-+	TIOCGSOFTCAR                     = 0x5481
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x467f
-+	TIOCLINUX                        = 0x5483
-+	TIOCMBIC                         = 0x741c
-+	TIOCMBIS                         = 0x741b
-+	TIOCMGET                         = 0x741d
-+	TIOCMIWAIT                       = 0x5491
-+	TIOCMSET                         = 0x741a
-+	TIOCM_CAR                        = 0x100
-+	TIOCM_CD                         = 0x100
-+	TIOCM_CTS                        = 0x40
-+	TIOCM_DSR                        = 0x400
-+	TIOCM_RI                         = 0x200
-+	TIOCM_RNG                        = 0x200
-+	TIOCM_SR                         = 0x20
-+	TIOCM_ST                         = 0x10
-+	TIOCNOTTY                        = 0x5471
-+	TIOCNXCL                         = 0x740e
-+	TIOCOUTQ                         = 0x7472
-+	TIOCPKT                          = 0x5470
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x5480
-+	TIOCSERCONFIG                    = 0x5488
-+	TIOCSERGETLSR                    = 0x548e
-+	TIOCSERGETMULTI                  = 0x548f
-+	TIOCSERGSTRUCT                   = 0x548d
-+	TIOCSERGWILD                     = 0x5489
-+	TIOCSERSETMULTI                  = 0x5490
-+	TIOCSERSWILD                     = 0x548a
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x7401
-+	TIOCSETN                         = 0x740a
-+	TIOCSETP                         = 0x7409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x548c
-+	TIOCSLTC                         = 0x7475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0xc020542f
-+	TIOCSSERIAL                      = 0x5485
-+	TIOCSSOFTCAR                     = 0x5482
-+	TIOCSTI                          = 0x5472
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x8000
-+	TUNATTACHFILTER                  = 0x801054d5
-+	TUNDETACHFILTER                  = 0x801054d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x401054db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x10
-+	VEOL                             = 0x11
-+	VEOL2                            = 0x6
-+	VMIN                             = 0x4
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VSWTCH                           = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x7d)
- 	EADDRNOTAVAIL   = syscall.Errno(0x7e)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x7c)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x95)
- 	EBADE           = syscall.Errno(0x32)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x51)
- 	EBADMSG         = syscall.Errno(0x4d)
- 	EBADR           = syscall.Errno(0x33)
- 	EBADRQC         = syscall.Errno(0x36)
- 	EBADSLT         = syscall.Errno(0x37)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x9e)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x25)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- 	EDEADLK         = syscall.Errno(0x2d)
- 	EDEADLOCK       = syscall.Errno(0x38)
- 	EDESTADDRREQ    = syscall.Errno(0x60)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x46d)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x93)
- 	EHOSTUNREACH    = syscall.Errno(0x94)
- 	EHWPOISON       = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- 	EILSEQ          = syscall.Errno(0x58)
- 	EINIT           = syscall.Errno(0x8d)
- 	EINPROGRESS     = syscall.Errno(0x96)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x85)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x8b)
- 	EKEYEXPIRED     = syscall.Errno(0xa2)
- 	EKEYREJECTED    = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x29)
- 	ELOOP           = syscall.Errno(0x5a)
- 	EMEDIUMTYPE     = syscall.Errno(0xa0)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x61)
- 	EMULTIHOP       = syscall.Errno(0x4a)
- 	ENAMETOOLONG    = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- 	ENETDOWN        = syscall.Errno(0x7f)
- 	ENETRESET       = syscall.Errno(0x81)
- 	ENETUNREACH     = syscall.Errno(0x80)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x35)
- 	ENOBUFS         = syscall.Errno(0x84)
- 	ENOCSI          = syscall.Errno(0x2b)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0xa1)
- 	ENOLCK          = syscall.Errno(0x2e)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x9f)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x23)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x63)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x59)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x86)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x5d)
- 	ENOTNAM         = syscall.Errno(0x89)
- 	ENOTRECOVERABLE = syscall.Errno(0xa6)
- 	ENOTSOCK        = syscall.Errno(0x5f)
- 	ENOTSUP         = syscall.Errno(0x7a)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x50)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x7a)
- 	EOVERFLOW       = syscall.Errno(0x4f)
- 	EOWNERDEAD      = syscall.Errno(0xa5)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x7b)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x78)
- 	EPROTOTYPE      = syscall.Errno(0x62)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x52)
- 	EREMDEV         = syscall.Errno(0x8e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x8c)
- 	ERESTART        = syscall.Errno(0x5b)
- 	ERFKILL         = syscall.Errno(0xa7)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x8f)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x79)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x97)
- 	ESTRPIPE        = syscall.Errno(0x5c)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x91)
- 	ETOOMANYREFS    = syscall.Errno(0x90)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x87)
- 	EUNATCH         = syscall.Errno(0x2a)
- 	EUSERS          = syscall.Errno(0x5e)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x34)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0xa)
- 	SIGCHLD   = syscall.Signal(0x12)
- 	SIGCLD    = syscall.Signal(0x12)
- 	SIGCONT   = syscall.Signal(0x19)
- 	SIGEMT    = syscall.Signal(0x7)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x16)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x16)
- 	SIGPROF   = syscall.Signal(0x1d)
- 	SIGPWR    = syscall.Signal(0x13)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTOP   = syscall.Signal(0x17)
- 	SIGSYS    = syscall.Signal(0xc)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x18)
- 	SIGTTIN   = syscall.Signal(0x1a)
- 	SIGTTOU   = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:    "operation not permitted",
--	2:    "no such file or directory",
--	3:    "no such process",
--	4:    "interrupted system call",
--	5:    "input/output error",
--	6:    "no such device or address",
--	7:    "argument list too long",
--	8:    "exec format error",
--	9:    "bad file descriptor",
--	10:   "no child processes",
--	11:   "resource temporarily unavailable",
--	12:   "cannot allocate memory",
--	13:   "permission denied",
--	14:   "bad address",
--	15:   "block device required",
--	16:   "device or resource busy",
--	17:   "file exists",
--	18:   "invalid cross-device link",
--	19:   "no such device",
--	20:   "not a directory",
--	21:   "is a directory",
--	22:   "invalid argument",
--	23:   "too many open files in system",
--	24:   "too many open files",
--	25:   "inappropriate ioctl for device",
--	26:   "text file busy",
--	27:   "file too large",
--	28:   "no space left on device",
--	29:   "illegal seek",
--	30:   "read-only file system",
--	31:   "too many links",
--	32:   "broken pipe",
--	33:   "numerical argument out of domain",
--	34:   "numerical result out of range",
--	35:   "no message of desired type",
--	36:   "identifier removed",
--	37:   "channel number out of range",
--	38:   "level 2 not synchronized",
--	39:   "level 3 halted",
--	40:   "level 3 reset",
--	41:   "link number out of range",
--	42:   "protocol driver not attached",
--	43:   "no CSI structure available",
--	44:   "level 2 halted",
--	45:   "resource deadlock avoided",
--	46:   "no locks available",
--	50:   "invalid exchange",
--	51:   "invalid request descriptor",
--	52:   "exchange full",
--	53:   "no anode",
--	54:   "invalid request code",
--	55:   "invalid slot",
--	56:   "file locking deadlock error",
--	59:   "bad font file format",
--	60:   "device not a stream",
--	61:   "no data available",
--	62:   "timer expired",
--	63:   "out of streams resources",
--	64:   "machine is not on the network",
--	65:   "package not installed",
--	66:   "object is remote",
--	67:   "link has been severed",
--	68:   "advertise error",
--	69:   "srmount error",
--	70:   "communication error on send",
--	71:   "protocol error",
--	73:   "RFS specific error",
--	74:   "multihop attempted",
--	77:   "bad message",
--	78:   "file name too long",
--	79:   "value too large for defined data type",
--	80:   "name not unique on network",
--	81:   "file descriptor in bad state",
--	82:   "remote address changed",
--	83:   "can not access a needed shared library",
--	84:   "accessing a corrupted shared library",
--	85:   ".lib section in a.out corrupted",
--	86:   "attempting to link in too many shared libraries",
--	87:   "cannot exec a shared library directly",
--	88:   "invalid or incomplete multibyte or wide character",
--	89:   "function not implemented",
--	90:   "too many levels of symbolic links",
--	91:   "interrupted system call should be restarted",
--	92:   "streams pipe error",
--	93:   "directory not empty",
--	94:   "too many users",
--	95:   "socket operation on non-socket",
--	96:   "destination address required",
--	97:   "message too long",
--	98:   "protocol wrong type for socket",
--	99:   "protocol not available",
--	120:  "protocol not supported",
--	121:  "socket type not supported",
--	122:  "operation not supported",
--	123:  "protocol family not supported",
--	124:  "address family not supported by protocol",
--	125:  "address already in use",
--	126:  "cannot assign requested address",
--	127:  "network is down",
--	128:  "network is unreachable",
--	129:  "network dropped connection on reset",
--	130:  "software caused connection abort",
--	131:  "connection reset by peer",
--	132:  "no buffer space available",
--	133:  "transport endpoint is already connected",
--	134:  "transport endpoint is not connected",
--	135:  "structure needs cleaning",
--	137:  "not a XENIX named type file",
--	138:  "no XENIX semaphores available",
--	139:  "is a named type file",
--	140:  "remote I/O error",
--	141:  "unknown error 141",
--	142:  "unknown error 142",
--	143:  "cannot send after transport endpoint shutdown",
--	144:  "too many references: cannot splice",
--	145:  "connection timed out",
--	146:  "connection refused",
--	147:  "host is down",
--	148:  "no route to host",
--	149:  "operation already in progress",
--	150:  "operation now in progress",
--	151:  "stale file handle",
--	158:  "operation canceled",
--	159:  "no medium found",
--	160:  "wrong medium type",
--	161:  "required key not available",
--	162:  "key has expired",
--	163:  "key has been revoked",
--	164:  "key was rejected by service",
--	165:  "owner died",
--	166:  "state not recoverable",
--	167:  "operation not possible due to RF-kill",
--	168:  "memory page has hardware error",
--	1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "resource deadlock avoided"},
-+	{46, "ENOLCK", "no locks available"},
-+	{50, "EBADE", "invalid exchange"},
-+	{51, "EBADR", "invalid request descriptor"},
-+	{52, "EXFULL", "exchange full"},
-+	{53, "ENOANO", "no anode"},
-+	{54, "EBADRQC", "invalid request code"},
-+	{55, "EBADSLT", "invalid slot"},
-+	{56, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EMULTIHOP", "multihop attempted"},
-+	{77, "EBADMSG", "bad message"},
-+	{78, "ENAMETOOLONG", "file name too long"},
-+	{79, "EOVERFLOW", "value too large for defined data type"},
-+	{80, "ENOTUNIQ", "name not unique on network"},
-+	{81, "EBADFD", "file descriptor in bad state"},
-+	{82, "EREMCHG", "remote address changed"},
-+	{83, "ELIBACC", "can not access a needed shared library"},
-+	{84, "ELIBBAD", "accessing a corrupted shared library"},
-+	{85, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{87, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{89, "ENOSYS", "function not implemented"},
-+	{90, "ELOOP", "too many levels of symbolic links"},
-+	{91, "ERESTART", "interrupted system call should be restarted"},
-+	{92, "ESTRPIPE", "streams pipe error"},
-+	{93, "ENOTEMPTY", "directory not empty"},
-+	{94, "EUSERS", "too many users"},
-+	{95, "ENOTSOCK", "socket operation on non-socket"},
-+	{96, "EDESTADDRREQ", "destination address required"},
-+	{97, "EMSGSIZE", "message too long"},
-+	{98, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{99, "ENOPROTOOPT", "protocol not available"},
-+	{120, "EPROTONOSUPPORT", "protocol not supported"},
-+	{121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{122, "ENOTSUP", "operation not supported"},
-+	{123, "EPFNOSUPPORT", "protocol family not supported"},
-+	{124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{125, "EADDRINUSE", "address already in use"},
-+	{126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{127, "ENETDOWN", "network is down"},
-+	{128, "ENETUNREACH", "network is unreachable"},
-+	{129, "ENETRESET", "network dropped connection on reset"},
-+	{130, "ECONNABORTED", "software caused connection abort"},
-+	{131, "ECONNRESET", "connection reset by peer"},
-+	{132, "ENOBUFS", "no buffer space available"},
-+	{133, "EISCONN", "transport endpoint is already connected"},
-+	{134, "ENOTCONN", "transport endpoint is not connected"},
-+	{135, "EUCLEAN", "structure needs cleaning"},
-+	{137, "ENOTNAM", "not a XENIX named type file"},
-+	{138, "ENAVAIL", "no XENIX semaphores available"},
-+	{139, "EISNAM", "is a named type file"},
-+	{140, "EREMOTEIO", "remote I/O error"},
-+	{141, "EINIT", "unknown error 141"},
-+	{142, "EREMDEV", "unknown error 142"},
-+	{143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{144, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{145, "ETIMEDOUT", "connection timed out"},
-+	{146, "ECONNREFUSED", "connection refused"},
-+	{147, "EHOSTDOWN", "host is down"},
-+	{148, "EHOSTUNREACH", "no route to host"},
-+	{149, "EALREADY", "operation already in progress"},
-+	{150, "EINPROGRESS", "operation now in progress"},
-+	{151, "ESTALE", "stale file handle"},
-+	{158, "ECANCELED", "operation canceled"},
-+	{159, "ENOMEDIUM", "no medium found"},
-+	{160, "EMEDIUMTYPE", "wrong medium type"},
-+	{161, "ENOKEY", "required key not available"},
-+	{162, "EKEYEXPIRED", "key has expired"},
-+	{163, "EKEYREVOKED", "key has been revoked"},
-+	{164, "EKEYREJECTED", "key was rejected by service"},
-+	{165, "EOWNERDEAD", "owner died"},
-+	{166, "ENOTRECOVERABLE", "state not recoverable"},
-+	{167, "ERFKILL", "operation not possible due to RF-kill"},
-+	{168, "EHWPOISON", "memory page has hardware error"},
-+	{1133, "EDQUOT", "disk quota exceeded"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "user defined signal 1",
--	17: "user defined signal 2",
--	18: "child exited",
--	19: "power failure",
--	20: "window changed",
--	21: "urgent I/O condition",
--	22: "I/O possible",
--	23: "stopped (signal)",
--	24: "stopped",
--	25: "continued",
--	26: "stopped (tty input)",
--	27: "stopped (tty output)",
--	28: "virtual timer expired",
--	29: "profiling timer expired",
--	30: "CPU time limit exceeded",
--	31: "file size limit exceeded",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGUSR1", "user defined signal 1"},
-+	{17, "SIGUSR2", "user defined signal 2"},
-+	{18, "SIGCHLD", "child exited"},
-+	{19, "SIGPWR", "power failure"},
-+	{20, "SIGWINCH", "window changed"},
-+	{21, "SIGURG", "urgent I/O condition"},
-+	{22, "SIGIO", "I/O possible"},
-+	{23, "SIGSTOP", "stopped (signal)"},
-+	{24, "SIGTSTP", "stopped"},
-+	{25, "SIGCONT", "continued"},
-+	{26, "SIGTTIN", "stopped (tty input)"},
-+	{27, "SIGTTOU", "stopped (tty output)"},
-+	{28, "SIGVTALRM", "virtual timer expired"},
-+	{29, "SIGPROF", "profiling timer expired"},
-+	{30, "SIGXCPU", "CPU time limit exceeded"},
-+	{31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-index 2310beeb..e758b61e 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-@@ -3,7 +3,7 @@
- 
- // +build mips64le,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40081270
--	BLKBSZSET                            = 0x80081271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40081272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x80
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x2000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0xe
--	F_GETLK64                            = 0xe
--	F_GETOWN                             = 0x17
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0x6
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0x7
--	F_SETOWN                             = 0x18
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x100
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x80
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x800
--	MAP_ANONYMOUS                        = 0x800
--	MAP_DENYWRITE                        = 0x2000
--	MAP_EXECUTABLE                       = 0x4000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x1000
--	MAP_HUGETLB                          = 0x80000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x8000
--	MAP_NONBLOCK                         = 0x20000
--	MAP_NORESERVE                        = 0x400
--	MAP_POPULATE                         = 0x10000
--	MAP_PRIVATE                          = 0x2
--	MAP_RENAME                           = 0x800
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x40000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x8
--	O_ASYNC                              = 0x1000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x100
--	O_DIRECT                             = 0x8000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x10
--	O_EXCL                               = 0x400
--	O_FSYNC                              = 0x4010
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x80
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x800
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x80
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x4010
--	O_SYNC                               = 0x4010
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_GET_THREAD_AREA_3264          = 0xc4
--	PTRACE_GET_WATCH_REGS                = 0xd0
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKDATA_3264                 = 0xc1
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKTEXT_3264                 = 0xc0
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKEDATA_3264                 = 0xc3
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKETEXT_3264                 = 0xc2
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SET_WATCH_REGS                = 0xd1
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x6
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x9
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x5
--	RLIMIT_NPROC                         = 0x8
--	RLIMIT_RSS                           = 0x7
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x40047307
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x40047309
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x467f
--	SIOCOUTQ                             = 0x7472
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x80047308
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x1
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x80
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x2
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0xffff
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1009
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x20
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x1029
--	SO_DONTROUTE                         = 0x10
--	SO_ERROR                             = 0x1007
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x8
--	SO_LINGER                            = 0x80
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0x100
--	SO_PASSCRED                          = 0x11
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x12
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1e
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x1028
--	SO_RCVBUF                            = 0x1002
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x1004
--	SO_RCVTIMEO                          = 0x1006
--	SO_REUSEADDR                         = 0x4
--	SO_REUSEPORT                         = 0x200
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x1001
--	SO_SNDBUFFORCE                       = 0x1f
--	SO_SNDLOWAT                          = 0x1003
--	SO_SNDTIMEO                          = 0x1005
--	SO_STYLE                             = 0x1008
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x1008
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x5407
--	TCGETA                               = 0x5401
--	TCGETS                               = 0x540d
--	TCGETS2                              = 0x4030542a
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x5410
--	TCSBRK                               = 0x5405
--	TCSBRKP                              = 0x5486
--	TCSETA                               = 0x5402
--	TCSETAF                              = 0x5404
--	TCSETAW                              = 0x5403
--	TCSETS                               = 0x540e
--	TCSETS2                              = 0x8030542b
--	TCSETSF                              = 0x5410
--	TCSETSF2                             = 0x8030542d
--	TCSETSW                              = 0x540f
--	TCSETSW2                             = 0x8030542c
--	TCXONC                               = 0x5406
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x80047478
--	TIOCEXCL                             = 0x740d
--	TIOCGDEV                             = 0x40045432
--	TIOCGETD                             = 0x7400
--	TIOCGETP                             = 0x7408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x5492
--	TIOCGLCKTRMIOS                       = 0x548b
--	TIOCGLTC                             = 0x7474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x4020542e
--	TIOCGSERIAL                          = 0x5484
--	TIOCGSID                             = 0x7416
--	TIOCGSOFTCAR                         = 0x5481
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x467f
--	TIOCLINUX                            = 0x5483
--	TIOCMBIC                             = 0x741c
--	TIOCMBIS                             = 0x741b
--	TIOCMGET                             = 0x741d
--	TIOCMIWAIT                           = 0x5491
--	TIOCMSET                             = 0x741a
--	TIOCM_CAR                            = 0x100
--	TIOCM_CD                             = 0x100
--	TIOCM_CTS                            = 0x40
--	TIOCM_DSR                            = 0x400
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x200
--	TIOCM_RNG                            = 0x200
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x20
--	TIOCM_ST                             = 0x10
--	TIOCNOTTY                            = 0x5471
--	TIOCNXCL                             = 0x740e
--	TIOCOUTQ                             = 0x7472
--	TIOCPKT                              = 0x5470
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x5480
--	TIOCSERCONFIG                        = 0x5488
--	TIOCSERGETLSR                        = 0x548e
--	TIOCSERGETMULTI                      = 0x548f
--	TIOCSERGSTRUCT                       = 0x548d
--	TIOCSERGWILD                         = 0x5489
--	TIOCSERSETMULTI                      = 0x5490
--	TIOCSERSWILD                         = 0x548a
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x7401
--	TIOCSETN                             = 0x740a
--	TIOCSETP                             = 0x7409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x548c
--	TIOCSLTC                             = 0x7475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0xc020542f
--	TIOCSSERIAL                          = 0x5485
--	TIOCSSOFTCAR                         = 0x5482
--	TIOCSTI                              = 0x5472
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x8000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x801054d5
--	TUNDETACHFILTER                      = 0x801054d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x401054db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x10
--	VEOL                                 = 0x11
--	VEOL2                                = 0x6
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x4
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VSWTCH                               = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x40081270
-+	BLKBSZSET                        = 0x80081271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40081272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x80
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x2000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0xe
-+	F_GETLK64                        = 0xe
-+	F_GETOWN                         = 0x17
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x18
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x100
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x80
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x800
-+	MAP_ANONYMOUS                    = 0x800
-+	MAP_DENYWRITE                    = 0x2000
-+	MAP_EXECUTABLE                   = 0x4000
-+	MAP_GROWSDOWN                    = 0x1000
-+	MAP_HUGETLB                      = 0x80000
-+	MAP_LOCKED                       = 0x8000
-+	MAP_NONBLOCK                     = 0x20000
-+	MAP_NORESERVE                    = 0x400
-+	MAP_POPULATE                     = 0x10000
-+	MAP_RENAME                       = 0x800
-+	MAP_STACK                        = 0x40000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x8
-+	O_ASYNC                          = 0x1000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x100
-+	O_DIRECT                         = 0x8000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x10
-+	O_EXCL                           = 0x400
-+	O_FSYNC                          = 0x4010
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x80
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x800
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x80
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x4010
-+	O_SYNC                           = 0x4010
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4010743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80107446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x8010744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80107447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_GET_THREAD_AREA_3264      = 0xc4
-+	PTRACE_GET_WATCH_REGS            = 0xd0
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_PEEKDATA_3264             = 0xc1
-+	PTRACE_PEEKTEXT_3264             = 0xc0
-+	PTRACE_POKEDATA_3264             = 0xc3
-+	PTRACE_POKETEXT_3264             = 0xc2
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SET_WATCH_REGS            = 0xd1
-+	RLIMIT_AS                        = 0x6
-+	RLIMIT_MEMLOCK                   = 0x9
-+	RLIMIT_NOFILE                    = 0x5
-+	RLIMIT_NPROC                     = 0x8
-+	RLIMIT_RSS                       = 0x7
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4008700d
-+	RTC_EPOCH_SET                    = 0x8008700e
-+	RTC_IRQP_READ                    = 0x4008700b
-+	RTC_IRQP_SET                     = 0x8008700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x40207011
-+	RTC_PLL_SET                      = 0x80207012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x80
-+	SIOCATMARK                       = 0x40047307
-+	SIOCGPGRP                        = 0x40047309
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x467f
-+	SIOCOUTQ                         = 0x7472
-+	SIOCSPGRP                        = 0x80047308
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x1
-+	SOCK_NONBLOCK                    = 0x80
-+	SOCK_STREAM                      = 0x2
-+	SOL_SOCKET                       = 0xffff
-+	SO_ACCEPTCONN                    = 0x1009
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x20
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x1029
-+	SO_DONTROUTE                     = 0x10
-+	SO_ERROR                         = 0x1007
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x8
-+	SO_LINGER                        = 0x80
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0x100
-+	SO_PASSCRED                      = 0x11
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x12
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1e
-+	SO_PROTOCOL                      = 0x1028
-+	SO_RCVBUF                        = 0x1002
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x1004
-+	SO_RCVTIMEO                      = 0x1006
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x1006
-+	SO_REUSEADDR                     = 0x4
-+	SO_REUSEPORT                     = 0x200
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x1001
-+	SO_SNDBUFFORCE                   = 0x1f
-+	SO_SNDLOWAT                      = 0x1003
-+	SO_SNDTIMEO                      = 0x1005
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x1005
-+	SO_STYLE                         = 0x1008
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x1008
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x5407
-+	TCGETA                           = 0x5401
-+	TCGETS                           = 0x540d
-+	TCGETS2                          = 0x4030542a
-+	TCSAFLUSH                        = 0x5410
-+	TCSBRK                           = 0x5405
-+	TCSBRKP                          = 0x5486
-+	TCSETA                           = 0x5402
-+	TCSETAF                          = 0x5404
-+	TCSETAW                          = 0x5403
-+	TCSETS                           = 0x540e
-+	TCSETS2                          = 0x8030542b
-+	TCSETSF                          = 0x5410
-+	TCSETSF2                         = 0x8030542d
-+	TCSETSW                          = 0x540f
-+	TCSETSW2                         = 0x8030542c
-+	TCXONC                           = 0x5406
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x80047478
-+	TIOCEXCL                         = 0x740d
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETD                         = 0x7400
-+	TIOCGETP                         = 0x7408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x5492
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x548b
-+	TIOCGLTC                         = 0x7474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x4020542e
-+	TIOCGSERIAL                      = 0x5484
-+	TIOCGSID                         = 0x7416
-+	TIOCGSOFTCAR                     = 0x5481
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x467f
-+	TIOCLINUX                        = 0x5483
-+	TIOCMBIC                         = 0x741c
-+	TIOCMBIS                         = 0x741b
-+	TIOCMGET                         = 0x741d
-+	TIOCMIWAIT                       = 0x5491
-+	TIOCMSET                         = 0x741a
-+	TIOCM_CAR                        = 0x100
-+	TIOCM_CD                         = 0x100
-+	TIOCM_CTS                        = 0x40
-+	TIOCM_DSR                        = 0x400
-+	TIOCM_RI                         = 0x200
-+	TIOCM_RNG                        = 0x200
-+	TIOCM_SR                         = 0x20
-+	TIOCM_ST                         = 0x10
-+	TIOCNOTTY                        = 0x5471
-+	TIOCNXCL                         = 0x740e
-+	TIOCOUTQ                         = 0x7472
-+	TIOCPKT                          = 0x5470
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x5480
-+	TIOCSERCONFIG                    = 0x5488
-+	TIOCSERGETLSR                    = 0x548e
-+	TIOCSERGETMULTI                  = 0x548f
-+	TIOCSERGSTRUCT                   = 0x548d
-+	TIOCSERGWILD                     = 0x5489
-+	TIOCSERSETMULTI                  = 0x5490
-+	TIOCSERSWILD                     = 0x548a
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x7401
-+	TIOCSETN                         = 0x740a
-+	TIOCSETP                         = 0x7409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x548c
-+	TIOCSLTC                         = 0x7475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0xc020542f
-+	TIOCSSERIAL                      = 0x5485
-+	TIOCSSOFTCAR                     = 0x5482
-+	TIOCSTI                          = 0x5472
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x8000
-+	TUNATTACHFILTER                  = 0x801054d5
-+	TUNDETACHFILTER                  = 0x801054d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x401054db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x10
-+	VEOL                             = 0x11
-+	VEOL2                            = 0x6
-+	VMIN                             = 0x4
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VSWTCH                           = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x7d)
- 	EADDRNOTAVAIL   = syscall.Errno(0x7e)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x7c)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x95)
- 	EBADE           = syscall.Errno(0x32)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x51)
- 	EBADMSG         = syscall.Errno(0x4d)
- 	EBADR           = syscall.Errno(0x33)
- 	EBADRQC         = syscall.Errno(0x36)
- 	EBADSLT         = syscall.Errno(0x37)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x9e)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x25)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- 	EDEADLK         = syscall.Errno(0x2d)
- 	EDEADLOCK       = syscall.Errno(0x38)
- 	EDESTADDRREQ    = syscall.Errno(0x60)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x46d)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x93)
- 	EHOSTUNREACH    = syscall.Errno(0x94)
- 	EHWPOISON       = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- 	EILSEQ          = syscall.Errno(0x58)
- 	EINIT           = syscall.Errno(0x8d)
- 	EINPROGRESS     = syscall.Errno(0x96)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x85)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x8b)
- 	EKEYEXPIRED     = syscall.Errno(0xa2)
- 	EKEYREJECTED    = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x29)
- 	ELOOP           = syscall.Errno(0x5a)
- 	EMEDIUMTYPE     = syscall.Errno(0xa0)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x61)
- 	EMULTIHOP       = syscall.Errno(0x4a)
- 	ENAMETOOLONG    = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- 	ENETDOWN        = syscall.Errno(0x7f)
- 	ENETRESET       = syscall.Errno(0x81)
- 	ENETUNREACH     = syscall.Errno(0x80)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x35)
- 	ENOBUFS         = syscall.Errno(0x84)
- 	ENOCSI          = syscall.Errno(0x2b)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0xa1)
- 	ENOLCK          = syscall.Errno(0x2e)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x9f)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x23)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x63)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x59)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x86)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x5d)
- 	ENOTNAM         = syscall.Errno(0x89)
- 	ENOTRECOVERABLE = syscall.Errno(0xa6)
- 	ENOTSOCK        = syscall.Errno(0x5f)
- 	ENOTSUP         = syscall.Errno(0x7a)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x50)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x7a)
- 	EOVERFLOW       = syscall.Errno(0x4f)
- 	EOWNERDEAD      = syscall.Errno(0xa5)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x7b)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x78)
- 	EPROTOTYPE      = syscall.Errno(0x62)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x52)
- 	EREMDEV         = syscall.Errno(0x8e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x8c)
- 	ERESTART        = syscall.Errno(0x5b)
- 	ERFKILL         = syscall.Errno(0xa7)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x8f)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x79)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x97)
- 	ESTRPIPE        = syscall.Errno(0x5c)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x91)
- 	ETOOMANYREFS    = syscall.Errno(0x90)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x87)
- 	EUNATCH         = syscall.Errno(0x2a)
- 	EUSERS          = syscall.Errno(0x5e)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x34)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0xa)
- 	SIGCHLD   = syscall.Signal(0x12)
- 	SIGCLD    = syscall.Signal(0x12)
- 	SIGCONT   = syscall.Signal(0x19)
- 	SIGEMT    = syscall.Signal(0x7)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x16)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x16)
- 	SIGPROF   = syscall.Signal(0x1d)
- 	SIGPWR    = syscall.Signal(0x13)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTOP   = syscall.Signal(0x17)
- 	SIGSYS    = syscall.Signal(0xc)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x18)
- 	SIGTTIN   = syscall.Signal(0x1a)
- 	SIGTTOU   = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:    "operation not permitted",
--	2:    "no such file or directory",
--	3:    "no such process",
--	4:    "interrupted system call",
--	5:    "input/output error",
--	6:    "no such device or address",
--	7:    "argument list too long",
--	8:    "exec format error",
--	9:    "bad file descriptor",
--	10:   "no child processes",
--	11:   "resource temporarily unavailable",
--	12:   "cannot allocate memory",
--	13:   "permission denied",
--	14:   "bad address",
--	15:   "block device required",
--	16:   "device or resource busy",
--	17:   "file exists",
--	18:   "invalid cross-device link",
--	19:   "no such device",
--	20:   "not a directory",
--	21:   "is a directory",
--	22:   "invalid argument",
--	23:   "too many open files in system",
--	24:   "too many open files",
--	25:   "inappropriate ioctl for device",
--	26:   "text file busy",
--	27:   "file too large",
--	28:   "no space left on device",
--	29:   "illegal seek",
--	30:   "read-only file system",
--	31:   "too many links",
--	32:   "broken pipe",
--	33:   "numerical argument out of domain",
--	34:   "numerical result out of range",
--	35:   "no message of desired type",
--	36:   "identifier removed",
--	37:   "channel number out of range",
--	38:   "level 2 not synchronized",
--	39:   "level 3 halted",
--	40:   "level 3 reset",
--	41:   "link number out of range",
--	42:   "protocol driver not attached",
--	43:   "no CSI structure available",
--	44:   "level 2 halted",
--	45:   "resource deadlock avoided",
--	46:   "no locks available",
--	50:   "invalid exchange",
--	51:   "invalid request descriptor",
--	52:   "exchange full",
--	53:   "no anode",
--	54:   "invalid request code",
--	55:   "invalid slot",
--	56:   "file locking deadlock error",
--	59:   "bad font file format",
--	60:   "device not a stream",
--	61:   "no data available",
--	62:   "timer expired",
--	63:   "out of streams resources",
--	64:   "machine is not on the network",
--	65:   "package not installed",
--	66:   "object is remote",
--	67:   "link has been severed",
--	68:   "advertise error",
--	69:   "srmount error",
--	70:   "communication error on send",
--	71:   "protocol error",
--	73:   "RFS specific error",
--	74:   "multihop attempted",
--	77:   "bad message",
--	78:   "file name too long",
--	79:   "value too large for defined data type",
--	80:   "name not unique on network",
--	81:   "file descriptor in bad state",
--	82:   "remote address changed",
--	83:   "can not access a needed shared library",
--	84:   "accessing a corrupted shared library",
--	85:   ".lib section in a.out corrupted",
--	86:   "attempting to link in too many shared libraries",
--	87:   "cannot exec a shared library directly",
--	88:   "invalid or incomplete multibyte or wide character",
--	89:   "function not implemented",
--	90:   "too many levels of symbolic links",
--	91:   "interrupted system call should be restarted",
--	92:   "streams pipe error",
--	93:   "directory not empty",
--	94:   "too many users",
--	95:   "socket operation on non-socket",
--	96:   "destination address required",
--	97:   "message too long",
--	98:   "protocol wrong type for socket",
--	99:   "protocol not available",
--	120:  "protocol not supported",
--	121:  "socket type not supported",
--	122:  "operation not supported",
--	123:  "protocol family not supported",
--	124:  "address family not supported by protocol",
--	125:  "address already in use",
--	126:  "cannot assign requested address",
--	127:  "network is down",
--	128:  "network is unreachable",
--	129:  "network dropped connection on reset",
--	130:  "software caused connection abort",
--	131:  "connection reset by peer",
--	132:  "no buffer space available",
--	133:  "transport endpoint is already connected",
--	134:  "transport endpoint is not connected",
--	135:  "structure needs cleaning",
--	137:  "not a XENIX named type file",
--	138:  "no XENIX semaphores available",
--	139:  "is a named type file",
--	140:  "remote I/O error",
--	141:  "unknown error 141",
--	142:  "unknown error 142",
--	143:  "cannot send after transport endpoint shutdown",
--	144:  "too many references: cannot splice",
--	145:  "connection timed out",
--	146:  "connection refused",
--	147:  "host is down",
--	148:  "no route to host",
--	149:  "operation already in progress",
--	150:  "operation now in progress",
--	151:  "stale file handle",
--	158:  "operation canceled",
--	159:  "no medium found",
--	160:  "wrong medium type",
--	161:  "required key not available",
--	162:  "key has expired",
--	163:  "key has been revoked",
--	164:  "key was rejected by service",
--	165:  "owner died",
--	166:  "state not recoverable",
--	167:  "operation not possible due to RF-kill",
--	168:  "memory page has hardware error",
--	1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "resource deadlock avoided"},
-+	{46, "ENOLCK", "no locks available"},
-+	{50, "EBADE", "invalid exchange"},
-+	{51, "EBADR", "invalid request descriptor"},
-+	{52, "EXFULL", "exchange full"},
-+	{53, "ENOANO", "no anode"},
-+	{54, "EBADRQC", "invalid request code"},
-+	{55, "EBADSLT", "invalid slot"},
-+	{56, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EMULTIHOP", "multihop attempted"},
-+	{77, "EBADMSG", "bad message"},
-+	{78, "ENAMETOOLONG", "file name too long"},
-+	{79, "EOVERFLOW", "value too large for defined data type"},
-+	{80, "ENOTUNIQ", "name not unique on network"},
-+	{81, "EBADFD", "file descriptor in bad state"},
-+	{82, "EREMCHG", "remote address changed"},
-+	{83, "ELIBACC", "can not access a needed shared library"},
-+	{84, "ELIBBAD", "accessing a corrupted shared library"},
-+	{85, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{87, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{89, "ENOSYS", "function not implemented"},
-+	{90, "ELOOP", "too many levels of symbolic links"},
-+	{91, "ERESTART", "interrupted system call should be restarted"},
-+	{92, "ESTRPIPE", "streams pipe error"},
-+	{93, "ENOTEMPTY", "directory not empty"},
-+	{94, "EUSERS", "too many users"},
-+	{95, "ENOTSOCK", "socket operation on non-socket"},
-+	{96, "EDESTADDRREQ", "destination address required"},
-+	{97, "EMSGSIZE", "message too long"},
-+	{98, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{99, "ENOPROTOOPT", "protocol not available"},
-+	{120, "EPROTONOSUPPORT", "protocol not supported"},
-+	{121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{122, "ENOTSUP", "operation not supported"},
-+	{123, "EPFNOSUPPORT", "protocol family not supported"},
-+	{124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{125, "EADDRINUSE", "address already in use"},
-+	{126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{127, "ENETDOWN", "network is down"},
-+	{128, "ENETUNREACH", "network is unreachable"},
-+	{129, "ENETRESET", "network dropped connection on reset"},
-+	{130, "ECONNABORTED", "software caused connection abort"},
-+	{131, "ECONNRESET", "connection reset by peer"},
-+	{132, "ENOBUFS", "no buffer space available"},
-+	{133, "EISCONN", "transport endpoint is already connected"},
-+	{134, "ENOTCONN", "transport endpoint is not connected"},
-+	{135, "EUCLEAN", "structure needs cleaning"},
-+	{137, "ENOTNAM", "not a XENIX named type file"},
-+	{138, "ENAVAIL", "no XENIX semaphores available"},
-+	{139, "EISNAM", "is a named type file"},
-+	{140, "EREMOTEIO", "remote I/O error"},
-+	{141, "EINIT", "unknown error 141"},
-+	{142, "EREMDEV", "unknown error 142"},
-+	{143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{144, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{145, "ETIMEDOUT", "connection timed out"},
-+	{146, "ECONNREFUSED", "connection refused"},
-+	{147, "EHOSTDOWN", "host is down"},
-+	{148, "EHOSTUNREACH", "no route to host"},
-+	{149, "EALREADY", "operation already in progress"},
-+	{150, "EINPROGRESS", "operation now in progress"},
-+	{151, "ESTALE", "stale file handle"},
-+	{158, "ECANCELED", "operation canceled"},
-+	{159, "ENOMEDIUM", "no medium found"},
-+	{160, "EMEDIUMTYPE", "wrong medium type"},
-+	{161, "ENOKEY", "required key not available"},
-+	{162, "EKEYEXPIRED", "key has expired"},
-+	{163, "EKEYREVOKED", "key has been revoked"},
-+	{164, "EKEYREJECTED", "key was rejected by service"},
-+	{165, "EOWNERDEAD", "owner died"},
-+	{166, "ENOTRECOVERABLE", "state not recoverable"},
-+	{167, "ERFKILL", "operation not possible due to RF-kill"},
-+	{168, "EHWPOISON", "memory page has hardware error"},
-+	{1133, "EDQUOT", "disk quota exceeded"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "user defined signal 1",
--	17: "user defined signal 2",
--	18: "child exited",
--	19: "power failure",
--	20: "window changed",
--	21: "urgent I/O condition",
--	22: "I/O possible",
--	23: "stopped (signal)",
--	24: "stopped",
--	25: "continued",
--	26: "stopped (tty input)",
--	27: "stopped (tty output)",
--	28: "virtual timer expired",
--	29: "profiling timer expired",
--	30: "CPU time limit exceeded",
--	31: "file size limit exceeded",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGUSR1", "user defined signal 1"},
-+	{17, "SIGUSR2", "user defined signal 2"},
-+	{18, "SIGCHLD", "child exited"},
-+	{19, "SIGPWR", "power failure"},
-+	{20, "SIGWINCH", "window changed"},
-+	{21, "SIGURG", "urgent I/O condition"},
-+	{22, "SIGIO", "I/O possible"},
-+	{23, "SIGSTOP", "stopped (signal)"},
-+	{24, "SIGTSTP", "stopped"},
-+	{25, "SIGCONT", "continued"},
-+	{26, "SIGTTIN", "stopped (tty input)"},
-+	{27, "SIGTTOU", "stopped (tty output)"},
-+	{28, "SIGVTALRM", "virtual timer expired"},
-+	{29, "SIGPROF", "profiling timer expired"},
-+	{30, "SIGXCPU", "CPU time limit exceeded"},
-+	{31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-index 44191b0c..2dfe6bba 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-@@ -3,7 +3,7 @@
- 
- // +build mipsle,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40041270
--	BLKBSZSET                            = 0x80041271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40041272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x80
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x2000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x21
--	F_GETLK64                            = 0x21
--	F_GETOWN                             = 0x17
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x22
--	F_SETLK64                            = 0x22
--	F_SETLKW                             = 0x23
--	F_SETLKW64                           = 0x23
--	F_SETOWN                             = 0x18
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x100
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x80
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x800
--	MAP_ANONYMOUS                        = 0x800
--	MAP_DENYWRITE                        = 0x2000
--	MAP_EXECUTABLE                       = 0x4000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x1000
--	MAP_HUGETLB                          = 0x80000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x8000
--	MAP_NONBLOCK                         = 0x20000
--	MAP_NORESERVE                        = 0x400
--	MAP_POPULATE                         = 0x10000
--	MAP_PRIVATE                          = 0x2
--	MAP_RENAME                           = 0x800
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x40000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x8
--	O_ASYNC                              = 0x1000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x100
--	O_DIRECT                             = 0x8000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x10
--	O_EXCL                               = 0x400
--	O_FSYNC                              = 0x4010
--	O_LARGEFILE                          = 0x2000
--	O_NDELAY                             = 0x80
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x800
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x80
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x4010
--	O_SYNC                               = 0x4010
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40042407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80042406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = 0xffffffff
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_THREAD_AREA               = 0x19
--	PTRACE_GET_THREAD_AREA_3264          = 0xc4
--	PTRACE_GET_WATCH_REGS                = 0xd0
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKDATA_3264                 = 0xc1
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKTEXT_3264                 = 0xc0
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKEDATA_3264                 = 0xc3
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKETEXT_3264                 = 0xc2
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SET_THREAD_AREA               = 0x1a
--	PTRACE_SET_WATCH_REGS                = 0xd1
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	RLIMIT_AS                            = 0x6
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x9
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x5
--	RLIMIT_NPROC                         = 0x8
--	RLIMIT_RSS                           = 0x7
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x40047307
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x40047309
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x467f
--	SIOCOUTQ                             = 0x7472
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x80047308
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x1
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x80
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x2
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0xffff
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1009
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x20
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x1029
--	SO_DONTROUTE                         = 0x10
--	SO_ERROR                             = 0x1007
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x8
--	SO_LINGER                            = 0x80
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0x100
--	SO_PASSCRED                          = 0x11
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x12
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1e
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x1028
--	SO_RCVBUF                            = 0x1002
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x1004
--	SO_RCVTIMEO                          = 0x1006
--	SO_REUSEADDR                         = 0x4
--	SO_REUSEPORT                         = 0x200
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x1001
--	SO_SNDBUFFORCE                       = 0x1f
--	SO_SNDLOWAT                          = 0x1003
--	SO_SNDTIMEO                          = 0x1005
--	SO_STYLE                             = 0x1008
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x1008
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x5407
--	TCGETA                               = 0x5401
--	TCGETS                               = 0x540d
--	TCGETS2                              = 0x4030542a
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x5410
--	TCSBRK                               = 0x5405
--	TCSBRKP                              = 0x5486
--	TCSETA                               = 0x5402
--	TCSETAF                              = 0x5404
--	TCSETAW                              = 0x5403
--	TCSETS                               = 0x540e
--	TCSETS2                              = 0x8030542b
--	TCSETSF                              = 0x5410
--	TCSETSF2                             = 0x8030542d
--	TCSETSW                              = 0x540f
--	TCSETSW2                             = 0x8030542c
--	TCXONC                               = 0x5406
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x80047478
--	TIOCEXCL                             = 0x740d
--	TIOCGDEV                             = 0x40045432
--	TIOCGETD                             = 0x7400
--	TIOCGETP                             = 0x7408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x5492
--	TIOCGLCKTRMIOS                       = 0x548b
--	TIOCGLTC                             = 0x7474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x4020542e
--	TIOCGSERIAL                          = 0x5484
--	TIOCGSID                             = 0x7416
--	TIOCGSOFTCAR                         = 0x5481
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x467f
--	TIOCLINUX                            = 0x5483
--	TIOCMBIC                             = 0x741c
--	TIOCMBIS                             = 0x741b
--	TIOCMGET                             = 0x741d
--	TIOCMIWAIT                           = 0x5491
--	TIOCMSET                             = 0x741a
--	TIOCM_CAR                            = 0x100
--	TIOCM_CD                             = 0x100
--	TIOCM_CTS                            = 0x40
--	TIOCM_DSR                            = 0x400
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x200
--	TIOCM_RNG                            = 0x200
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x20
--	TIOCM_ST                             = 0x10
--	TIOCNOTTY                            = 0x5471
--	TIOCNXCL                             = 0x740e
--	TIOCOUTQ                             = 0x7472
--	TIOCPKT                              = 0x5470
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x5480
--	TIOCSERCONFIG                        = 0x5488
--	TIOCSERGETLSR                        = 0x548e
--	TIOCSERGETMULTI                      = 0x548f
--	TIOCSERGSTRUCT                       = 0x548d
--	TIOCSERGWILD                         = 0x5489
--	TIOCSERSETMULTI                      = 0x5490
--	TIOCSERSWILD                         = 0x548a
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x7401
--	TIOCSETN                             = 0x740a
--	TIOCSETP                             = 0x7409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x548c
--	TIOCSLTC                             = 0x7475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0xc020542f
--	TIOCSSERIAL                          = 0x5485
--	TIOCSSOFTCAR                         = 0x5482
--	TIOCSTI                              = 0x5472
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x8000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x800854d5
--	TUNDETACHFILTER                      = 0x800854d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x400854db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x10
--	VEOL                                 = 0x11
--	VEOL2                                = 0x6
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x4
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VSWTCH                               = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x20
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x40041270
-+	BLKBSZSET                        = 0x80041271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40041272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x80
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x2000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40046601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0x21
-+	F_GETLK64                        = 0x21
-+	F_GETOWN                         = 0x17
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x22
-+	F_SETLK64                        = 0x22
-+	F_SETLKW                         = 0x23
-+	F_SETLKW64                       = 0x23
-+	F_SETOWN                         = 0x18
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x100
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x80
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x800
-+	MAP_ANONYMOUS                    = 0x800
-+	MAP_DENYWRITE                    = 0x2000
-+	MAP_EXECUTABLE                   = 0x4000
-+	MAP_GROWSDOWN                    = 0x1000
-+	MAP_HUGETLB                      = 0x80000
-+	MAP_LOCKED                       = 0x8000
-+	MAP_NONBLOCK                     = 0x20000
-+	MAP_NORESERVE                    = 0x400
-+	MAP_POPULATE                     = 0x10000
-+	MAP_RENAME                       = 0x800
-+	MAP_STACK                        = 0x40000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x20
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x8
-+	O_ASYNC                          = 0x1000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x100
-+	O_DIRECT                         = 0x8000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x10
-+	O_EXCL                           = 0x400
-+	O_FSYNC                          = 0x4010
-+	O_LARGEFILE                      = 0x2000
-+	O_NDELAY                         = 0x80
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x800
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x80
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x4010
-+	O_SYNC                           = 0x4010
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40042407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc004240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80042406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4008743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80087446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x800c744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80087447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PR_SET_PTRACER_ANY               = 0xffffffff
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GET_THREAD_AREA           = 0x19
-+	PTRACE_GET_THREAD_AREA_3264      = 0xc4
-+	PTRACE_GET_WATCH_REGS            = 0xd0
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_PEEKDATA_3264             = 0xc1
-+	PTRACE_PEEKTEXT_3264             = 0xc0
-+	PTRACE_POKEDATA_3264             = 0xc3
-+	PTRACE_POKETEXT_3264             = 0xc2
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SET_THREAD_AREA           = 0x1a
-+	PTRACE_SET_WATCH_REGS            = 0xd1
-+	RLIMIT_AS                        = 0x6
-+	RLIMIT_MEMLOCK                   = 0x9
-+	RLIMIT_NOFILE                    = 0x5
-+	RLIMIT_NPROC                     = 0x8
-+	RLIMIT_RSS                       = 0x7
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4004700d
-+	RTC_EPOCH_SET                    = 0x8004700e
-+	RTC_IRQP_READ                    = 0x4004700b
-+	RTC_IRQP_SET                     = 0x8004700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x401c7011
-+	RTC_PLL_SET                      = 0x801c7012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x80
-+	SIOCATMARK                       = 0x40047307
-+	SIOCGPGRP                        = 0x40047309
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x467f
-+	SIOCOUTQ                         = 0x7472
-+	SIOCSPGRP                        = 0x80047308
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x1
-+	SOCK_NONBLOCK                    = 0x80
-+	SOCK_STREAM                      = 0x2
-+	SOL_SOCKET                       = 0xffff
-+	SO_ACCEPTCONN                    = 0x1009
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x20
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x1029
-+	SO_DONTROUTE                     = 0x10
-+	SO_ERROR                         = 0x1007
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x8
-+	SO_LINGER                        = 0x80
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0x100
-+	SO_PASSCRED                      = 0x11
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x12
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1e
-+	SO_PROTOCOL                      = 0x1028
-+	SO_RCVBUF                        = 0x1002
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x1004
-+	SO_RCVTIMEO                      = 0x1006
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x1006
-+	SO_REUSEADDR                     = 0x4
-+	SO_REUSEPORT                     = 0x200
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x1001
-+	SO_SNDBUFFORCE                   = 0x1f
-+	SO_SNDLOWAT                      = 0x1003
-+	SO_SNDTIMEO                      = 0x1005
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x1005
-+	SO_STYLE                         = 0x1008
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x1008
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x5407
-+	TCGETA                           = 0x5401
-+	TCGETS                           = 0x540d
-+	TCGETS2                          = 0x4030542a
-+	TCSAFLUSH                        = 0x5410
-+	TCSBRK                           = 0x5405
-+	TCSBRKP                          = 0x5486
-+	TCSETA                           = 0x5402
-+	TCSETAF                          = 0x5404
-+	TCSETAW                          = 0x5403
-+	TCSETS                           = 0x540e
-+	TCSETS2                          = 0x8030542b
-+	TCSETSF                          = 0x5410
-+	TCSETSF2                         = 0x8030542d
-+	TCSETSW                          = 0x540f
-+	TCSETSW2                         = 0x8030542c
-+	TCXONC                           = 0x5406
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x80047478
-+	TIOCEXCL                         = 0x740d
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETD                         = 0x7400
-+	TIOCGETP                         = 0x7408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x5492
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x548b
-+	TIOCGLTC                         = 0x7474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x4020542e
-+	TIOCGSERIAL                      = 0x5484
-+	TIOCGSID                         = 0x7416
-+	TIOCGSOFTCAR                     = 0x5481
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x467f
-+	TIOCLINUX                        = 0x5483
-+	TIOCMBIC                         = 0x741c
-+	TIOCMBIS                         = 0x741b
-+	TIOCMGET                         = 0x741d
-+	TIOCMIWAIT                       = 0x5491
-+	TIOCMSET                         = 0x741a
-+	TIOCM_CAR                        = 0x100
-+	TIOCM_CD                         = 0x100
-+	TIOCM_CTS                        = 0x40
-+	TIOCM_DSR                        = 0x400
-+	TIOCM_RI                         = 0x200
-+	TIOCM_RNG                        = 0x200
-+	TIOCM_SR                         = 0x20
-+	TIOCM_ST                         = 0x10
-+	TIOCNOTTY                        = 0x5471
-+	TIOCNXCL                         = 0x740e
-+	TIOCOUTQ                         = 0x7472
-+	TIOCPKT                          = 0x5470
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x5480
-+	TIOCSERCONFIG                    = 0x5488
-+	TIOCSERGETLSR                    = 0x548e
-+	TIOCSERGETMULTI                  = 0x548f
-+	TIOCSERGSTRUCT                   = 0x548d
-+	TIOCSERGWILD                     = 0x5489
-+	TIOCSERSETMULTI                  = 0x5490
-+	TIOCSERSWILD                     = 0x548a
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x7401
-+	TIOCSETN                         = 0x740a
-+	TIOCSETP                         = 0x7409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x548c
-+	TIOCSLTC                         = 0x7475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0xc020542f
-+	TIOCSSERIAL                      = 0x5485
-+	TIOCSSOFTCAR                     = 0x5482
-+	TIOCSTI                          = 0x5472
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x8000
-+	TUNATTACHFILTER                  = 0x800854d5
-+	TUNDETACHFILTER                  = 0x800854d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x400854db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x10
-+	VEOL                             = 0x11
-+	VEOL2                            = 0x6
-+	VMIN                             = 0x4
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VSWTCH                           = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x20
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x7d)
- 	EADDRNOTAVAIL   = syscall.Errno(0x7e)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x7c)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x95)
- 	EBADE           = syscall.Errno(0x32)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x51)
- 	EBADMSG         = syscall.Errno(0x4d)
- 	EBADR           = syscall.Errno(0x33)
- 	EBADRQC         = syscall.Errno(0x36)
- 	EBADSLT         = syscall.Errno(0x37)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x9e)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x25)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- 	EDEADLK         = syscall.Errno(0x2d)
- 	EDEADLOCK       = syscall.Errno(0x38)
- 	EDESTADDRREQ    = syscall.Errno(0x60)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x46d)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x93)
- 	EHOSTUNREACH    = syscall.Errno(0x94)
- 	EHWPOISON       = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- 	EILSEQ          = syscall.Errno(0x58)
- 	EINIT           = syscall.Errno(0x8d)
- 	EINPROGRESS     = syscall.Errno(0x96)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x85)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x8b)
- 	EKEYEXPIRED     = syscall.Errno(0xa2)
- 	EKEYREJECTED    = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x29)
- 	ELOOP           = syscall.Errno(0x5a)
- 	EMEDIUMTYPE     = syscall.Errno(0xa0)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x61)
- 	EMULTIHOP       = syscall.Errno(0x4a)
- 	ENAMETOOLONG    = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- 	ENETDOWN        = syscall.Errno(0x7f)
- 	ENETRESET       = syscall.Errno(0x81)
- 	ENETUNREACH     = syscall.Errno(0x80)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x35)
- 	ENOBUFS         = syscall.Errno(0x84)
- 	ENOCSI          = syscall.Errno(0x2b)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0xa1)
- 	ENOLCK          = syscall.Errno(0x2e)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x9f)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x23)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x63)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x59)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x86)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x5d)
- 	ENOTNAM         = syscall.Errno(0x89)
- 	ENOTRECOVERABLE = syscall.Errno(0xa6)
- 	ENOTSOCK        = syscall.Errno(0x5f)
- 	ENOTSUP         = syscall.Errno(0x7a)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x50)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x7a)
- 	EOVERFLOW       = syscall.Errno(0x4f)
- 	EOWNERDEAD      = syscall.Errno(0xa5)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x7b)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x78)
- 	EPROTOTYPE      = syscall.Errno(0x62)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x52)
- 	EREMDEV         = syscall.Errno(0x8e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x8c)
- 	ERESTART        = syscall.Errno(0x5b)
- 	ERFKILL         = syscall.Errno(0xa7)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x8f)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x79)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x97)
- 	ESTRPIPE        = syscall.Errno(0x5c)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x91)
- 	ETOOMANYREFS    = syscall.Errno(0x90)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x87)
- 	EUNATCH         = syscall.Errno(0x2a)
- 	EUSERS          = syscall.Errno(0x5e)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x34)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0xa)
- 	SIGCHLD   = syscall.Signal(0x12)
- 	SIGCLD    = syscall.Signal(0x12)
- 	SIGCONT   = syscall.Signal(0x19)
- 	SIGEMT    = syscall.Signal(0x7)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x16)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x16)
- 	SIGPROF   = syscall.Signal(0x1d)
- 	SIGPWR    = syscall.Signal(0x13)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTOP   = syscall.Signal(0x17)
- 	SIGSYS    = syscall.Signal(0xc)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x18)
- 	SIGTTIN   = syscall.Signal(0x1a)
- 	SIGTTOU   = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:    "operation not permitted",
--	2:    "no such file or directory",
--	3:    "no such process",
--	4:    "interrupted system call",
--	5:    "input/output error",
--	6:    "no such device or address",
--	7:    "argument list too long",
--	8:    "exec format error",
--	9:    "bad file descriptor",
--	10:   "no child processes",
--	11:   "resource temporarily unavailable",
--	12:   "cannot allocate memory",
--	13:   "permission denied",
--	14:   "bad address",
--	15:   "block device required",
--	16:   "device or resource busy",
--	17:   "file exists",
--	18:   "invalid cross-device link",
--	19:   "no such device",
--	20:   "not a directory",
--	21:   "is a directory",
--	22:   "invalid argument",
--	23:   "too many open files in system",
--	24:   "too many open files",
--	25:   "inappropriate ioctl for device",
--	26:   "text file busy",
--	27:   "file too large",
--	28:   "no space left on device",
--	29:   "illegal seek",
--	30:   "read-only file system",
--	31:   "too many links",
--	32:   "broken pipe",
--	33:   "numerical argument out of domain",
--	34:   "numerical result out of range",
--	35:   "no message of desired type",
--	36:   "identifier removed",
--	37:   "channel number out of range",
--	38:   "level 2 not synchronized",
--	39:   "level 3 halted",
--	40:   "level 3 reset",
--	41:   "link number out of range",
--	42:   "protocol driver not attached",
--	43:   "no CSI structure available",
--	44:   "level 2 halted",
--	45:   "resource deadlock avoided",
--	46:   "no locks available",
--	50:   "invalid exchange",
--	51:   "invalid request descriptor",
--	52:   "exchange full",
--	53:   "no anode",
--	54:   "invalid request code",
--	55:   "invalid slot",
--	56:   "file locking deadlock error",
--	59:   "bad font file format",
--	60:   "device not a stream",
--	61:   "no data available",
--	62:   "timer expired",
--	63:   "out of streams resources",
--	64:   "machine is not on the network",
--	65:   "package not installed",
--	66:   "object is remote",
--	67:   "link has been severed",
--	68:   "advertise error",
--	69:   "srmount error",
--	70:   "communication error on send",
--	71:   "protocol error",
--	73:   "RFS specific error",
--	74:   "multihop attempted",
--	77:   "bad message",
--	78:   "file name too long",
--	79:   "value too large for defined data type",
--	80:   "name not unique on network",
--	81:   "file descriptor in bad state",
--	82:   "remote address changed",
--	83:   "can not access a needed shared library",
--	84:   "accessing a corrupted shared library",
--	85:   ".lib section in a.out corrupted",
--	86:   "attempting to link in too many shared libraries",
--	87:   "cannot exec a shared library directly",
--	88:   "invalid or incomplete multibyte or wide character",
--	89:   "function not implemented",
--	90:   "too many levels of symbolic links",
--	91:   "interrupted system call should be restarted",
--	92:   "streams pipe error",
--	93:   "directory not empty",
--	94:   "too many users",
--	95:   "socket operation on non-socket",
--	96:   "destination address required",
--	97:   "message too long",
--	98:   "protocol wrong type for socket",
--	99:   "protocol not available",
--	120:  "protocol not supported",
--	121:  "socket type not supported",
--	122:  "operation not supported",
--	123:  "protocol family not supported",
--	124:  "address family not supported by protocol",
--	125:  "address already in use",
--	126:  "cannot assign requested address",
--	127:  "network is down",
--	128:  "network is unreachable",
--	129:  "network dropped connection on reset",
--	130:  "software caused connection abort",
--	131:  "connection reset by peer",
--	132:  "no buffer space available",
--	133:  "transport endpoint is already connected",
--	134:  "transport endpoint is not connected",
--	135:  "structure needs cleaning",
--	137:  "not a XENIX named type file",
--	138:  "no XENIX semaphores available",
--	139:  "is a named type file",
--	140:  "remote I/O error",
--	141:  "unknown error 141",
--	142:  "unknown error 142",
--	143:  "cannot send after transport endpoint shutdown",
--	144:  "too many references: cannot splice",
--	145:  "connection timed out",
--	146:  "connection refused",
--	147:  "host is down",
--	148:  "no route to host",
--	149:  "operation already in progress",
--	150:  "operation now in progress",
--	151:  "stale file handle",
--	158:  "operation canceled",
--	159:  "no medium found",
--	160:  "wrong medium type",
--	161:  "required key not available",
--	162:  "key has expired",
--	163:  "key has been revoked",
--	164:  "key was rejected by service",
--	165:  "owner died",
--	166:  "state not recoverable",
--	167:  "operation not possible due to RF-kill",
--	168:  "memory page has hardware error",
--	1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "resource deadlock avoided"},
-+	{46, "ENOLCK", "no locks available"},
-+	{50, "EBADE", "invalid exchange"},
-+	{51, "EBADR", "invalid request descriptor"},
-+	{52, "EXFULL", "exchange full"},
-+	{53, "ENOANO", "no anode"},
-+	{54, "EBADRQC", "invalid request code"},
-+	{55, "EBADSLT", "invalid slot"},
-+	{56, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EMULTIHOP", "multihop attempted"},
-+	{77, "EBADMSG", "bad message"},
-+	{78, "ENAMETOOLONG", "file name too long"},
-+	{79, "EOVERFLOW", "value too large for defined data type"},
-+	{80, "ENOTUNIQ", "name not unique on network"},
-+	{81, "EBADFD", "file descriptor in bad state"},
-+	{82, "EREMCHG", "remote address changed"},
-+	{83, "ELIBACC", "can not access a needed shared library"},
-+	{84, "ELIBBAD", "accessing a corrupted shared library"},
-+	{85, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{87, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{89, "ENOSYS", "function not implemented"},
-+	{90, "ELOOP", "too many levels of symbolic links"},
-+	{91, "ERESTART", "interrupted system call should be restarted"},
-+	{92, "ESTRPIPE", "streams pipe error"},
-+	{93, "ENOTEMPTY", "directory not empty"},
-+	{94, "EUSERS", "too many users"},
-+	{95, "ENOTSOCK", "socket operation on non-socket"},
-+	{96, "EDESTADDRREQ", "destination address required"},
-+	{97, "EMSGSIZE", "message too long"},
-+	{98, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{99, "ENOPROTOOPT", "protocol not available"},
-+	{120, "EPROTONOSUPPORT", "protocol not supported"},
-+	{121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{122, "ENOTSUP", "operation not supported"},
-+	{123, "EPFNOSUPPORT", "protocol family not supported"},
-+	{124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{125, "EADDRINUSE", "address already in use"},
-+	{126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{127, "ENETDOWN", "network is down"},
-+	{128, "ENETUNREACH", "network is unreachable"},
-+	{129, "ENETRESET", "network dropped connection on reset"},
-+	{130, "ECONNABORTED", "software caused connection abort"},
-+	{131, "ECONNRESET", "connection reset by peer"},
-+	{132, "ENOBUFS", "no buffer space available"},
-+	{133, "EISCONN", "transport endpoint is already connected"},
-+	{134, "ENOTCONN", "transport endpoint is not connected"},
-+	{135, "EUCLEAN", "structure needs cleaning"},
-+	{137, "ENOTNAM", "not a XENIX named type file"},
-+	{138, "ENAVAIL", "no XENIX semaphores available"},
-+	{139, "EISNAM", "is a named type file"},
-+	{140, "EREMOTEIO", "remote I/O error"},
-+	{141, "EINIT", "unknown error 141"},
-+	{142, "EREMDEV", "unknown error 142"},
-+	{143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{144, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{145, "ETIMEDOUT", "connection timed out"},
-+	{146, "ECONNREFUSED", "connection refused"},
-+	{147, "EHOSTDOWN", "host is down"},
-+	{148, "EHOSTUNREACH", "no route to host"},
-+	{149, "EALREADY", "operation already in progress"},
-+	{150, "EINPROGRESS", "operation now in progress"},
-+	{151, "ESTALE", "stale file handle"},
-+	{158, "ECANCELED", "operation canceled"},
-+	{159, "ENOMEDIUM", "no medium found"},
-+	{160, "EMEDIUMTYPE", "wrong medium type"},
-+	{161, "ENOKEY", "required key not available"},
-+	{162, "EKEYEXPIRED", "key has expired"},
-+	{163, "EKEYREVOKED", "key has been revoked"},
-+	{164, "EKEYREJECTED", "key was rejected by service"},
-+	{165, "EOWNERDEAD", "owner died"},
-+	{166, "ENOTRECOVERABLE", "state not recoverable"},
-+	{167, "ERFKILL", "operation not possible due to RF-kill"},
-+	{168, "EHWPOISON", "memory page has hardware error"},
-+	{1133, "EDQUOT", "disk quota exceeded"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "user defined signal 1",
--	17: "user defined signal 2",
--	18: "child exited",
--	19: "power failure",
--	20: "window changed",
--	21: "urgent I/O condition",
--	22: "I/O possible",
--	23: "stopped (signal)",
--	24: "stopped",
--	25: "continued",
--	26: "stopped (tty input)",
--	27: "stopped (tty output)",
--	28: "virtual timer expired",
--	29: "profiling timer expired",
--	30: "CPU time limit exceeded",
--	31: "file size limit exceeded",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGUSR1", "user defined signal 1"},
-+	{17, "SIGUSR2", "user defined signal 2"},
-+	{18, "SIGCHLD", "child exited"},
-+	{19, "SIGPWR", "power failure"},
-+	{20, "SIGWINCH", "window changed"},
-+	{21, "SIGURG", "urgent I/O condition"},
-+	{22, "SIGIO", "I/O possible"},
-+	{23, "SIGSTOP", "stopped (signal)"},
-+	{24, "SIGTSTP", "stopped"},
-+	{25, "SIGCONT", "continued"},
-+	{26, "SIGTTIN", "stopped (tty input)"},
-+	{27, "SIGTTOU", "stopped (tty output)"},
-+	{28, "SIGVTALRM", "virtual timer expired"},
-+	{29, "SIGPROF", "profiling timer expired"},
-+	{30, "SIGXCPU", "CPU time limit exceeded"},
-+	{31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-index 6772a59b..51858667 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-@@ -3,7 +3,7 @@
- 
- // +build ppc64,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1930 +11,549 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x17
--	B110                                 = 0x3
--	B115200                              = 0x11
--	B1152000                             = 0x18
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x19
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x1a
--	B230400                              = 0x12
--	B2400                                = 0xb
--	B2500000                             = 0x1b
--	B300                                 = 0x7
--	B3000000                             = 0x1c
--	B3500000                             = 0x1d
--	B38400                               = 0xf
--	B4000000                             = 0x1e
--	B460800                              = 0x13
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x14
--	B57600                               = 0x10
--	B576000                              = 0x15
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x16
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40081270
--	BLKBSZSET                            = 0x80081271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40081272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1f
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x8000
--	BSDLY                                = 0x8000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0xff
--	CBAUDEX                              = 0x0
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0xff0000
--	CLOCAL                               = 0x8000
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x1000
--	CR2                                  = 0x2000
--	CR3                                  = 0x3000
--	CRDLY                                = 0x3000
--	CREAD                                = 0x800
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x100
--	CS7                                  = 0x200
--	CS8                                  = 0x300
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x300
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x400
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x40
--	ECHOE                                = 0x2
--	ECHOK                                = 0x4
--	ECHOKE                               = 0x1
--	ECHONL                               = 0x10
--	ECHOPRT                              = 0x20
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x4000
--	FFDLY                                = 0x4000
--	FLUSHO                               = 0x800000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x5
--	F_GETLK64                            = 0xc
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0xd
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0xe
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x4000
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x100
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x400
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x80
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x1000
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x400
--	IXON                                 = 0x200
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x80
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x40
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x2000
--	MCL_FUTURE                           = 0x4000
--	MCL_ONFAULT                          = 0x8000
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NL2                                  = 0x200
--	NL3                                  = 0x300
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x300
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80000000
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x4
--	ONLCR                                = 0x2
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x20000
--	O_DIRECTORY                          = 0x4000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x8000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x404000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x1000
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x2000
--	PENDIN                               = 0x20000000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_SAO                             = 0x10
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETEVRREGS                    = 0x14
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGS64                     = 0x16
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GETVRREGS                     = 0x12
--	PTRACE_GETVSRREGS                    = 0x1b
--	PTRACE_GET_DEBUGREG                  = 0x19
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETEVRREGS                    = 0x15
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGS64                     = 0x17
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SETVRREGS                     = 0x13
--	PTRACE_SETVSRREGS                    = 0x1c
--	PTRACE_SET_DEBUGREG                  = 0x1a
--	PTRACE_SINGLEBLOCK                   = 0x100
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	PT_CCR                               = 0x26
--	PT_CTR                               = 0x23
--	PT_DAR                               = 0x29
--	PT_DSCR                              = 0x2c
--	PT_DSISR                             = 0x2a
--	PT_FPR0                              = 0x30
--	PT_FPSCR                             = 0x50
--	PT_LNK                               = 0x24
--	PT_MSR                               = 0x21
--	PT_NIP                               = 0x20
--	PT_ORIG_R3                           = 0x22
--	PT_R0                                = 0x0
--	PT_R1                                = 0x1
--	PT_R10                               = 0xa
--	PT_R11                               = 0xb
--	PT_R12                               = 0xc
--	PT_R13                               = 0xd
--	PT_R14                               = 0xe
--	PT_R15                               = 0xf
--	PT_R16                               = 0x10
--	PT_R17                               = 0x11
--	PT_R18                               = 0x12
--	PT_R19                               = 0x13
--	PT_R2                                = 0x2
--	PT_R20                               = 0x14
--	PT_R21                               = 0x15
--	PT_R22                               = 0x16
--	PT_R23                               = 0x17
--	PT_R24                               = 0x18
--	PT_R25                               = 0x19
--	PT_R26                               = 0x1a
--	PT_R27                               = 0x1b
--	PT_R28                               = 0x1c
--	PT_R29                               = 0x1d
--	PT_R3                                = 0x3
--	PT_R30                               = 0x1e
--	PT_R31                               = 0x1f
--	PT_R4                                = 0x4
--	PT_R5                                = 0x5
--	PT_R6                                = 0x6
--	PT_R7                                = 0x7
--	PT_R8                                = 0x8
--	PT_R9                                = 0x9
--	PT_REGS_COUNT                        = 0x2c
--	PT_RESULT                            = 0x2b
--	PT_SOFTE                             = 0x27
--	PT_TRAP                              = 0x28
--	PT_VR0                               = 0x52
--	PT_VRSAVE                            = 0x94
--	PT_VSCR                              = 0x93
--	PT_VSR0                              = 0x96
--	PT_VSR31                             = 0xd4
--	PT_XER                               = 0x25
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x4004667f
--	SIOCOUTQ                             = 0x40047473
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x14
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x15
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x10
--	SO_RCVTIMEO                          = 0x12
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x11
--	SO_SNDTIMEO                          = 0x13
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x400
--	TAB2                                 = 0x800
--	TAB3                                 = 0xc00
--	TABDLY                               = 0xc00
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x2000741f
--	TCGETA                               = 0x40147417
--	TCGETS                               = 0x402c7413
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x2000741d
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x80147418
--	TCSETAF                              = 0x8014741c
--	TCSETAW                              = 0x80147419
--	TCSETS                               = 0x802c7414
--	TCSETSF                              = 0x802c7416
--	TCSETSW                              = 0x802c7415
--	TCXONC                               = 0x2000741e
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x40045432
--	TIOCGETC                             = 0x40067412
--	TIOCGETD                             = 0x5424
--	TIOCGETP                             = 0x40067408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGLTC                             = 0x40067474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x4004667f
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_LOOP                           = 0x8000
--	TIOCM_OUT1                           = 0x2000
--	TIOCM_OUT2                           = 0x4000
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x40047473
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETC                             = 0x80067411
--	TIOCSETD                             = 0x5423
--	TIOCSETN                             = 0x8006740a
--	TIOCSETP                             = 0x80067409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSLTC                             = 0x80067475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTART                            = 0x2000746e
--	TIOCSTI                              = 0x5412
--	TIOCSTOP                             = 0x2000746f
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x400000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x801054d5
--	TUNDETACHFILTER                      = 0x801054d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x401054db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0x10
--	VEOF                                 = 0x4
--	VEOL                                 = 0x6
--	VEOL2                                = 0x8
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x5
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xb
--	VSTART                               = 0xd
--	VSTOP                                = 0xe
--	VSUSP                                = 0xc
--	VSWTC                                = 0x9
--	VT0                                  = 0x0
--	VT1                                  = 0x10000
--	VTDLY                                = 0x10000
--	VTIME                                = 0x7
--	VWERASE                              = 0xa
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4000
--	XTABS                                = 0xc00
-+	B1000000                         = 0x17
-+	B115200                          = 0x11
-+	B1152000                         = 0x18
-+	B1500000                         = 0x19
-+	B2000000                         = 0x1a
-+	B230400                          = 0x12
-+	B2500000                         = 0x1b
-+	B3000000                         = 0x1c
-+	B3500000                         = 0x1d
-+	B4000000                         = 0x1e
-+	B460800                          = 0x13
-+	B500000                          = 0x14
-+	B57600                           = 0x10
-+	B576000                          = 0x15
-+	B921600                          = 0x16
-+	BLKBSZGET                        = 0x40081270
-+	BLKBSZSET                        = 0x80081271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40081272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1f
-+	BS1                              = 0x8000
-+	BSDLY                            = 0x8000
-+	CBAUD                            = 0xff
-+	CBAUDEX                          = 0x0
-+	CIBAUD                           = 0xff0000
-+	CLOCAL                           = 0x8000
-+	CR1                              = 0x1000
-+	CR2                              = 0x2000
-+	CR3                              = 0x3000
-+	CRDLY                            = 0x3000
-+	CREAD                            = 0x800
-+	CS6                              = 0x100
-+	CS7                              = 0x200
-+	CS8                              = 0x300
-+	CSIZE                            = 0x300
-+	CSTOPB                           = 0x400
-+	ECHOCTL                          = 0x40
-+	ECHOE                            = 0x2
-+	ECHOK                            = 0x4
-+	ECHOKE                           = 0x1
-+	ECHONL                           = 0x10
-+	ECHOPRT                          = 0x20
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000000
-+	FF1                              = 0x4000
-+	FFDLY                            = 0x4000
-+	FLUSHO                           = 0x800000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0xc
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0xd
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0xe
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x4000
-+	ICANON                           = 0x100
-+	IEXTEN                           = 0x400
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x80
-+	IUCLC                            = 0x1000
-+	IXOFF                            = 0x400
-+	IXON                             = 0x200
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x80
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x40
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x2000
-+	MCL_FUTURE                       = 0x4000
-+	MCL_ONFAULT                      = 0x8000
-+	NFDBITS                          = 0x40
-+	NL2                              = 0x200
-+	NL3                              = 0x300
-+	NLDLY                            = 0x300
-+	NOFLSH                           = 0x80000000
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x4
-+	ONLCR                            = 0x2
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x20000
-+	O_DIRECTORY                      = 0x4000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x8000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x404000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x1000
-+	PARODD                           = 0x2000
-+	PENDIN                           = 0x20000000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4010743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80107446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x8010744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80107447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PROT_SAO                         = 0x10
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_GETEVRREGS                = 0x14
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GETREGS64                 = 0x16
-+	PTRACE_GETVRREGS                 = 0x12
-+	PTRACE_GETVSRREGS                = 0x1b
-+	PTRACE_GET_DEBUGREG              = 0x19
-+	PTRACE_SETEVRREGS                = 0x15
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SETREGS64                 = 0x17
-+	PTRACE_SETVRREGS                 = 0x13
-+	PTRACE_SETVSRREGS                = 0x1c
-+	PTRACE_SET_DEBUGREG              = 0x1a
-+	PTRACE_SINGLEBLOCK               = 0x100
-+	PTRACE_SYSEMU                    = 0x1d
-+	PTRACE_SYSEMU_SINGLESTEP         = 0x1e
-+	PT_CCR                           = 0x26
-+	PT_CTR                           = 0x23
-+	PT_DAR                           = 0x29
-+	PT_DSCR                          = 0x2c
-+	PT_DSISR                         = 0x2a
-+	PT_FPR0                          = 0x30
-+	PT_FPSCR                         = 0x50
-+	PT_LNK                           = 0x24
-+	PT_MSR                           = 0x21
-+	PT_NIP                           = 0x20
-+	PT_ORIG_R3                       = 0x22
-+	PT_R0                            = 0x0
-+	PT_R1                            = 0x1
-+	PT_R10                           = 0xa
-+	PT_R11                           = 0xb
-+	PT_R12                           = 0xc
-+	PT_R13                           = 0xd
-+	PT_R14                           = 0xe
-+	PT_R15                           = 0xf
-+	PT_R16                           = 0x10
-+	PT_R17                           = 0x11
-+	PT_R18                           = 0x12
-+	PT_R19                           = 0x13
-+	PT_R2                            = 0x2
-+	PT_R20                           = 0x14
-+	PT_R21                           = 0x15
-+	PT_R22                           = 0x16
-+	PT_R23                           = 0x17
-+	PT_R24                           = 0x18
-+	PT_R25                           = 0x19
-+	PT_R26                           = 0x1a
-+	PT_R27                           = 0x1b
-+	PT_R28                           = 0x1c
-+	PT_R29                           = 0x1d
-+	PT_R3                            = 0x3
-+	PT_R30                           = 0x1e
-+	PT_R31                           = 0x1f
-+	PT_R4                            = 0x4
-+	PT_R5                            = 0x5
-+	PT_R6                            = 0x6
-+	PT_R7                            = 0x7
-+	PT_R8                            = 0x8
-+	PT_R9                            = 0x9
-+	PT_REGS_COUNT                    = 0x2c
-+	PT_RESULT                        = 0x2b
-+	PT_SOFTE                         = 0x27
-+	PT_TRAP                          = 0x28
-+	PT_VR0                           = 0x52
-+	PT_VRSAVE                        = 0x94
-+	PT_VSCR                          = 0x93
-+	PT_VSR0                          = 0x96
-+	PT_VSR31                         = 0xd4
-+	PT_XER                           = 0x25
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4008700d
-+	RTC_EPOCH_SET                    = 0x8008700e
-+	RTC_IRQP_READ                    = 0x4008700b
-+	RTC_IRQP_SET                     = 0x8008700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x40207011
-+	RTC_PLL_SET                      = 0x80207012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x4004667f
-+	SIOCOUTQ                         = 0x40047473
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x14
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x15
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x10
-+	SO_RCVTIMEO                      = 0x12
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x12
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x11
-+	SO_SNDTIMEO                      = 0x13
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x13
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x400
-+	TAB2                             = 0x800
-+	TAB3                             = 0xc00
-+	TABDLY                           = 0xc00
-+	TCFLSH                           = 0x2000741f
-+	TCGETA                           = 0x40147417
-+	TCGETS                           = 0x402c7413
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x2000741d
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x80147418
-+	TCSETAF                          = 0x8014741c
-+	TCSETAW                          = 0x80147419
-+	TCSETS                           = 0x802c7414
-+	TCSETSF                          = 0x802c7416
-+	TCSETSW                          = 0x802c7415
-+	TCXONC                           = 0x2000741e
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETC                         = 0x40067412
-+	TIOCGETD                         = 0x5424
-+	TIOCGETP                         = 0x40067408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGLTC                         = 0x40067474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x4004667f
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_LOOP                       = 0x8000
-+	TIOCM_OUT1                       = 0x2000
-+	TIOCM_OUT2                       = 0x4000
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x40047473
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETC                         = 0x80067411
-+	TIOCSETD                         = 0x5423
-+	TIOCSETN                         = 0x8006740a
-+	TIOCSETP                         = 0x80067409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSLTC                         = 0x80067475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTART                        = 0x2000746e
-+	TIOCSTI                          = 0x5412
-+	TIOCSTOP                         = 0x2000746f
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x400000
-+	TUNATTACHFILTER                  = 0x801054d5
-+	TUNDETACHFILTER                  = 0x801054d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x401054db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0x10
-+	VEOF                             = 0x4
-+	VEOL                             = 0x6
-+	VEOL2                            = 0x8
-+	VMIN                             = 0x5
-+	VREPRINT                         = 0xb
-+	VSTART                           = 0xd
-+	VSTOP                            = 0xe
-+	VSUSP                            = 0xc
-+	VSWTC                            = 0x9
-+	VT1                              = 0x10000
-+	VTDLY                            = 0x10000
-+	VTIME                            = 0x7
-+	VWERASE                          = 0xa
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4000
-+	XTABS                            = 0xc00
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1943,23 +562,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x3a)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1976,8 +587,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1985,103 +594,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2092,172 +668,180 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	58:  "file locking deadlock error",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{58, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-index ad29c3d3..4231b20b 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-@@ -3,7 +3,7 @@
- 
- // +build ppc64le,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
-@@ -11,1930 +11,549 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x17
--	B110                                 = 0x3
--	B115200                              = 0x11
--	B1152000                             = 0x18
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x19
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x1a
--	B230400                              = 0x12
--	B2400                                = 0xb
--	B2500000                             = 0x1b
--	B300                                 = 0x7
--	B3000000                             = 0x1c
--	B3500000                             = 0x1d
--	B38400                               = 0xf
--	B4000000                             = 0x1e
--	B460800                              = 0x13
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x14
--	B57600                               = 0x10
--	B576000                              = 0x15
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x16
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x40081270
--	BLKBSZSET                            = 0x80081271
--	BLKFLSBUF                            = 0x20001261
--	BLKFRAGET                            = 0x20001265
--	BLKFRASET                            = 0x20001264
--	BLKGETSIZE                           = 0x20001260
--	BLKGETSIZE64                         = 0x40081272
--	BLKPBSZGET                           = 0x2000127b
--	BLKRAGET                             = 0x20001263
--	BLKRASET                             = 0x20001262
--	BLKROGET                             = 0x2000125e
--	BLKROSET                             = 0x2000125d
--	BLKRRPART                            = 0x2000125f
--	BLKSECTGET                           = 0x20001267
--	BLKSECTSET                           = 0x20001266
--	BLKSSZGET                            = 0x20001268
--	BOTHER                               = 0x1f
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x8000
--	BSDLY                                = 0x8000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0xff
--	CBAUDEX                              = 0x0
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0xff0000
--	CLOCAL                               = 0x8000
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x1000
--	CR2                                  = 0x2000
--	CR3                                  = 0x3000
--	CRDLY                                = 0x3000
--	CREAD                                = 0x800
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x100
--	CS7                                  = 0x200
--	CS8                                  = 0x300
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x300
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x400
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x40
--	ECHOE                                = 0x2
--	ECHOK                                = 0x4
--	ECHOKE                               = 0x1
--	ECHONL                               = 0x10
--	ECHOPRT                              = 0x20
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x4000
--	FFDLY                                = 0x4000
--	FLUSHO                               = 0x800000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x800c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x80106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x400c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x5
--	F_GETLK64                            = 0xc
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0xd
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0xe
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x4000
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x100
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x400
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x80
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x1000
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x400
--	IXON                                 = 0x200
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x80
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x40
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x2000
--	MCL_FUTURE                           = 0x4000
--	MCL_ONFAULT                          = 0x8000
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NL2                                  = 0x200
--	NL3                                  = 0x300
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x300
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80000000
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x4
--	ONLCR                                = 0x2
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x20000
--	O_DIRECTORY                          = 0x4000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x8000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x404000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x1000
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x2000
--	PENDIN                               = 0x20000000
--	PERF_EVENT_IOC_DISABLE               = 0x20002401
--	PERF_EVENT_IOC_ENABLE                = 0x20002400
--	PERF_EVENT_IOC_ID                    = 0x40082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
--	PERF_EVENT_IOC_PERIOD                = 0x80082404
--	PERF_EVENT_IOC_REFRESH               = 0x20002402
--	PERF_EVENT_IOC_RESET                 = 0x20002403
--	PERF_EVENT_IOC_SET_BPF               = 0x80042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_SAO                             = 0x10
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETEVRREGS                    = 0x14
--	PTRACE_GETFPREGS                     = 0xe
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGS64                     = 0x16
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GETVRREGS                     = 0x12
--	PTRACE_GETVSRREGS                    = 0x1b
--	PTRACE_GET_DEBUGREG                  = 0x19
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETEVRREGS                    = 0x15
--	PTRACE_SETFPREGS                     = 0xf
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGS64                     = 0x17
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SETVRREGS                     = 0x13
--	PTRACE_SETVSRREGS                    = 0x1c
--	PTRACE_SET_DEBUGREG                  = 0x1a
--	PTRACE_SINGLEBLOCK                   = 0x100
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TRACEME                       = 0x0
--	PT_CCR                               = 0x26
--	PT_CTR                               = 0x23
--	PT_DAR                               = 0x29
--	PT_DSCR                              = 0x2c
--	PT_DSISR                             = 0x2a
--	PT_FPR0                              = 0x30
--	PT_FPSCR                             = 0x50
--	PT_LNK                               = 0x24
--	PT_MSR                               = 0x21
--	PT_NIP                               = 0x20
--	PT_ORIG_R3                           = 0x22
--	PT_R0                                = 0x0
--	PT_R1                                = 0x1
--	PT_R10                               = 0xa
--	PT_R11                               = 0xb
--	PT_R12                               = 0xc
--	PT_R13                               = 0xd
--	PT_R14                               = 0xe
--	PT_R15                               = 0xf
--	PT_R16                               = 0x10
--	PT_R17                               = 0x11
--	PT_R18                               = 0x12
--	PT_R19                               = 0x13
--	PT_R2                                = 0x2
--	PT_R20                               = 0x14
--	PT_R21                               = 0x15
--	PT_R22                               = 0x16
--	PT_R23                               = 0x17
--	PT_R24                               = 0x18
--	PT_R25                               = 0x19
--	PT_R26                               = 0x1a
--	PT_R27                               = 0x1b
--	PT_R28                               = 0x1c
--	PT_R29                               = 0x1d
--	PT_R3                                = 0x3
--	PT_R30                               = 0x1e
--	PT_R31                               = 0x1f
--	PT_R4                                = 0x4
--	PT_R5                                = 0x5
--	PT_R6                                = 0x6
--	PT_R7                                = 0x7
--	PT_R8                                = 0x8
--	PT_R9                                = 0x9
--	PT_REGS_COUNT                        = 0x2c
--	PT_RESULT                            = 0x2b
--	PT_SOFTE                             = 0x27
--	PT_TRAP                              = 0x28
--	PT_VR0                               = 0x52
--	PT_VRSAVE                            = 0x94
--	PT_VSCR                              = 0x93
--	PT_VSR0                              = 0x96
--	PT_VSR31                             = 0xd4
--	PT_XER                               = 0x25
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x4004667f
--	SIOCOUTQ                             = 0x40047473
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x14
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x15
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x10
--	SO_RCVTIMEO                          = 0x12
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x11
--	SO_SNDTIMEO                          = 0x13
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x400
--	TAB2                                 = 0x800
--	TAB3                                 = 0xc00
--	TABDLY                               = 0xc00
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x2000741f
--	TCGETA                               = 0x40147417
--	TCGETS                               = 0x402c7413
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x2000741d
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x80147418
--	TCSETAF                              = 0x8014741c
--	TCSETAW                              = 0x80147419
--	TCSETS                               = 0x802c7414
--	TCSETSF                              = 0x802c7416
--	TCSETSW                              = 0x802c7415
--	TCXONC                               = 0x2000741e
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x40045432
--	TIOCGETC                             = 0x40067412
--	TIOCGETD                             = 0x5424
--	TIOCGETP                             = 0x40067408
--	TIOCGEXCL                            = 0x40045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGLTC                             = 0x40067474
--	TIOCGPGRP                            = 0x40047477
--	TIOCGPKT                             = 0x40045438
--	TIOCGPTLCK                           = 0x40045439
--	TIOCGPTN                             = 0x40045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x40087468
--	TIOCINQ                              = 0x4004667f
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_LOOP                           = 0x8000
--	TIOCM_OUT1                           = 0x2000
--	TIOCM_OUT2                           = 0x4000
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x40047473
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETC                             = 0x80067411
--	TIOCSETD                             = 0x5423
--	TIOCSETN                             = 0x8006740a
--	TIOCSETP                             = 0x80067409
--	TIOCSIG                              = 0x80045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSLTC                             = 0x80067475
--	TIOCSPGRP                            = 0x80047476
--	TIOCSPTLCK                           = 0x80045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTART                            = 0x2000746e
--	TIOCSTI                              = 0x5412
--	TIOCSTOP                             = 0x2000746f
--	TIOCSWINSZ                           = 0x80087467
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x400000
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x801054d5
--	TUNDETACHFILTER                      = 0x801054d6
--	TUNGETFEATURES                       = 0x400454cf
--	TUNGETFILTER                         = 0x401054db
--	TUNGETIFF                            = 0x400454d2
--	TUNGETSNDBUF                         = 0x400454d3
--	TUNGETVNETBE                         = 0x400454df
--	TUNGETVNETHDRSZ                      = 0x400454d7
--	TUNGETVNETLE                         = 0x400454dd
--	TUNSETDEBUG                          = 0x800454c9
--	TUNSETGROUP                          = 0x800454ce
--	TUNSETIFF                            = 0x800454ca
--	TUNSETIFINDEX                        = 0x800454da
--	TUNSETLINK                           = 0x800454cd
--	TUNSETNOCSUM                         = 0x800454c8
--	TUNSETOFFLOAD                        = 0x800454d0
--	TUNSETOWNER                          = 0x800454cc
--	TUNSETPERSIST                        = 0x800454cb
--	TUNSETQUEUE                          = 0x800454d9
--	TUNSETSNDBUF                         = 0x800454d4
--	TUNSETTXFILTER                       = 0x800454d1
--	TUNSETVNETBE                         = 0x800454de
--	TUNSETVNETHDRSZ                      = 0x800454d8
--	TUNSETVNETLE                         = 0x800454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0x10
--	VEOF                                 = 0x4
--	VEOL                                 = 0x6
--	VEOL2                                = 0x8
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x5
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xb
--	VSTART                               = 0xd
--	VSTOP                                = 0xe
--	VSUSP                                = 0xc
--	VSWTC                                = 0x9
--	VT0                                  = 0x0
--	VT1                                  = 0x10000
--	VTDLY                                = 0x10000
--	VTIME                                = 0x7
--	VWERASE                              = 0xa
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4000
--	XTABS                                = 0xc00
-+	B1000000                         = 0x17
-+	B115200                          = 0x11
-+	B1152000                         = 0x18
-+	B1500000                         = 0x19
-+	B2000000                         = 0x1a
-+	B230400                          = 0x12
-+	B2500000                         = 0x1b
-+	B3000000                         = 0x1c
-+	B3500000                         = 0x1d
-+	B4000000                         = 0x1e
-+	B460800                          = 0x13
-+	B500000                          = 0x14
-+	B57600                           = 0x10
-+	B576000                          = 0x15
-+	B921600                          = 0x16
-+	BLKBSZGET                        = 0x40081270
-+	BLKBSZSET                        = 0x80081271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40081272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
-+	BOTHER                           = 0x1f
-+	BS1                              = 0x8000
-+	BSDLY                            = 0x8000
-+	CBAUD                            = 0xff
-+	CBAUDEX                          = 0x0
-+	CIBAUD                           = 0xff0000
-+	CLOCAL                           = 0x8000
-+	CR1                              = 0x1000
-+	CR2                              = 0x2000
-+	CR3                              = 0x3000
-+	CRDLY                            = 0x3000
-+	CREAD                            = 0x800
-+	CS6                              = 0x100
-+	CS7                              = 0x200
-+	CS8                              = 0x300
-+	CSIZE                            = 0x300
-+	CSTOPB                           = 0x400
-+	ECHOCTL                          = 0x40
-+	ECHOE                            = 0x2
-+	ECHOK                            = 0x4
-+	ECHOKE                           = 0x1
-+	ECHONL                           = 0x10
-+	ECHOPRT                          = 0x20
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000000
-+	FF1                              = 0x4000
-+	FFDLY                            = 0x4000
-+	FLUSHO                           = 0x800000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0xc
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0xd
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0xe
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x4000
-+	ICANON                           = 0x100
-+	IEXTEN                           = 0x400
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
-+	ISIG                             = 0x80
-+	IUCLC                            = 0x1000
-+	IXOFF                            = 0x400
-+	IXON                             = 0x200
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x80
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x40
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x2000
-+	MCL_FUTURE                       = 0x4000
-+	MCL_ONFAULT                      = 0x8000
-+	NFDBITS                          = 0x40
-+	NL2                              = 0x200
-+	NL3                              = 0x300
-+	NLDLY                            = 0x300
-+	NOFLSH                           = 0x80000000
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
-+	OLCUC                            = 0x4
-+	ONLCR                            = 0x2
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x20000
-+	O_DIRECTORY                      = 0x4000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x8000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x404000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x1000
-+	PARODD                           = 0x2000
-+	PENDIN                           = 0x20000000
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4010743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80107446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x8010744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80107447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PROT_SAO                         = 0x10
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_GETEVRREGS                = 0x14
-+	PTRACE_GETFPREGS                 = 0xe
-+	PTRACE_GETREGS64                 = 0x16
-+	PTRACE_GETVRREGS                 = 0x12
-+	PTRACE_GETVSRREGS                = 0x1b
-+	PTRACE_GET_DEBUGREG              = 0x19
-+	PTRACE_SETEVRREGS                = 0x15
-+	PTRACE_SETFPREGS                 = 0xf
-+	PTRACE_SETREGS64                 = 0x17
-+	PTRACE_SETVRREGS                 = 0x13
-+	PTRACE_SETVSRREGS                = 0x1c
-+	PTRACE_SET_DEBUGREG              = 0x1a
-+	PTRACE_SINGLEBLOCK               = 0x100
-+	PTRACE_SYSEMU                    = 0x1d
-+	PTRACE_SYSEMU_SINGLESTEP         = 0x1e
-+	PT_CCR                           = 0x26
-+	PT_CTR                           = 0x23
-+	PT_DAR                           = 0x29
-+	PT_DSCR                          = 0x2c
-+	PT_DSISR                         = 0x2a
-+	PT_FPR0                          = 0x30
-+	PT_FPSCR                         = 0x50
-+	PT_LNK                           = 0x24
-+	PT_MSR                           = 0x21
-+	PT_NIP                           = 0x20
-+	PT_ORIG_R3                       = 0x22
-+	PT_R0                            = 0x0
-+	PT_R1                            = 0x1
-+	PT_R10                           = 0xa
-+	PT_R11                           = 0xb
-+	PT_R12                           = 0xc
-+	PT_R13                           = 0xd
-+	PT_R14                           = 0xe
-+	PT_R15                           = 0xf
-+	PT_R16                           = 0x10
-+	PT_R17                           = 0x11
-+	PT_R18                           = 0x12
-+	PT_R19                           = 0x13
-+	PT_R2                            = 0x2
-+	PT_R20                           = 0x14
-+	PT_R21                           = 0x15
-+	PT_R22                           = 0x16
-+	PT_R23                           = 0x17
-+	PT_R24                           = 0x18
-+	PT_R25                           = 0x19
-+	PT_R26                           = 0x1a
-+	PT_R27                           = 0x1b
-+	PT_R28                           = 0x1c
-+	PT_R29                           = 0x1d
-+	PT_R3                            = 0x3
-+	PT_R30                           = 0x1e
-+	PT_R31                           = 0x1f
-+	PT_R4                            = 0x4
-+	PT_R5                            = 0x5
-+	PT_R6                            = 0x6
-+	PT_R7                            = 0x7
-+	PT_R8                            = 0x8
-+	PT_R9                            = 0x9
-+	PT_REGS_COUNT                    = 0x2c
-+	PT_RESULT                        = 0x2b
-+	PT_SOFTE                         = 0x27
-+	PT_TRAP                          = 0x28
-+	PT_VR0                           = 0x52
-+	PT_VRSAVE                        = 0x94
-+	PT_VSCR                          = 0x93
-+	PT_VSR0                          = 0x96
-+	PT_VSR31                         = 0xd4
-+	PT_XER                           = 0x25
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4008700d
-+	RTC_EPOCH_SET                    = 0x8008700e
-+	RTC_IRQP_READ                    = 0x4008700b
-+	RTC_IRQP_SET                     = 0x8008700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x40207011
-+	RTC_PLL_SET                      = 0x80207012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
-+	SIOCINQ                          = 0x4004667f
-+	SIOCOUTQ                         = 0x40047473
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x14
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x15
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x10
-+	SO_RCVTIMEO                      = 0x12
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x12
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x11
-+	SO_SNDTIMEO                      = 0x13
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x13
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x400
-+	TAB2                             = 0x800
-+	TAB3                             = 0xc00
-+	TABDLY                           = 0xc00
-+	TCFLSH                           = 0x2000741f
-+	TCGETA                           = 0x40147417
-+	TCGETS                           = 0x402c7413
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x2000741d
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x80147418
-+	TCSETAF                          = 0x8014741c
-+	TCSETAW                          = 0x80147419
-+	TCSETS                           = 0x802c7414
-+	TCSETSF                          = 0x802c7416
-+	TCSETSW                          = 0x802c7415
-+	TCXONC                           = 0x2000741e
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x40045432
-+	TIOCGETC                         = 0x40067412
-+	TIOCGETD                         = 0x5424
-+	TIOCGETP                         = 0x40067408
-+	TIOCGEXCL                        = 0x40045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x40285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGLTC                         = 0x40067474
-+	TIOCGPGRP                        = 0x40047477
-+	TIOCGPKT                         = 0x40045438
-+	TIOCGPTLCK                       = 0x40045439
-+	TIOCGPTN                         = 0x40045430
-+	TIOCGPTPEER                      = 0x20005441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x40087468
-+	TIOCINQ                          = 0x4004667f
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_LOOP                       = 0x8000
-+	TIOCM_OUT1                       = 0x2000
-+	TIOCM_OUT2                       = 0x4000
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x40047473
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETC                         = 0x80067411
-+	TIOCSETD                         = 0x5423
-+	TIOCSETN                         = 0x8006740a
-+	TIOCSETP                         = 0x80067409
-+	TIOCSIG                          = 0x80045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSLTC                         = 0x80067475
-+	TIOCSPGRP                        = 0x80047476
-+	TIOCSPTLCK                       = 0x80045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTART                        = 0x2000746e
-+	TIOCSTI                          = 0x5412
-+	TIOCSTOP                         = 0x2000746f
-+	TIOCSWINSZ                       = 0x80087467
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x400000
-+	TUNATTACHFILTER                  = 0x801054d5
-+	TUNDETACHFILTER                  = 0x801054d6
-+	TUNGETDEVNETNS                   = 0x200054e3
-+	TUNGETFEATURES                   = 0x400454cf
-+	TUNGETFILTER                     = 0x401054db
-+	TUNGETIFF                        = 0x400454d2
-+	TUNGETSNDBUF                     = 0x400454d3
-+	TUNGETVNETBE                     = 0x400454df
-+	TUNGETVNETHDRSZ                  = 0x400454d7
-+	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
-+	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
-+	TUNSETGROUP                      = 0x800454ce
-+	TUNSETIFF                        = 0x800454ca
-+	TUNSETIFINDEX                    = 0x800454da
-+	TUNSETLINK                       = 0x800454cd
-+	TUNSETNOCSUM                     = 0x800454c8
-+	TUNSETOFFLOAD                    = 0x800454d0
-+	TUNSETOWNER                      = 0x800454cc
-+	TUNSETPERSIST                    = 0x800454cb
-+	TUNSETQUEUE                      = 0x800454d9
-+	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
-+	TUNSETTXFILTER                   = 0x800454d1
-+	TUNSETVNETBE                     = 0x800454de
-+	TUNSETVNETHDRSZ                  = 0x800454d8
-+	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
-+	VDISCARD                         = 0x10
-+	VEOF                             = 0x4
-+	VEOL                             = 0x6
-+	VEOL2                            = 0x8
-+	VMIN                             = 0x5
-+	VREPRINT                         = 0xb
-+	VSTART                           = 0xd
-+	VSTOP                            = 0xe
-+	VSUSP                            = 0xc
-+	VSWTC                            = 0x9
-+	VT1                              = 0x10000
-+	VTDLY                            = 0x10000
-+	VTIME                            = 0x7
-+	VWERASE                          = 0xa
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4000
-+	XTABS                            = 0xc00
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1943,23 +562,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x3a)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1976,8 +587,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1985,103 +594,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2092,172 +668,180 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	58:  "file locking deadlock error",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{58, "EDEADLOCK", "file locking deadlock error"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
-new file mode 100644
-index 00000000..6a0b2d29
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
-@@ -0,0 +1,771 @@
-+// mkerrors.sh -Wall -Werror -static -I/tmp/include
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build riscv64,linux
-+
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80081270
-+	BLKBSZSET                        = 0x40081271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80081272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0x5
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x4000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8010743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40107446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x4010744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40107447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8008700d
-+	RTC_EPOCH_SET                    = 0x4008700e
-+	RTC_IRQP_READ                    = 0x8008700b
-+	RTC_IRQP_SET                     = 0x4008700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x80207011
-+	RTC_PLL_SET                      = 0x40207012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x401054d5
-+	TUNDETACHFILTER                  = 0x401054d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x801054db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
-+)
-+
-+// Errors
-+const (
-+	EADDRINUSE      = syscall.Errno(0x62)
-+	EADDRNOTAVAIL   = syscall.Errno(0x63)
-+	EADV            = syscall.Errno(0x44)
-+	EAFNOSUPPORT    = syscall.Errno(0x61)
-+	EALREADY        = syscall.Errno(0x72)
-+	EBADE           = syscall.Errno(0x34)
-+	EBADFD          = syscall.Errno(0x4d)
-+	EBADMSG         = syscall.Errno(0x4a)
-+	EBADR           = syscall.Errno(0x35)
-+	EBADRQC         = syscall.Errno(0x38)
-+	EBADSLT         = syscall.Errno(0x39)
-+	EBFONT          = syscall.Errno(0x3b)
-+	ECANCELED       = syscall.Errno(0x7d)
-+	ECHRNG          = syscall.Errno(0x2c)
-+	ECOMM           = syscall.Errno(0x46)
-+	ECONNABORTED    = syscall.Errno(0x67)
-+	ECONNREFUSED    = syscall.Errno(0x6f)
-+	ECONNRESET      = syscall.Errno(0x68)
-+	EDEADLK         = syscall.Errno(0x23)
-+	EDEADLOCK       = syscall.Errno(0x23)
-+	EDESTADDRREQ    = syscall.Errno(0x59)
-+	EDOTDOT         = syscall.Errno(0x49)
-+	EDQUOT          = syscall.Errno(0x7a)
-+	EHOSTDOWN       = syscall.Errno(0x70)
-+	EHOSTUNREACH    = syscall.Errno(0x71)
-+	EHWPOISON       = syscall.Errno(0x85)
-+	EIDRM           = syscall.Errno(0x2b)
-+	EILSEQ          = syscall.Errno(0x54)
-+	EINPROGRESS     = syscall.Errno(0x73)
-+	EISCONN         = syscall.Errno(0x6a)
-+	EISNAM          = syscall.Errno(0x78)
-+	EKEYEXPIRED     = syscall.Errno(0x7f)
-+	EKEYREJECTED    = syscall.Errno(0x81)
-+	EKEYREVOKED     = syscall.Errno(0x80)
-+	EL2HLT          = syscall.Errno(0x33)
-+	EL2NSYNC        = syscall.Errno(0x2d)
-+	EL3HLT          = syscall.Errno(0x2e)
-+	EL3RST          = syscall.Errno(0x2f)
-+	ELIBACC         = syscall.Errno(0x4f)
-+	ELIBBAD         = syscall.Errno(0x50)
-+	ELIBEXEC        = syscall.Errno(0x53)
-+	ELIBMAX         = syscall.Errno(0x52)
-+	ELIBSCN         = syscall.Errno(0x51)
-+	ELNRNG          = syscall.Errno(0x30)
-+	ELOOP           = syscall.Errno(0x28)
-+	EMEDIUMTYPE     = syscall.Errno(0x7c)
-+	EMSGSIZE        = syscall.Errno(0x5a)
-+	EMULTIHOP       = syscall.Errno(0x48)
-+	ENAMETOOLONG    = syscall.Errno(0x24)
-+	ENAVAIL         = syscall.Errno(0x77)
-+	ENETDOWN        = syscall.Errno(0x64)
-+	ENETRESET       = syscall.Errno(0x66)
-+	ENETUNREACH     = syscall.Errno(0x65)
-+	ENOANO          = syscall.Errno(0x37)
-+	ENOBUFS         = syscall.Errno(0x69)
-+	ENOCSI          = syscall.Errno(0x32)
-+	ENODATA         = syscall.Errno(0x3d)
-+	ENOKEY          = syscall.Errno(0x7e)
-+	ENOLCK          = syscall.Errno(0x25)
-+	ENOLINK         = syscall.Errno(0x43)
-+	ENOMEDIUM       = syscall.Errno(0x7b)
-+	ENOMSG          = syscall.Errno(0x2a)
-+	ENONET          = syscall.Errno(0x40)
-+	ENOPKG          = syscall.Errno(0x41)
-+	ENOPROTOOPT     = syscall.Errno(0x5c)
-+	ENOSR           = syscall.Errno(0x3f)
-+	ENOSTR          = syscall.Errno(0x3c)
-+	ENOSYS          = syscall.Errno(0x26)
-+	ENOTCONN        = syscall.Errno(0x6b)
-+	ENOTEMPTY       = syscall.Errno(0x27)
-+	ENOTNAM         = syscall.Errno(0x76)
-+	ENOTRECOVERABLE = syscall.Errno(0x83)
-+	ENOTSOCK        = syscall.Errno(0x58)
-+	ENOTSUP         = syscall.Errno(0x5f)
-+	ENOTUNIQ        = syscall.Errno(0x4c)
-+	EOPNOTSUPP      = syscall.Errno(0x5f)
-+	EOVERFLOW       = syscall.Errno(0x4b)
-+	EOWNERDEAD      = syscall.Errno(0x82)
-+	EPFNOSUPPORT    = syscall.Errno(0x60)
-+	EPROTO          = syscall.Errno(0x47)
-+	EPROTONOSUPPORT = syscall.Errno(0x5d)
-+	EPROTOTYPE      = syscall.Errno(0x5b)
-+	EREMCHG         = syscall.Errno(0x4e)
-+	EREMOTE         = syscall.Errno(0x42)
-+	EREMOTEIO       = syscall.Errno(0x79)
-+	ERESTART        = syscall.Errno(0x55)
-+	ERFKILL         = syscall.Errno(0x84)
-+	ESHUTDOWN       = syscall.Errno(0x6c)
-+	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-+	ESRMNT          = syscall.Errno(0x45)
-+	ESTALE          = syscall.Errno(0x74)
-+	ESTRPIPE        = syscall.Errno(0x56)
-+	ETIME           = syscall.Errno(0x3e)
-+	ETIMEDOUT       = syscall.Errno(0x6e)
-+	ETOOMANYREFS    = syscall.Errno(0x6d)
-+	EUCLEAN         = syscall.Errno(0x75)
-+	EUNATCH         = syscall.Errno(0x31)
-+	EUSERS          = syscall.Errno(0x57)
-+	EXFULL          = syscall.Errno(0x36)
-+)
-+
-+// Signals
-+const (
-+	SIGBUS    = syscall.Signal(0x7)
-+	SIGCHLD   = syscall.Signal(0x11)
-+	SIGCLD    = syscall.Signal(0x11)
-+	SIGCONT   = syscall.Signal(0x12)
-+	SIGIO     = syscall.Signal(0x1d)
-+	SIGPOLL   = syscall.Signal(0x1d)
-+	SIGPROF   = syscall.Signal(0x1b)
-+	SIGPWR    = syscall.Signal(0x1e)
-+	SIGSTKFLT = syscall.Signal(0x10)
-+	SIGSTOP   = syscall.Signal(0x13)
-+	SIGSYS    = syscall.Signal(0x1f)
-+	SIGTSTP   = syscall.Signal(0x14)
-+	SIGTTIN   = syscall.Signal(0x15)
-+	SIGTTOU   = syscall.Signal(0x16)
-+	SIGURG    = syscall.Signal(0x17)
-+	SIGUSR1   = syscall.Signal(0xa)
-+	SIGUSR2   = syscall.Signal(0xc)
-+	SIGVTALRM = syscall.Signal(0x1a)
-+	SIGWINCH  = syscall.Signal(0x1c)
-+	SIGXCPU   = syscall.Signal(0x18)
-+	SIGXFSZ   = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-index 3b570754..95e950fc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-@@ -3,7 +3,7 @@
- 
- // +build s390x,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go
- 
- package unix
-@@ -11,1930 +11,547 @@ package unix
- import "syscall"
- 
- const (
--	AF_ALG                               = 0x26
--	AF_APPLETALK                         = 0x5
--	AF_ASH                               = 0x12
--	AF_ATMPVC                            = 0x8
--	AF_ATMSVC                            = 0x14
--	AF_AX25                              = 0x3
--	AF_BLUETOOTH                         = 0x1f
--	AF_BRIDGE                            = 0x7
--	AF_CAIF                              = 0x25
--	AF_CAN                               = 0x1d
--	AF_DECnet                            = 0xc
--	AF_ECONET                            = 0x13
--	AF_FILE                              = 0x1
--	AF_IB                                = 0x1b
--	AF_IEEE802154                        = 0x24
--	AF_INET                              = 0x2
--	AF_INET6                             = 0xa
--	AF_IPX                               = 0x4
--	AF_IRDA                              = 0x17
--	AF_ISDN                              = 0x22
--	AF_IUCV                              = 0x20
--	AF_KCM                               = 0x29
--	AF_KEY                               = 0xf
--	AF_LLC                               = 0x1a
--	AF_LOCAL                             = 0x1
--	AF_MAX                               = 0x2b
--	AF_MPLS                              = 0x1c
--	AF_NETBEUI                           = 0xd
--	AF_NETLINK                           = 0x10
--	AF_NETROM                            = 0x6
--	AF_NFC                               = 0x27
--	AF_PACKET                            = 0x11
--	AF_PHONET                            = 0x23
--	AF_PPPOX                             = 0x18
--	AF_QIPCRTR                           = 0x2a
--	AF_RDS                               = 0x15
--	AF_ROSE                              = 0xb
--	AF_ROUTE                             = 0x10
--	AF_RXRPC                             = 0x21
--	AF_SECURITY                          = 0xe
--	AF_SNA                               = 0x16
--	AF_TIPC                              = 0x1e
--	AF_UNIX                              = 0x1
--	AF_UNSPEC                            = 0x0
--	AF_VSOCK                             = 0x28
--	AF_WANPIPE                           = 0x19
--	AF_X25                               = 0x9
--	ALG_OP_DECRYPT                       = 0x0
--	ALG_OP_ENCRYPT                       = 0x1
--	ALG_SET_AEAD_ASSOCLEN                = 0x4
--	ALG_SET_AEAD_AUTHSIZE                = 0x5
--	ALG_SET_IV                           = 0x2
--	ALG_SET_KEY                          = 0x1
--	ALG_SET_OP                           = 0x3
--	ARPHRD_6LOWPAN                       = 0x339
--	ARPHRD_ADAPT                         = 0x108
--	ARPHRD_APPLETLK                      = 0x8
--	ARPHRD_ARCNET                        = 0x7
--	ARPHRD_ASH                           = 0x30d
--	ARPHRD_ATM                           = 0x13
--	ARPHRD_AX25                          = 0x3
--	ARPHRD_BIF                           = 0x307
--	ARPHRD_CAIF                          = 0x336
--	ARPHRD_CAN                           = 0x118
--	ARPHRD_CHAOS                         = 0x5
--	ARPHRD_CISCO                         = 0x201
--	ARPHRD_CSLIP                         = 0x101
--	ARPHRD_CSLIP6                        = 0x103
--	ARPHRD_DDCMP                         = 0x205
--	ARPHRD_DLCI                          = 0xf
--	ARPHRD_ECONET                        = 0x30e
--	ARPHRD_EETHER                        = 0x2
--	ARPHRD_ETHER                         = 0x1
--	ARPHRD_EUI64                         = 0x1b
--	ARPHRD_FCAL                          = 0x311
--	ARPHRD_FCFABRIC                      = 0x313
--	ARPHRD_FCPL                          = 0x312
--	ARPHRD_FCPP                          = 0x310
--	ARPHRD_FDDI                          = 0x306
--	ARPHRD_FRAD                          = 0x302
--	ARPHRD_HDLC                          = 0x201
--	ARPHRD_HIPPI                         = 0x30c
--	ARPHRD_HWX25                         = 0x110
--	ARPHRD_IEEE1394                      = 0x18
--	ARPHRD_IEEE802                       = 0x6
--	ARPHRD_IEEE80211                     = 0x321
--	ARPHRD_IEEE80211_PRISM               = 0x322
--	ARPHRD_IEEE80211_RADIOTAP            = 0x323
--	ARPHRD_IEEE802154                    = 0x324
--	ARPHRD_IEEE802154_MONITOR            = 0x325
--	ARPHRD_IEEE802_TR                    = 0x320
--	ARPHRD_INFINIBAND                    = 0x20
--	ARPHRD_IP6GRE                        = 0x337
--	ARPHRD_IPDDP                         = 0x309
--	ARPHRD_IPGRE                         = 0x30a
--	ARPHRD_IRDA                          = 0x30f
--	ARPHRD_LAPB                          = 0x204
--	ARPHRD_LOCALTLK                      = 0x305
--	ARPHRD_LOOPBACK                      = 0x304
--	ARPHRD_METRICOM                      = 0x17
--	ARPHRD_NETLINK                       = 0x338
--	ARPHRD_NETROM                        = 0x0
--	ARPHRD_NONE                          = 0xfffe
--	ARPHRD_PHONET                        = 0x334
--	ARPHRD_PHONET_PIPE                   = 0x335
--	ARPHRD_PIMREG                        = 0x30b
--	ARPHRD_PPP                           = 0x200
--	ARPHRD_PRONET                        = 0x4
--	ARPHRD_RAWHDLC                       = 0x206
--	ARPHRD_ROSE                          = 0x10e
--	ARPHRD_RSRVD                         = 0x104
--	ARPHRD_SIT                           = 0x308
--	ARPHRD_SKIP                          = 0x303
--	ARPHRD_SLIP                          = 0x100
--	ARPHRD_SLIP6                         = 0x102
--	ARPHRD_TUNNEL                        = 0x300
--	ARPHRD_TUNNEL6                       = 0x301
--	ARPHRD_VOID                          = 0xffff
--	ARPHRD_X25                           = 0x10f
--	B0                                   = 0x0
--	B1000000                             = 0x1008
--	B110                                 = 0x3
--	B115200                              = 0x1002
--	B1152000                             = 0x1009
--	B1200                                = 0x9
--	B134                                 = 0x4
--	B150                                 = 0x5
--	B1500000                             = 0x100a
--	B1800                                = 0xa
--	B19200                               = 0xe
--	B200                                 = 0x6
--	B2000000                             = 0x100b
--	B230400                              = 0x1003
--	B2400                                = 0xb
--	B2500000                             = 0x100c
--	B300                                 = 0x7
--	B3000000                             = 0x100d
--	B3500000                             = 0x100e
--	B38400                               = 0xf
--	B4000000                             = 0x100f
--	B460800                              = 0x1004
--	B4800                                = 0xc
--	B50                                  = 0x1
--	B500000                              = 0x1005
--	B57600                               = 0x1001
--	B576000                              = 0x1006
--	B600                                 = 0x8
--	B75                                  = 0x2
--	B921600                              = 0x1007
--	B9600                                = 0xd
--	BLKBSZGET                            = 0x80081270
--	BLKBSZSET                            = 0x40081271
--	BLKFLSBUF                            = 0x1261
--	BLKFRAGET                            = 0x1265
--	BLKFRASET                            = 0x1264
--	BLKGETSIZE                           = 0x1260
--	BLKGETSIZE64                         = 0x80081272
--	BLKPBSZGET                           = 0x127b
--	BLKRAGET                             = 0x1263
--	BLKRASET                             = 0x1262
--	BLKROGET                             = 0x125e
--	BLKROSET                             = 0x125d
--	BLKRRPART                            = 0x125f
--	BLKSECTGET                           = 0x1267
--	BLKSECTSET                           = 0x1266
--	BLKSSZGET                            = 0x1268
--	BOTHER                               = 0x1000
--	BPF_A                                = 0x10
--	BPF_ABS                              = 0x20
--	BPF_ADD                              = 0x0
--	BPF_ALU                              = 0x4
--	BPF_AND                              = 0x50
--	BPF_B                                = 0x10
--	BPF_DIV                              = 0x30
--	BPF_H                                = 0x8
--	BPF_IMM                              = 0x0
--	BPF_IND                              = 0x40
--	BPF_JA                               = 0x0
--	BPF_JEQ                              = 0x10
--	BPF_JGE                              = 0x30
--	BPF_JGT                              = 0x20
--	BPF_JMP                              = 0x5
--	BPF_JSET                             = 0x40
--	BPF_K                                = 0x0
--	BPF_LD                               = 0x0
--	BPF_LDX                              = 0x1
--	BPF_LEN                              = 0x80
--	BPF_LL_OFF                           = -0x200000
--	BPF_LSH                              = 0x60
--	BPF_MAJOR_VERSION                    = 0x1
--	BPF_MAXINSNS                         = 0x1000
--	BPF_MEM                              = 0x60
--	BPF_MEMWORDS                         = 0x10
--	BPF_MINOR_VERSION                    = 0x1
--	BPF_MISC                             = 0x7
--	BPF_MOD                              = 0x90
--	BPF_MSH                              = 0xa0
--	BPF_MUL                              = 0x20
--	BPF_NEG                              = 0x80
--	BPF_NET_OFF                          = -0x100000
--	BPF_OR                               = 0x40
--	BPF_RET                              = 0x6
--	BPF_RSH                              = 0x70
--	BPF_ST                               = 0x2
--	BPF_STX                              = 0x3
--	BPF_SUB                              = 0x10
--	BPF_TAX                              = 0x0
--	BPF_TXA                              = 0x80
--	BPF_W                                = 0x0
--	BPF_X                                = 0x8
--	BPF_XOR                              = 0xa0
--	BRKINT                               = 0x2
--	BS0                                  = 0x0
--	BS1                                  = 0x2000
--	BSDLY                                = 0x2000
--	CAN_BCM                              = 0x2
--	CAN_EFF_FLAG                         = 0x80000000
--	CAN_EFF_ID_BITS                      = 0x1d
--	CAN_EFF_MASK                         = 0x1fffffff
--	CAN_ERR_FLAG                         = 0x20000000
--	CAN_ERR_MASK                         = 0x1fffffff
--	CAN_INV_FILTER                       = 0x20000000
--	CAN_ISOTP                            = 0x6
--	CAN_MAX_DLC                          = 0x8
--	CAN_MAX_DLEN                         = 0x8
--	CAN_MCNET                            = 0x5
--	CAN_MTU                              = 0x10
--	CAN_NPROTO                           = 0x7
--	CAN_RAW                              = 0x1
--	CAN_RAW_FILTER_MAX                   = 0x200
--	CAN_RTR_FLAG                         = 0x40000000
--	CAN_SFF_ID_BITS                      = 0xb
--	CAN_SFF_MASK                         = 0x7ff
--	CAN_TP16                             = 0x3
--	CAN_TP20                             = 0x4
--	CBAUD                                = 0x100f
--	CBAUDEX                              = 0x1000
--	CFLUSH                               = 0xf
--	CIBAUD                               = 0x100f0000
--	CLOCAL                               = 0x800
--	CLOCK_BOOTTIME                       = 0x7
--	CLOCK_BOOTTIME_ALARM                 = 0x9
--	CLOCK_DEFAULT                        = 0x0
--	CLOCK_EXT                            = 0x1
--	CLOCK_INT                            = 0x2
--	CLOCK_MONOTONIC                      = 0x1
--	CLOCK_MONOTONIC_COARSE               = 0x6
--	CLOCK_MONOTONIC_RAW                  = 0x4
--	CLOCK_PROCESS_CPUTIME_ID             = 0x2
--	CLOCK_REALTIME                       = 0x0
--	CLOCK_REALTIME_ALARM                 = 0x8
--	CLOCK_REALTIME_COARSE                = 0x5
--	CLOCK_TAI                            = 0xb
--	CLOCK_THREAD_CPUTIME_ID              = 0x3
--	CLOCK_TXFROMRX                       = 0x4
--	CLOCK_TXINT                          = 0x3
--	CLONE_CHILD_CLEARTID                 = 0x200000
--	CLONE_CHILD_SETTID                   = 0x1000000
--	CLONE_DETACHED                       = 0x400000
--	CLONE_FILES                          = 0x400
--	CLONE_FS                             = 0x200
--	CLONE_IO                             = 0x80000000
--	CLONE_NEWCGROUP                      = 0x2000000
--	CLONE_NEWIPC                         = 0x8000000
--	CLONE_NEWNET                         = 0x40000000
--	CLONE_NEWNS                          = 0x20000
--	CLONE_NEWPID                         = 0x20000000
--	CLONE_NEWUSER                        = 0x10000000
--	CLONE_NEWUTS                         = 0x4000000
--	CLONE_PARENT                         = 0x8000
--	CLONE_PARENT_SETTID                  = 0x100000
--	CLONE_PTRACE                         = 0x2000
--	CLONE_SETTLS                         = 0x80000
--	CLONE_SIGHAND                        = 0x800
--	CLONE_SYSVSEM                        = 0x40000
--	CLONE_THREAD                         = 0x10000
--	CLONE_UNTRACED                       = 0x800000
--	CLONE_VFORK                          = 0x4000
--	CLONE_VM                             = 0x100
--	CMSPAR                               = 0x40000000
--	CR0                                  = 0x0
--	CR1                                  = 0x200
--	CR2                                  = 0x400
--	CR3                                  = 0x600
--	CRDLY                                = 0x600
--	CREAD                                = 0x80
--	CRTSCTS                              = 0x80000000
--	CS5                                  = 0x0
--	CS6                                  = 0x10
--	CS7                                  = 0x20
--	CS8                                  = 0x30
--	CSIGNAL                              = 0xff
--	CSIZE                                = 0x30
--	CSTART                               = 0x11
--	CSTATUS                              = 0x0
--	CSTOP                                = 0x13
--	CSTOPB                               = 0x40
--	CSUSP                                = 0x1a
--	DT_BLK                               = 0x6
--	DT_CHR                               = 0x2
--	DT_DIR                               = 0x4
--	DT_FIFO                              = 0x1
--	DT_LNK                               = 0xa
--	DT_REG                               = 0x8
--	DT_SOCK                              = 0xc
--	DT_UNKNOWN                           = 0x0
--	DT_WHT                               = 0xe
--	ECHO                                 = 0x8
--	ECHOCTL                              = 0x200
--	ECHOE                                = 0x10
--	ECHOK                                = 0x20
--	ECHOKE                               = 0x800
--	ECHONL                               = 0x40
--	ECHOPRT                              = 0x400
--	EFD_CLOEXEC                          = 0x80000
--	EFD_NONBLOCK                         = 0x800
--	EFD_SEMAPHORE                        = 0x1
--	ENCODING_DEFAULT                     = 0x0
--	ENCODING_FM_MARK                     = 0x3
--	ENCODING_FM_SPACE                    = 0x4
--	ENCODING_MANCHESTER                  = 0x5
--	ENCODING_NRZ                         = 0x1
--	ENCODING_NRZI                        = 0x2
--	EPOLLERR                             = 0x8
--	EPOLLET                              = 0x80000000
--	EPOLLEXCLUSIVE                       = 0x10000000
--	EPOLLHUP                             = 0x10
--	EPOLLIN                              = 0x1
--	EPOLLMSG                             = 0x400
--	EPOLLONESHOT                         = 0x40000000
--	EPOLLOUT                             = 0x4
--	EPOLLPRI                             = 0x2
--	EPOLLRDBAND                          = 0x80
--	EPOLLRDHUP                           = 0x2000
--	EPOLLRDNORM                          = 0x40
--	EPOLLWAKEUP                          = 0x20000000
--	EPOLLWRBAND                          = 0x200
--	EPOLLWRNORM                          = 0x100
--	EPOLL_CLOEXEC                        = 0x80000
--	EPOLL_CTL_ADD                        = 0x1
--	EPOLL_CTL_DEL                        = 0x2
--	EPOLL_CTL_MOD                        = 0x3
--	ETH_P_1588                           = 0x88f7
--	ETH_P_8021AD                         = 0x88a8
--	ETH_P_8021AH                         = 0x88e7
--	ETH_P_8021Q                          = 0x8100
--	ETH_P_80221                          = 0x8917
--	ETH_P_802_2                          = 0x4
--	ETH_P_802_3                          = 0x1
--	ETH_P_802_3_MIN                      = 0x600
--	ETH_P_802_EX1                        = 0x88b5
--	ETH_P_AARP                           = 0x80f3
--	ETH_P_AF_IUCV                        = 0xfbfb
--	ETH_P_ALL                            = 0x3
--	ETH_P_AOE                            = 0x88a2
--	ETH_P_ARCNET                         = 0x1a
--	ETH_P_ARP                            = 0x806
--	ETH_P_ATALK                          = 0x809b
--	ETH_P_ATMFATE                        = 0x8884
--	ETH_P_ATMMPOA                        = 0x884c
--	ETH_P_AX25                           = 0x2
--	ETH_P_BATMAN                         = 0x4305
--	ETH_P_BPQ                            = 0x8ff
--	ETH_P_CAIF                           = 0xf7
--	ETH_P_CAN                            = 0xc
--	ETH_P_CANFD                          = 0xd
--	ETH_P_CONTROL                        = 0x16
--	ETH_P_CUST                           = 0x6006
--	ETH_P_DDCMP                          = 0x6
--	ETH_P_DEC                            = 0x6000
--	ETH_P_DIAG                           = 0x6005
--	ETH_P_DNA_DL                         = 0x6001
--	ETH_P_DNA_RC                         = 0x6002
--	ETH_P_DNA_RT                         = 0x6003
--	ETH_P_DSA                            = 0x1b
--	ETH_P_ECONET                         = 0x18
--	ETH_P_EDSA                           = 0xdada
--	ETH_P_FCOE                           = 0x8906
--	ETH_P_FIP                            = 0x8914
--	ETH_P_HDLC                           = 0x19
--	ETH_P_HSR                            = 0x892f
--	ETH_P_IEEE802154                     = 0xf6
--	ETH_P_IEEEPUP                        = 0xa00
--	ETH_P_IEEEPUPAT                      = 0xa01
--	ETH_P_IP                             = 0x800
--	ETH_P_IPV6                           = 0x86dd
--	ETH_P_IPX                            = 0x8137
--	ETH_P_IRDA                           = 0x17
--	ETH_P_LAT                            = 0x6004
--	ETH_P_LINK_CTL                       = 0x886c
--	ETH_P_LOCALTALK                      = 0x9
--	ETH_P_LOOP                           = 0x60
--	ETH_P_LOOPBACK                       = 0x9000
--	ETH_P_MACSEC                         = 0x88e5
--	ETH_P_MOBITEX                        = 0x15
--	ETH_P_MPLS_MC                        = 0x8848
--	ETH_P_MPLS_UC                        = 0x8847
--	ETH_P_MVRP                           = 0x88f5
--	ETH_P_NCSI                           = 0x88f8
--	ETH_P_PAE                            = 0x888e
--	ETH_P_PAUSE                          = 0x8808
--	ETH_P_PHONET                         = 0xf5
--	ETH_P_PPPTALK                        = 0x10
--	ETH_P_PPP_DISC                       = 0x8863
--	ETH_P_PPP_MP                         = 0x8
--	ETH_P_PPP_SES                        = 0x8864
--	ETH_P_PRP                            = 0x88fb
--	ETH_P_PUP                            = 0x200
--	ETH_P_PUPAT                          = 0x201
--	ETH_P_QINQ1                          = 0x9100
--	ETH_P_QINQ2                          = 0x9200
--	ETH_P_QINQ3                          = 0x9300
--	ETH_P_RARP                           = 0x8035
--	ETH_P_SCA                            = 0x6007
--	ETH_P_SLOW                           = 0x8809
--	ETH_P_SNAP                           = 0x5
--	ETH_P_TDLS                           = 0x890d
--	ETH_P_TEB                            = 0x6558
--	ETH_P_TIPC                           = 0x88ca
--	ETH_P_TRAILER                        = 0x1c
--	ETH_P_TR_802_2                       = 0x11
--	ETH_P_TSN                            = 0x22f0
--	ETH_P_WAN_PPP                        = 0x7
--	ETH_P_WCCP                           = 0x883e
--	ETH_P_X25                            = 0x805
--	ETH_P_XDSA                           = 0xf8
--	EXTA                                 = 0xe
--	EXTB                                 = 0xf
--	EXTPROC                              = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE             = 0x8
--	FALLOC_FL_INSERT_RANGE               = 0x20
--	FALLOC_FL_KEEP_SIZE                  = 0x1
--	FALLOC_FL_NO_HIDE_STALE              = 0x4
--	FALLOC_FL_PUNCH_HOLE                 = 0x2
--	FALLOC_FL_UNSHARE_RANGE              = 0x40
--	FALLOC_FL_ZERO_RANGE                 = 0x10
--	FD_CLOEXEC                           = 0x1
--	FD_SETSIZE                           = 0x400
--	FF0                                  = 0x0
--	FF1                                  = 0x8000
--	FFDLY                                = 0x8000
--	FLUSHO                               = 0x1000
--	FS_ENCRYPTION_MODE_AES_256_CBC       = 0x3
--	FS_ENCRYPTION_MODE_AES_256_CTS       = 0x4
--	FS_ENCRYPTION_MODE_AES_256_GCM       = 0x2
--	FS_ENCRYPTION_MODE_AES_256_XTS       = 0x1
--	FS_ENCRYPTION_MODE_INVALID           = 0x0
--	FS_IOC_GET_ENCRYPTION_POLICY         = 0x400c6615
--	FS_IOC_GET_ENCRYPTION_PWSALT         = 0x40106614
--	FS_IOC_SET_ENCRYPTION_POLICY         = 0x800c6613
--	FS_KEY_DESCRIPTOR_SIZE               = 0x8
--	FS_KEY_DESC_PREFIX                   = "fscrypt:"
--	FS_KEY_DESC_PREFIX_SIZE              = 0x8
--	FS_MAX_KEY_SIZE                      = 0x40
--	FS_POLICY_FLAGS_PAD_16               = 0x2
--	FS_POLICY_FLAGS_PAD_32               = 0x3
--	FS_POLICY_FLAGS_PAD_4                = 0x0
--	FS_POLICY_FLAGS_PAD_8                = 0x1
--	FS_POLICY_FLAGS_PAD_MASK             = 0x3
--	FS_POLICY_FLAGS_VALID                = 0x3
--	F_DUPFD                              = 0x0
--	F_DUPFD_CLOEXEC                      = 0x406
--	F_EXLCK                              = 0x4
--	F_GETFD                              = 0x1
--	F_GETFL                              = 0x3
--	F_GETLEASE                           = 0x401
--	F_GETLK                              = 0x5
--	F_GETLK64                            = 0x5
--	F_GETOWN                             = 0x9
--	F_GETOWN_EX                          = 0x10
--	F_GETPIPE_SZ                         = 0x408
--	F_GETSIG                             = 0xb
--	F_LOCK                               = 0x1
--	F_NOTIFY                             = 0x402
--	F_OFD_GETLK                          = 0x24
--	F_OFD_SETLK                          = 0x25
--	F_OFD_SETLKW                         = 0x26
--	F_OK                                 = 0x0
--	F_RDLCK                              = 0x0
--	F_SETFD                              = 0x2
--	F_SETFL                              = 0x4
--	F_SETLEASE                           = 0x400
--	F_SETLK                              = 0x6
--	F_SETLK64                            = 0x6
--	F_SETLKW                             = 0x7
--	F_SETLKW64                           = 0x7
--	F_SETOWN                             = 0x8
--	F_SETOWN_EX                          = 0xf
--	F_SETPIPE_SZ                         = 0x407
--	F_SETSIG                             = 0xa
--	F_SHLCK                              = 0x8
--	F_TEST                               = 0x3
--	F_TLOCK                              = 0x2
--	F_ULOCK                              = 0x0
--	F_UNLCK                              = 0x2
--	F_WRLCK                              = 0x1
--	GENL_ADMIN_PERM                      = 0x1
--	GENL_CMD_CAP_DO                      = 0x2
--	GENL_CMD_CAP_DUMP                    = 0x4
--	GENL_CMD_CAP_HASPOL                  = 0x8
--	GENL_HDRLEN                          = 0x4
--	GENL_ID_CTRL                         = 0x10
--	GENL_ID_PMCRAID                      = 0x12
--	GENL_ID_VFS_DQUOT                    = 0x11
--	GENL_MAX_ID                          = 0x3ff
--	GENL_MIN_ID                          = 0x10
--	GENL_NAMSIZ                          = 0x10
--	GENL_START_ALLOC                     = 0x13
--	GENL_UNS_ADMIN_PERM                  = 0x10
--	GRND_NONBLOCK                        = 0x1
--	GRND_RANDOM                          = 0x2
--	HUPCL                                = 0x400
--	IBSHIFT                              = 0x10
--	ICANON                               = 0x2
--	ICMPV6_FILTER                        = 0x1
--	ICRNL                                = 0x100
--	IEXTEN                               = 0x8000
--	IFA_F_DADFAILED                      = 0x8
--	IFA_F_DEPRECATED                     = 0x20
--	IFA_F_HOMEADDRESS                    = 0x10
--	IFA_F_MANAGETEMPADDR                 = 0x100
--	IFA_F_MCAUTOJOIN                     = 0x400
--	IFA_F_NODAD                          = 0x2
--	IFA_F_NOPREFIXROUTE                  = 0x200
--	IFA_F_OPTIMISTIC                     = 0x4
--	IFA_F_PERMANENT                      = 0x80
--	IFA_F_SECONDARY                      = 0x1
--	IFA_F_STABLE_PRIVACY                 = 0x800
--	IFA_F_TEMPORARY                      = 0x1
--	IFA_F_TENTATIVE                      = 0x40
--	IFA_MAX                              = 0x8
--	IFF_ALLMULTI                         = 0x200
--	IFF_ATTACH_QUEUE                     = 0x200
--	IFF_AUTOMEDIA                        = 0x4000
--	IFF_BROADCAST                        = 0x2
--	IFF_DEBUG                            = 0x4
--	IFF_DETACH_QUEUE                     = 0x400
--	IFF_DORMANT                          = 0x20000
--	IFF_DYNAMIC                          = 0x8000
--	IFF_ECHO                             = 0x40000
--	IFF_LOOPBACK                         = 0x8
--	IFF_LOWER_UP                         = 0x10000
--	IFF_MASTER                           = 0x400
--	IFF_MULTICAST                        = 0x1000
--	IFF_MULTI_QUEUE                      = 0x100
--	IFF_NOARP                            = 0x80
--	IFF_NOFILTER                         = 0x1000
--	IFF_NOTRAILERS                       = 0x20
--	IFF_NO_PI                            = 0x1000
--	IFF_ONE_QUEUE                        = 0x2000
--	IFF_PERSIST                          = 0x800
--	IFF_POINTOPOINT                      = 0x10
--	IFF_PORTSEL                          = 0x2000
--	IFF_PROMISC                          = 0x100
--	IFF_RUNNING                          = 0x40
--	IFF_SLAVE                            = 0x800
--	IFF_TAP                              = 0x2
--	IFF_TUN                              = 0x1
--	IFF_TUN_EXCL                         = 0x8000
--	IFF_UP                               = 0x1
--	IFF_VNET_HDR                         = 0x4000
--	IFF_VOLATILE                         = 0x70c5a
--	IFNAMSIZ                             = 0x10
--	IGNBRK                               = 0x1
--	IGNCR                                = 0x80
--	IGNPAR                               = 0x4
--	IMAXBEL                              = 0x2000
--	INLCR                                = 0x40
--	INPCK                                = 0x10
--	IN_ACCESS                            = 0x1
--	IN_ALL_EVENTS                        = 0xfff
--	IN_ATTRIB                            = 0x4
--	IN_CLASSA_HOST                       = 0xffffff
--	IN_CLASSA_MAX                        = 0x80
--	IN_CLASSA_NET                        = 0xff000000
--	IN_CLASSA_NSHIFT                     = 0x18
--	IN_CLASSB_HOST                       = 0xffff
--	IN_CLASSB_MAX                        = 0x10000
--	IN_CLASSB_NET                        = 0xffff0000
--	IN_CLASSB_NSHIFT                     = 0x10
--	IN_CLASSC_HOST                       = 0xff
--	IN_CLASSC_NET                        = 0xffffff00
--	IN_CLASSC_NSHIFT                     = 0x8
--	IN_CLOEXEC                           = 0x80000
--	IN_CLOSE                             = 0x18
--	IN_CLOSE_NOWRITE                     = 0x10
--	IN_CLOSE_WRITE                       = 0x8
--	IN_CREATE                            = 0x100
--	IN_DELETE                            = 0x200
--	IN_DELETE_SELF                       = 0x400
--	IN_DONT_FOLLOW                       = 0x2000000
--	IN_EXCL_UNLINK                       = 0x4000000
--	IN_IGNORED                           = 0x8000
--	IN_ISDIR                             = 0x40000000
--	IN_LOOPBACKNET                       = 0x7f
--	IN_MASK_ADD                          = 0x20000000
--	IN_MODIFY                            = 0x2
--	IN_MOVE                              = 0xc0
--	IN_MOVED_FROM                        = 0x40
--	IN_MOVED_TO                          = 0x80
--	IN_MOVE_SELF                         = 0x800
--	IN_NONBLOCK                          = 0x800
--	IN_ONESHOT                           = 0x80000000
--	IN_ONLYDIR                           = 0x1000000
--	IN_OPEN                              = 0x20
--	IN_Q_OVERFLOW                        = 0x4000
--	IN_UNMOUNT                           = 0x2000
--	IPPROTO_AH                           = 0x33
--	IPPROTO_BEETPH                       = 0x5e
--	IPPROTO_COMP                         = 0x6c
--	IPPROTO_DCCP                         = 0x21
--	IPPROTO_DSTOPTS                      = 0x3c
--	IPPROTO_EGP                          = 0x8
--	IPPROTO_ENCAP                        = 0x62
--	IPPROTO_ESP                          = 0x32
--	IPPROTO_FRAGMENT                     = 0x2c
--	IPPROTO_GRE                          = 0x2f
--	IPPROTO_HOPOPTS                      = 0x0
--	IPPROTO_ICMP                         = 0x1
--	IPPROTO_ICMPV6                       = 0x3a
--	IPPROTO_IDP                          = 0x16
--	IPPROTO_IGMP                         = 0x2
--	IPPROTO_IP                           = 0x0
--	IPPROTO_IPIP                         = 0x4
--	IPPROTO_IPV6                         = 0x29
--	IPPROTO_MH                           = 0x87
--	IPPROTO_MPLS                         = 0x89
--	IPPROTO_MTP                          = 0x5c
--	IPPROTO_NONE                         = 0x3b
--	IPPROTO_PIM                          = 0x67
--	IPPROTO_PUP                          = 0xc
--	IPPROTO_RAW                          = 0xff
--	IPPROTO_ROUTING                      = 0x2b
--	IPPROTO_RSVP                         = 0x2e
--	IPPROTO_SCTP                         = 0x84
--	IPPROTO_TCP                          = 0x6
--	IPPROTO_TP                           = 0x1d
--	IPPROTO_UDP                          = 0x11
--	IPPROTO_UDPLITE                      = 0x88
--	IPV6_2292DSTOPTS                     = 0x4
--	IPV6_2292HOPLIMIT                    = 0x8
--	IPV6_2292HOPOPTS                     = 0x3
--	IPV6_2292PKTINFO                     = 0x2
--	IPV6_2292PKTOPTIONS                  = 0x6
--	IPV6_2292RTHDR                       = 0x5
--	IPV6_ADDRFORM                        = 0x1
--	IPV6_ADD_MEMBERSHIP                  = 0x14
--	IPV6_AUTHHDR                         = 0xa
--	IPV6_CHECKSUM                        = 0x7
--	IPV6_DONTFRAG                        = 0x3e
--	IPV6_DROP_MEMBERSHIP                 = 0x15
--	IPV6_DSTOPTS                         = 0x3b
--	IPV6_HDRINCL                         = 0x24
--	IPV6_HOPLIMIT                        = 0x34
--	IPV6_HOPOPTS                         = 0x36
--	IPV6_IPSEC_POLICY                    = 0x22
--	IPV6_JOIN_ANYCAST                    = 0x1b
--	IPV6_JOIN_GROUP                      = 0x14
--	IPV6_LEAVE_ANYCAST                   = 0x1c
--	IPV6_LEAVE_GROUP                     = 0x15
--	IPV6_MTU                             = 0x18
--	IPV6_MTU_DISCOVER                    = 0x17
--	IPV6_MULTICAST_HOPS                  = 0x12
--	IPV6_MULTICAST_IF                    = 0x11
--	IPV6_MULTICAST_LOOP                  = 0x13
--	IPV6_NEXTHOP                         = 0x9
--	IPV6_PATHMTU                         = 0x3d
--	IPV6_PKTINFO                         = 0x32
--	IPV6_PMTUDISC_DO                     = 0x2
--	IPV6_PMTUDISC_DONT                   = 0x0
--	IPV6_PMTUDISC_INTERFACE              = 0x4
--	IPV6_PMTUDISC_OMIT                   = 0x5
--	IPV6_PMTUDISC_PROBE                  = 0x3
--	IPV6_PMTUDISC_WANT                   = 0x1
--	IPV6_RECVDSTOPTS                     = 0x3a
--	IPV6_RECVERR                         = 0x19
--	IPV6_RECVHOPLIMIT                    = 0x33
--	IPV6_RECVHOPOPTS                     = 0x35
--	IPV6_RECVPATHMTU                     = 0x3c
--	IPV6_RECVPKTINFO                     = 0x31
--	IPV6_RECVRTHDR                       = 0x38
--	IPV6_RECVTCLASS                      = 0x42
--	IPV6_ROUTER_ALERT                    = 0x16
--	IPV6_RTHDR                           = 0x39
--	IPV6_RTHDRDSTOPTS                    = 0x37
--	IPV6_RTHDR_LOOSE                     = 0x0
--	IPV6_RTHDR_STRICT                    = 0x1
--	IPV6_RTHDR_TYPE_0                    = 0x0
--	IPV6_RXDSTOPTS                       = 0x3b
--	IPV6_RXHOPOPTS                       = 0x36
--	IPV6_TCLASS                          = 0x43
--	IPV6_UNICAST_HOPS                    = 0x10
--	IPV6_V6ONLY                          = 0x1a
--	IPV6_XFRM_POLICY                     = 0x23
--	IP_ADD_MEMBERSHIP                    = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP             = 0x27
--	IP_BIND_ADDRESS_NO_PORT              = 0x18
--	IP_BLOCK_SOURCE                      = 0x26
--	IP_CHECKSUM                          = 0x17
--	IP_DEFAULT_MULTICAST_LOOP            = 0x1
--	IP_DEFAULT_MULTICAST_TTL             = 0x1
--	IP_DF                                = 0x4000
--	IP_DROP_MEMBERSHIP                   = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP            = 0x28
--	IP_FREEBIND                          = 0xf
--	IP_HDRINCL                           = 0x3
--	IP_IPSEC_POLICY                      = 0x10
--	IP_MAXPACKET                         = 0xffff
--	IP_MAX_MEMBERSHIPS                   = 0x14
--	IP_MF                                = 0x2000
--	IP_MINTTL                            = 0x15
--	IP_MSFILTER                          = 0x29
--	IP_MSS                               = 0x240
--	IP_MTU                               = 0xe
--	IP_MTU_DISCOVER                      = 0xa
--	IP_MULTICAST_ALL                     = 0x31
--	IP_MULTICAST_IF                      = 0x20
--	IP_MULTICAST_LOOP                    = 0x22
--	IP_MULTICAST_TTL                     = 0x21
--	IP_NODEFRAG                          = 0x16
--	IP_OFFMASK                           = 0x1fff
--	IP_OPTIONS                           = 0x4
--	IP_ORIGDSTADDR                       = 0x14
--	IP_PASSSEC                           = 0x12
--	IP_PKTINFO                           = 0x8
--	IP_PKTOPTIONS                        = 0x9
--	IP_PMTUDISC                          = 0xa
--	IP_PMTUDISC_DO                       = 0x2
--	IP_PMTUDISC_DONT                     = 0x0
--	IP_PMTUDISC_INTERFACE                = 0x4
--	IP_PMTUDISC_OMIT                     = 0x5
--	IP_PMTUDISC_PROBE                    = 0x3
--	IP_PMTUDISC_WANT                     = 0x1
--	IP_RECVERR                           = 0xb
--	IP_RECVOPTS                          = 0x6
--	IP_RECVORIGDSTADDR                   = 0x14
--	IP_RECVRETOPTS                       = 0x7
--	IP_RECVTOS                           = 0xd
--	IP_RECVTTL                           = 0xc
--	IP_RETOPTS                           = 0x7
--	IP_RF                                = 0x8000
--	IP_ROUTER_ALERT                      = 0x5
--	IP_TOS                               = 0x1
--	IP_TRANSPARENT                       = 0x13
--	IP_TTL                               = 0x2
--	IP_UNBLOCK_SOURCE                    = 0x25
--	IP_UNICAST_IF                        = 0x32
--	IP_XFRM_POLICY                       = 0x11
--	ISIG                                 = 0x1
--	ISTRIP                               = 0x20
--	IUCLC                                = 0x200
--	IUTF8                                = 0x4000
--	IXANY                                = 0x800
--	IXOFF                                = 0x1000
--	IXON                                 = 0x400
--	KEYCTL_ASSUME_AUTHORITY              = 0x10
--	KEYCTL_CHOWN                         = 0x4
--	KEYCTL_CLEAR                         = 0x7
--	KEYCTL_DESCRIBE                      = 0x6
--	KEYCTL_DH_COMPUTE                    = 0x17
--	KEYCTL_GET_KEYRING_ID                = 0x0
--	KEYCTL_GET_PERSISTENT                = 0x16
--	KEYCTL_GET_SECURITY                  = 0x11
--	KEYCTL_INSTANTIATE                   = 0xc
--	KEYCTL_INSTANTIATE_IOV               = 0x14
--	KEYCTL_INVALIDATE                    = 0x15
--	KEYCTL_JOIN_SESSION_KEYRING          = 0x1
--	KEYCTL_LINK                          = 0x8
--	KEYCTL_NEGATE                        = 0xd
--	KEYCTL_READ                          = 0xb
--	KEYCTL_REJECT                        = 0x13
--	KEYCTL_REVOKE                        = 0x3
--	KEYCTL_SEARCH                        = 0xa
--	KEYCTL_SESSION_TO_PARENT             = 0x12
--	KEYCTL_SETPERM                       = 0x5
--	KEYCTL_SET_REQKEY_KEYRING            = 0xe
--	KEYCTL_SET_TIMEOUT                   = 0xf
--	KEYCTL_UNLINK                        = 0x9
--	KEYCTL_UPDATE                        = 0x2
--	KEY_REQKEY_DEFL_DEFAULT              = 0x0
--	KEY_REQKEY_DEFL_GROUP_KEYRING        = 0x6
--	KEY_REQKEY_DEFL_NO_CHANGE            = -0x1
--	KEY_REQKEY_DEFL_PROCESS_KEYRING      = 0x2
--	KEY_REQKEY_DEFL_REQUESTOR_KEYRING    = 0x7
--	KEY_REQKEY_DEFL_SESSION_KEYRING      = 0x3
--	KEY_REQKEY_DEFL_THREAD_KEYRING       = 0x1
--	KEY_REQKEY_DEFL_USER_KEYRING         = 0x4
--	KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
--	KEY_SPEC_GROUP_KEYRING               = -0x6
--	KEY_SPEC_PROCESS_KEYRING             = -0x2
--	KEY_SPEC_REQKEY_AUTH_KEY             = -0x7
--	KEY_SPEC_REQUESTOR_KEYRING           = -0x8
--	KEY_SPEC_SESSION_KEYRING             = -0x3
--	KEY_SPEC_THREAD_KEYRING              = -0x1
--	KEY_SPEC_USER_KEYRING                = -0x4
--	KEY_SPEC_USER_SESSION_KEYRING        = -0x5
--	LINUX_REBOOT_CMD_CAD_OFF             = 0x0
--	LINUX_REBOOT_CMD_CAD_ON              = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT                = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC               = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF           = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART             = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2            = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND          = 0xd000fce2
--	LINUX_REBOOT_MAGIC1                  = 0xfee1dead
--	LINUX_REBOOT_MAGIC2                  = 0x28121969
--	LOCK_EX                              = 0x2
--	LOCK_NB                              = 0x4
--	LOCK_SH                              = 0x1
--	LOCK_UN                              = 0x8
--	MADV_DODUMP                          = 0x11
--	MADV_DOFORK                          = 0xb
--	MADV_DONTDUMP                        = 0x10
--	MADV_DONTFORK                        = 0xa
--	MADV_DONTNEED                        = 0x4
--	MADV_FREE                            = 0x8
--	MADV_HUGEPAGE                        = 0xe
--	MADV_HWPOISON                        = 0x64
--	MADV_MERGEABLE                       = 0xc
--	MADV_NOHUGEPAGE                      = 0xf
--	MADV_NORMAL                          = 0x0
--	MADV_RANDOM                          = 0x1
--	MADV_REMOVE                          = 0x9
--	MADV_SEQUENTIAL                      = 0x2
--	MADV_UNMERGEABLE                     = 0xd
--	MADV_WILLNEED                        = 0x3
--	MAP_ANON                             = 0x20
--	MAP_ANONYMOUS                        = 0x20
--	MAP_DENYWRITE                        = 0x800
--	MAP_EXECUTABLE                       = 0x1000
--	MAP_FILE                             = 0x0
--	MAP_FIXED                            = 0x10
--	MAP_GROWSDOWN                        = 0x100
--	MAP_HUGETLB                          = 0x40000
--	MAP_HUGE_MASK                        = 0x3f
--	MAP_HUGE_SHIFT                       = 0x1a
--	MAP_LOCKED                           = 0x2000
--	MAP_NONBLOCK                         = 0x10000
--	MAP_NORESERVE                        = 0x4000
--	MAP_POPULATE                         = 0x8000
--	MAP_PRIVATE                          = 0x2
--	MAP_SHARED                           = 0x1
--	MAP_STACK                            = 0x20000
--	MAP_TYPE                             = 0xf
--	MCL_CURRENT                          = 0x1
--	MCL_FUTURE                           = 0x2
--	MCL_ONFAULT                          = 0x4
--	MNT_DETACH                           = 0x2
--	MNT_EXPIRE                           = 0x4
--	MNT_FORCE                            = 0x1
--	MSG_BATCH                            = 0x40000
--	MSG_CMSG_CLOEXEC                     = 0x40000000
--	MSG_CONFIRM                          = 0x800
--	MSG_CTRUNC                           = 0x8
--	MSG_DONTROUTE                        = 0x4
--	MSG_DONTWAIT                         = 0x40
--	MSG_EOR                              = 0x80
--	MSG_ERRQUEUE                         = 0x2000
--	MSG_FASTOPEN                         = 0x20000000
--	MSG_FIN                              = 0x200
--	MSG_MORE                             = 0x8000
--	MSG_NOSIGNAL                         = 0x4000
--	MSG_OOB                              = 0x1
--	MSG_PEEK                             = 0x2
--	MSG_PROXY                            = 0x10
--	MSG_RST                              = 0x1000
--	MSG_SYN                              = 0x400
--	MSG_TRUNC                            = 0x20
--	MSG_TRYHARD                          = 0x4
--	MSG_WAITALL                          = 0x100
--	MSG_WAITFORONE                       = 0x10000
--	MS_ACTIVE                            = 0x40000000
--	MS_ASYNC                             = 0x1
--	MS_BIND                              = 0x1000
--	MS_BORN                              = 0x20000000
--	MS_DIRSYNC                           = 0x80
--	MS_INVALIDATE                        = 0x2
--	MS_I_VERSION                         = 0x800000
--	MS_KERNMOUNT                         = 0x400000
--	MS_LAZYTIME                          = 0x2000000
--	MS_MANDLOCK                          = 0x40
--	MS_MGC_MSK                           = 0xffff0000
--	MS_MGC_VAL                           = 0xc0ed0000
--	MS_MOVE                              = 0x2000
--	MS_NOATIME                           = 0x400
--	MS_NODEV                             = 0x4
--	MS_NODIRATIME                        = 0x800
--	MS_NOEXEC                            = 0x8
--	MS_NOREMOTELOCK                      = 0x8000000
--	MS_NOSEC                             = 0x10000000
--	MS_NOSUID                            = 0x2
--	MS_NOUSER                            = -0x80000000
--	MS_POSIXACL                          = 0x10000
--	MS_PRIVATE                           = 0x40000
--	MS_RDONLY                            = 0x1
--	MS_REC                               = 0x4000
--	MS_RELATIME                          = 0x200000
--	MS_REMOUNT                           = 0x20
--	MS_RMT_MASK                          = 0x2800051
--	MS_SHARED                            = 0x100000
--	MS_SILENT                            = 0x8000
--	MS_SLAVE                             = 0x80000
--	MS_STRICTATIME                       = 0x1000000
--	MS_SYNC                              = 0x4
--	MS_SYNCHRONOUS                       = 0x10
--	MS_UNBINDABLE                        = 0x20000
--	MS_VERBOSE                           = 0x8000
--	NAME_MAX                             = 0xff
--	NETLINK_ADD_MEMBERSHIP               = 0x1
--	NETLINK_AUDIT                        = 0x9
--	NETLINK_BROADCAST_ERROR              = 0x4
--	NETLINK_CAP_ACK                      = 0xa
--	NETLINK_CONNECTOR                    = 0xb
--	NETLINK_CRYPTO                       = 0x15
--	NETLINK_DNRTMSG                      = 0xe
--	NETLINK_DROP_MEMBERSHIP              = 0x2
--	NETLINK_ECRYPTFS                     = 0x13
--	NETLINK_FIB_LOOKUP                   = 0xa
--	NETLINK_FIREWALL                     = 0x3
--	NETLINK_GENERIC                      = 0x10
--	NETLINK_INET_DIAG                    = 0x4
--	NETLINK_IP6_FW                       = 0xd
--	NETLINK_ISCSI                        = 0x8
--	NETLINK_KOBJECT_UEVENT               = 0xf
--	NETLINK_LISTEN_ALL_NSID              = 0x8
--	NETLINK_LIST_MEMBERSHIPS             = 0x9
--	NETLINK_NETFILTER                    = 0xc
--	NETLINK_NFLOG                        = 0x5
--	NETLINK_NO_ENOBUFS                   = 0x5
--	NETLINK_PKTINFO                      = 0x3
--	NETLINK_RDMA                         = 0x14
--	NETLINK_ROUTE                        = 0x0
--	NETLINK_RX_RING                      = 0x6
--	NETLINK_SCSITRANSPORT                = 0x12
--	NETLINK_SELINUX                      = 0x7
--	NETLINK_SOCK_DIAG                    = 0x4
--	NETLINK_TX_RING                      = 0x7
--	NETLINK_UNUSED                       = 0x1
--	NETLINK_USERSOCK                     = 0x2
--	NETLINK_XFRM                         = 0x6
--	NL0                                  = 0x0
--	NL1                                  = 0x100
--	NLA_ALIGNTO                          = 0x4
--	NLA_F_NESTED                         = 0x8000
--	NLA_F_NET_BYTEORDER                  = 0x4000
--	NLA_HDRLEN                           = 0x4
--	NLDLY                                = 0x100
--	NLMSG_ALIGNTO                        = 0x4
--	NLMSG_DONE                           = 0x3
--	NLMSG_ERROR                          = 0x2
--	NLMSG_HDRLEN                         = 0x10
--	NLMSG_MIN_TYPE                       = 0x10
--	NLMSG_NOOP                           = 0x1
--	NLMSG_OVERRUN                        = 0x4
--	NLM_F_ACK                            = 0x4
--	NLM_F_APPEND                         = 0x800
--	NLM_F_ATOMIC                         = 0x400
--	NLM_F_CREATE                         = 0x400
--	NLM_F_DUMP                           = 0x300
--	NLM_F_DUMP_FILTERED                  = 0x20
--	NLM_F_DUMP_INTR                      = 0x10
--	NLM_F_ECHO                           = 0x8
--	NLM_F_EXCL                           = 0x200
--	NLM_F_MATCH                          = 0x200
--	NLM_F_MULTI                          = 0x2
--	NLM_F_REPLACE                        = 0x100
--	NLM_F_REQUEST                        = 0x1
--	NLM_F_ROOT                           = 0x100
--	NOFLSH                               = 0x80
--	OCRNL                                = 0x8
--	OFDEL                                = 0x80
--	OFILL                                = 0x40
--	OLCUC                                = 0x2
--	ONLCR                                = 0x4
--	ONLRET                               = 0x20
--	ONOCR                                = 0x10
--	OPOST                                = 0x1
--	O_ACCMODE                            = 0x3
--	O_APPEND                             = 0x400
--	O_ASYNC                              = 0x2000
--	O_CLOEXEC                            = 0x80000
--	O_CREAT                              = 0x40
--	O_DIRECT                             = 0x4000
--	O_DIRECTORY                          = 0x10000
--	O_DSYNC                              = 0x1000
--	O_EXCL                               = 0x80
--	O_FSYNC                              = 0x101000
--	O_LARGEFILE                          = 0x0
--	O_NDELAY                             = 0x800
--	O_NOATIME                            = 0x40000
--	O_NOCTTY                             = 0x100
--	O_NOFOLLOW                           = 0x20000
--	O_NONBLOCK                           = 0x800
--	O_PATH                               = 0x200000
--	O_RDONLY                             = 0x0
--	O_RDWR                               = 0x2
--	O_RSYNC                              = 0x101000
--	O_SYNC                               = 0x101000
--	O_TMPFILE                            = 0x410000
--	O_TRUNC                              = 0x200
--	O_WRONLY                             = 0x1
--	PACKET_ADD_MEMBERSHIP                = 0x1
--	PACKET_AUXDATA                       = 0x8
--	PACKET_BROADCAST                     = 0x1
--	PACKET_COPY_THRESH                   = 0x7
--	PACKET_DROP_MEMBERSHIP               = 0x2
--	PACKET_FANOUT                        = 0x12
--	PACKET_FANOUT_CBPF                   = 0x6
--	PACKET_FANOUT_CPU                    = 0x2
--	PACKET_FANOUT_DATA                   = 0x16
--	PACKET_FANOUT_EBPF                   = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG            = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER          = 0x1000
--	PACKET_FANOUT_HASH                   = 0x0
--	PACKET_FANOUT_LB                     = 0x1
--	PACKET_FANOUT_QM                     = 0x5
--	PACKET_FANOUT_RND                    = 0x4
--	PACKET_FANOUT_ROLLOVER               = 0x3
--	PACKET_FASTROUTE                     = 0x6
--	PACKET_HDRLEN                        = 0xb
--	PACKET_HOST                          = 0x0
--	PACKET_KERNEL                        = 0x7
--	PACKET_LOOPBACK                      = 0x5
--	PACKET_LOSS                          = 0xe
--	PACKET_MR_ALLMULTI                   = 0x2
--	PACKET_MR_MULTICAST                  = 0x0
--	PACKET_MR_PROMISC                    = 0x1
--	PACKET_MR_UNICAST                    = 0x3
--	PACKET_MULTICAST                     = 0x2
--	PACKET_ORIGDEV                       = 0x9
--	PACKET_OTHERHOST                     = 0x3
--	PACKET_OUTGOING                      = 0x4
--	PACKET_QDISC_BYPASS                  = 0x14
--	PACKET_RECV_OUTPUT                   = 0x3
--	PACKET_RESERVE                       = 0xc
--	PACKET_ROLLOVER_STATS                = 0x15
--	PACKET_RX_RING                       = 0x5
--	PACKET_STATISTICS                    = 0x6
--	PACKET_TIMESTAMP                     = 0x11
--	PACKET_TX_HAS_OFF                    = 0x13
--	PACKET_TX_RING                       = 0xd
--	PACKET_TX_TIMESTAMP                  = 0x10
--	PACKET_USER                          = 0x6
--	PACKET_VERSION                       = 0xa
--	PACKET_VNET_HDR                      = 0xf
--	PARENB                               = 0x100
--	PARITY_CRC16_PR0                     = 0x2
--	PARITY_CRC16_PR0_CCITT               = 0x4
--	PARITY_CRC16_PR1                     = 0x3
--	PARITY_CRC16_PR1_CCITT               = 0x5
--	PARITY_CRC32_PR0_CCITT               = 0x6
--	PARITY_CRC32_PR1_CCITT               = 0x7
--	PARITY_DEFAULT                       = 0x0
--	PARITY_NONE                          = 0x1
--	PARMRK                               = 0x8
--	PARODD                               = 0x200
--	PENDIN                               = 0x4000
--	PERF_EVENT_IOC_DISABLE               = 0x2401
--	PERF_EVENT_IOC_ENABLE                = 0x2400
--	PERF_EVENT_IOC_ID                    = 0x80082407
--	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
--	PERF_EVENT_IOC_PERIOD                = 0x40082404
--	PERF_EVENT_IOC_REFRESH               = 0x2402
--	PERF_EVENT_IOC_RESET                 = 0x2403
--	PERF_EVENT_IOC_SET_BPF               = 0x40042408
--	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
--	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
--	PRIO_PGRP                            = 0x1
--	PRIO_PROCESS                         = 0x0
--	PRIO_USER                            = 0x2
--	PROT_EXEC                            = 0x4
--	PROT_GROWSDOWN                       = 0x1000000
--	PROT_GROWSUP                         = 0x2000000
--	PROT_NONE                            = 0x0
--	PROT_READ                            = 0x1
--	PROT_WRITE                           = 0x2
--	PR_CAPBSET_DROP                      = 0x18
--	PR_CAPBSET_READ                      = 0x17
--	PR_CAP_AMBIENT                       = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL             = 0x4
--	PR_CAP_AMBIENT_IS_SET                = 0x1
--	PR_CAP_AMBIENT_LOWER                 = 0x3
--	PR_CAP_AMBIENT_RAISE                 = 0x2
--	PR_ENDIAN_BIG                        = 0x0
--	PR_ENDIAN_LITTLE                     = 0x1
--	PR_ENDIAN_PPC_LITTLE                 = 0x2
--	PR_FPEMU_NOPRINT                     = 0x1
--	PR_FPEMU_SIGFPE                      = 0x2
--	PR_FP_EXC_ASYNC                      = 0x2
--	PR_FP_EXC_DISABLED                   = 0x0
--	PR_FP_EXC_DIV                        = 0x10000
--	PR_FP_EXC_INV                        = 0x100000
--	PR_FP_EXC_NONRECOV                   = 0x1
--	PR_FP_EXC_OVF                        = 0x20000
--	PR_FP_EXC_PRECISE                    = 0x3
--	PR_FP_EXC_RES                        = 0x80000
--	PR_FP_EXC_SW_ENABLE                  = 0x80
--	PR_FP_EXC_UND                        = 0x40000
--	PR_FP_MODE_FR                        = 0x1
--	PR_FP_MODE_FRE                       = 0x2
--	PR_GET_CHILD_SUBREAPER               = 0x25
--	PR_GET_DUMPABLE                      = 0x3
--	PR_GET_ENDIAN                        = 0x13
--	PR_GET_FPEMU                         = 0x9
--	PR_GET_FPEXC                         = 0xb
--	PR_GET_FP_MODE                       = 0x2e
--	PR_GET_KEEPCAPS                      = 0x7
--	PR_GET_NAME                          = 0x10
--	PR_GET_NO_NEW_PRIVS                  = 0x27
--	PR_GET_PDEATHSIG                     = 0x2
--	PR_GET_SECCOMP                       = 0x15
--	PR_GET_SECUREBITS                    = 0x1b
--	PR_GET_THP_DISABLE                   = 0x2a
--	PR_GET_TID_ADDRESS                   = 0x28
--	PR_GET_TIMERSLACK                    = 0x1e
--	PR_GET_TIMING                        = 0xd
--	PR_GET_TSC                           = 0x19
--	PR_GET_UNALIGN                       = 0x5
--	PR_MCE_KILL                          = 0x21
--	PR_MCE_KILL_CLEAR                    = 0x0
--	PR_MCE_KILL_DEFAULT                  = 0x2
--	PR_MCE_KILL_EARLY                    = 0x1
--	PR_MCE_KILL_GET                      = 0x22
--	PR_MCE_KILL_LATE                     = 0x0
--	PR_MCE_KILL_SET                      = 0x1
--	PR_MPX_DISABLE_MANAGEMENT            = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT             = 0x2b
--	PR_SET_CHILD_SUBREAPER               = 0x24
--	PR_SET_DUMPABLE                      = 0x4
--	PR_SET_ENDIAN                        = 0x14
--	PR_SET_FPEMU                         = 0xa
--	PR_SET_FPEXC                         = 0xc
--	PR_SET_FP_MODE                       = 0x2d
--	PR_SET_KEEPCAPS                      = 0x8
--	PR_SET_MM                            = 0x23
--	PR_SET_MM_ARG_END                    = 0x9
--	PR_SET_MM_ARG_START                  = 0x8
--	PR_SET_MM_AUXV                       = 0xc
--	PR_SET_MM_BRK                        = 0x7
--	PR_SET_MM_END_CODE                   = 0x2
--	PR_SET_MM_END_DATA                   = 0x4
--	PR_SET_MM_ENV_END                    = 0xb
--	PR_SET_MM_ENV_START                  = 0xa
--	PR_SET_MM_EXE_FILE                   = 0xd
--	PR_SET_MM_MAP                        = 0xe
--	PR_SET_MM_MAP_SIZE                   = 0xf
--	PR_SET_MM_START_BRK                  = 0x6
--	PR_SET_MM_START_CODE                 = 0x1
--	PR_SET_MM_START_DATA                 = 0x3
--	PR_SET_MM_START_STACK                = 0x5
--	PR_SET_NAME                          = 0xf
--	PR_SET_NO_NEW_PRIVS                  = 0x26
--	PR_SET_PDEATHSIG                     = 0x1
--	PR_SET_PTRACER                       = 0x59616d61
--	PR_SET_PTRACER_ANY                   = -0x1
--	PR_SET_SECCOMP                       = 0x16
--	PR_SET_SECUREBITS                    = 0x1c
--	PR_SET_THP_DISABLE                   = 0x29
--	PR_SET_TIMERSLACK                    = 0x1d
--	PR_SET_TIMING                        = 0xe
--	PR_SET_TSC                           = 0x1a
--	PR_SET_UNALIGN                       = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE          = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE           = 0x20
--	PR_TIMING_STATISTICAL                = 0x0
--	PR_TIMING_TIMESTAMP                  = 0x1
--	PR_TSC_ENABLE                        = 0x1
--	PR_TSC_SIGSEGV                       = 0x2
--	PR_UNALIGN_NOPRINT                   = 0x1
--	PR_UNALIGN_SIGBUS                    = 0x2
--	PTRACE_ATTACH                        = 0x10
--	PTRACE_CONT                          = 0x7
--	PTRACE_DETACH                        = 0x11
--	PTRACE_DISABLE_TE                    = 0x5010
--	PTRACE_ENABLE_TE                     = 0x5009
--	PTRACE_EVENT_CLONE                   = 0x3
--	PTRACE_EVENT_EXEC                    = 0x4
--	PTRACE_EVENT_EXIT                    = 0x6
--	PTRACE_EVENT_FORK                    = 0x1
--	PTRACE_EVENT_SECCOMP                 = 0x7
--	PTRACE_EVENT_STOP                    = 0x80
--	PTRACE_EVENT_VFORK                   = 0x2
--	PTRACE_EVENT_VFORK_DONE              = 0x5
--	PTRACE_GETEVENTMSG                   = 0x4201
--	PTRACE_GETREGS                       = 0xc
--	PTRACE_GETREGSET                     = 0x4204
--	PTRACE_GETSIGINFO                    = 0x4202
--	PTRACE_GETSIGMASK                    = 0x420a
--	PTRACE_GET_LAST_BREAK                = 0x5006
--	PTRACE_INTERRUPT                     = 0x4207
--	PTRACE_KILL                          = 0x8
--	PTRACE_LISTEN                        = 0x4208
--	PTRACE_OLDSETOPTIONS                 = 0x15
--	PTRACE_O_EXITKILL                    = 0x100000
--	PTRACE_O_MASK                        = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP             = 0x200000
--	PTRACE_O_TRACECLONE                  = 0x8
--	PTRACE_O_TRACEEXEC                   = 0x10
--	PTRACE_O_TRACEEXIT                   = 0x40
--	PTRACE_O_TRACEFORK                   = 0x2
--	PTRACE_O_TRACESECCOMP                = 0x80
--	PTRACE_O_TRACESYSGOOD                = 0x1
--	PTRACE_O_TRACEVFORK                  = 0x4
--	PTRACE_O_TRACEVFORKDONE              = 0x20
--	PTRACE_PEEKDATA                      = 0x2
--	PTRACE_PEEKDATA_AREA                 = 0x5003
--	PTRACE_PEEKSIGINFO                   = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED            = 0x1
--	PTRACE_PEEKTEXT                      = 0x1
--	PTRACE_PEEKTEXT_AREA                 = 0x5002
--	PTRACE_PEEKUSR                       = 0x3
--	PTRACE_PEEKUSR_AREA                  = 0x5000
--	PTRACE_PEEK_SYSTEM_CALL              = 0x5007
--	PTRACE_POKEDATA                      = 0x5
--	PTRACE_POKEDATA_AREA                 = 0x5005
--	PTRACE_POKETEXT                      = 0x4
--	PTRACE_POKETEXT_AREA                 = 0x5004
--	PTRACE_POKEUSR                       = 0x6
--	PTRACE_POKEUSR_AREA                  = 0x5001
--	PTRACE_POKE_SYSTEM_CALL              = 0x5008
--	PTRACE_PROT                          = 0x15
--	PTRACE_SECCOMP_GET_FILTER            = 0x420c
--	PTRACE_SEIZE                         = 0x4206
--	PTRACE_SETOPTIONS                    = 0x4200
--	PTRACE_SETREGS                       = 0xd
--	PTRACE_SETREGSET                     = 0x4205
--	PTRACE_SETSIGINFO                    = 0x4203
--	PTRACE_SETSIGMASK                    = 0x420b
--	PTRACE_SINGLEBLOCK                   = 0xc
--	PTRACE_SINGLESTEP                    = 0x9
--	PTRACE_SYSCALL                       = 0x18
--	PTRACE_TE_ABORT_RAND                 = 0x5011
--	PTRACE_TRACEME                       = 0x0
--	PT_ACR0                              = 0x90
--	PT_ACR1                              = 0x94
--	PT_ACR10                             = 0xb8
--	PT_ACR11                             = 0xbc
--	PT_ACR12                             = 0xc0
--	PT_ACR13                             = 0xc4
--	PT_ACR14                             = 0xc8
--	PT_ACR15                             = 0xcc
--	PT_ACR2                              = 0x98
--	PT_ACR3                              = 0x9c
--	PT_ACR4                              = 0xa0
--	PT_ACR5                              = 0xa4
--	PT_ACR6                              = 0xa8
--	PT_ACR7                              = 0xac
--	PT_ACR8                              = 0xb0
--	PT_ACR9                              = 0xb4
--	PT_CR_10                             = 0x168
--	PT_CR_11                             = 0x170
--	PT_CR_9                              = 0x160
--	PT_ENDREGS                           = 0x1af
--	PT_FPC                               = 0xd8
--	PT_FPR0                              = 0xe0
--	PT_FPR1                              = 0xe8
--	PT_FPR10                             = 0x130
--	PT_FPR11                             = 0x138
--	PT_FPR12                             = 0x140
--	PT_FPR13                             = 0x148
--	PT_FPR14                             = 0x150
--	PT_FPR15                             = 0x158
--	PT_FPR2                              = 0xf0
--	PT_FPR3                              = 0xf8
--	PT_FPR4                              = 0x100
--	PT_FPR5                              = 0x108
--	PT_FPR6                              = 0x110
--	PT_FPR7                              = 0x118
--	PT_FPR8                              = 0x120
--	PT_FPR9                              = 0x128
--	PT_GPR0                              = 0x10
--	PT_GPR1                              = 0x18
--	PT_GPR10                             = 0x60
--	PT_GPR11                             = 0x68
--	PT_GPR12                             = 0x70
--	PT_GPR13                             = 0x78
--	PT_GPR14                             = 0x80
--	PT_GPR15                             = 0x88
--	PT_GPR2                              = 0x20
--	PT_GPR3                              = 0x28
--	PT_GPR4                              = 0x30
--	PT_GPR5                              = 0x38
--	PT_GPR6                              = 0x40
--	PT_GPR7                              = 0x48
--	PT_GPR8                              = 0x50
--	PT_GPR9                              = 0x58
--	PT_IEEE_IP                           = 0x1a8
--	PT_LASTOFF                           = 0x1a8
--	PT_ORIGGPR2                          = 0xd0
--	PT_PSWADDR                           = 0x8
--	PT_PSWMASK                           = 0x0
--	RLIMIT_AS                            = 0x9
--	RLIMIT_CORE                          = 0x4
--	RLIMIT_CPU                           = 0x0
--	RLIMIT_DATA                          = 0x2
--	RLIMIT_FSIZE                         = 0x1
--	RLIMIT_LOCKS                         = 0xa
--	RLIMIT_MEMLOCK                       = 0x8
--	RLIMIT_MSGQUEUE                      = 0xc
--	RLIMIT_NICE                          = 0xd
--	RLIMIT_NOFILE                        = 0x7
--	RLIMIT_NPROC                         = 0x6
--	RLIMIT_RSS                           = 0x5
--	RLIMIT_RTPRIO                        = 0xe
--	RLIMIT_RTTIME                        = 0xf
--	RLIMIT_SIGPENDING                    = 0xb
--	RLIMIT_STACK                         = 0x3
--	RLIM_INFINITY                        = -0x1
--	RTAX_ADVMSS                          = 0x8
--	RTAX_CC_ALGO                         = 0x10
--	RTAX_CWND                            = 0x7
--	RTAX_FEATURES                        = 0xc
--	RTAX_FEATURE_ALLFRAG                 = 0x8
--	RTAX_FEATURE_ECN                     = 0x1
--	RTAX_FEATURE_MASK                    = 0xf
--	RTAX_FEATURE_SACK                    = 0x2
--	RTAX_FEATURE_TIMESTAMP               = 0x4
--	RTAX_HOPLIMIT                        = 0xa
--	RTAX_INITCWND                        = 0xb
--	RTAX_INITRWND                        = 0xe
--	RTAX_LOCK                            = 0x1
--	RTAX_MAX                             = 0x10
--	RTAX_MTU                             = 0x2
--	RTAX_QUICKACK                        = 0xf
--	RTAX_REORDERING                      = 0x9
--	RTAX_RTO_MIN                         = 0xd
--	RTAX_RTT                             = 0x4
--	RTAX_RTTVAR                          = 0x5
--	RTAX_SSTHRESH                        = 0x6
--	RTAX_UNSPEC                          = 0x0
--	RTAX_WINDOW                          = 0x3
--	RTA_ALIGNTO                          = 0x4
--	RTA_MAX                              = 0x19
--	RTCF_DIRECTSRC                       = 0x4000000
--	RTCF_DOREDIRECT                      = 0x1000000
--	RTCF_LOG                             = 0x2000000
--	RTCF_MASQ                            = 0x400000
--	RTCF_NAT                             = 0x800000
--	RTCF_VALVE                           = 0x200000
--	RTF_ADDRCLASSMASK                    = 0xf8000000
--	RTF_ADDRCONF                         = 0x40000
--	RTF_ALLONLINK                        = 0x20000
--	RTF_BROADCAST                        = 0x10000000
--	RTF_CACHE                            = 0x1000000
--	RTF_DEFAULT                          = 0x10000
--	RTF_DYNAMIC                          = 0x10
--	RTF_FLOW                             = 0x2000000
--	RTF_GATEWAY                          = 0x2
--	RTF_HOST                             = 0x4
--	RTF_INTERFACE                        = 0x40000000
--	RTF_IRTT                             = 0x100
--	RTF_LINKRT                           = 0x100000
--	RTF_LOCAL                            = 0x80000000
--	RTF_MODIFIED                         = 0x20
--	RTF_MSS                              = 0x40
--	RTF_MTU                              = 0x40
--	RTF_MULTICAST                        = 0x20000000
--	RTF_NAT                              = 0x8000000
--	RTF_NOFORWARD                        = 0x1000
--	RTF_NONEXTHOP                        = 0x200000
--	RTF_NOPMTUDISC                       = 0x4000
--	RTF_POLICY                           = 0x4000000
--	RTF_REINSTATE                        = 0x8
--	RTF_REJECT                           = 0x200
--	RTF_STATIC                           = 0x400
--	RTF_THROW                            = 0x2000
--	RTF_UP                               = 0x1
--	RTF_WINDOW                           = 0x80
--	RTF_XRESOLVE                         = 0x800
--	RTM_BASE                             = 0x10
--	RTM_DELACTION                        = 0x31
--	RTM_DELADDR                          = 0x15
--	RTM_DELADDRLABEL                     = 0x49
--	RTM_DELLINK                          = 0x11
--	RTM_DELMDB                           = 0x55
--	RTM_DELNEIGH                         = 0x1d
--	RTM_DELNSID                          = 0x59
--	RTM_DELQDISC                         = 0x25
--	RTM_DELROUTE                         = 0x19
--	RTM_DELRULE                          = 0x21
--	RTM_DELTCLASS                        = 0x29
--	RTM_DELTFILTER                       = 0x2d
--	RTM_F_CLONED                         = 0x200
--	RTM_F_EQUALIZE                       = 0x400
--	RTM_F_LOOKUP_TABLE                   = 0x1000
--	RTM_F_NOTIFY                         = 0x100
--	RTM_F_PREFIX                         = 0x800
--	RTM_GETACTION                        = 0x32
--	RTM_GETADDR                          = 0x16
--	RTM_GETADDRLABEL                     = 0x4a
--	RTM_GETANYCAST                       = 0x3e
--	RTM_GETDCB                           = 0x4e
--	RTM_GETLINK                          = 0x12
--	RTM_GETMDB                           = 0x56
--	RTM_GETMULTICAST                     = 0x3a
--	RTM_GETNEIGH                         = 0x1e
--	RTM_GETNEIGHTBL                      = 0x42
--	RTM_GETNETCONF                       = 0x52
--	RTM_GETNSID                          = 0x5a
--	RTM_GETQDISC                         = 0x26
--	RTM_GETROUTE                         = 0x1a
--	RTM_GETRULE                          = 0x22
--	RTM_GETSTATS                         = 0x5e
--	RTM_GETTCLASS                        = 0x2a
--	RTM_GETTFILTER                       = 0x2e
--	RTM_MAX                              = 0x5f
--	RTM_NEWACTION                        = 0x30
--	RTM_NEWADDR                          = 0x14
--	RTM_NEWADDRLABEL                     = 0x48
--	RTM_NEWLINK                          = 0x10
--	RTM_NEWMDB                           = 0x54
--	RTM_NEWNDUSEROPT                     = 0x44
--	RTM_NEWNEIGH                         = 0x1c
--	RTM_NEWNEIGHTBL                      = 0x40
--	RTM_NEWNETCONF                       = 0x50
--	RTM_NEWNSID                          = 0x58
--	RTM_NEWPREFIX                        = 0x34
--	RTM_NEWQDISC                         = 0x24
--	RTM_NEWROUTE                         = 0x18
--	RTM_NEWRULE                          = 0x20
--	RTM_NEWSTATS                         = 0x5c
--	RTM_NEWTCLASS                        = 0x28
--	RTM_NEWTFILTER                       = 0x2c
--	RTM_NR_FAMILIES                      = 0x14
--	RTM_NR_MSGTYPES                      = 0x50
--	RTM_SETDCB                           = 0x4f
--	RTM_SETLINK                          = 0x13
--	RTM_SETNEIGHTBL                      = 0x43
--	RTNH_ALIGNTO                         = 0x4
--	RTNH_COMPARE_MASK                    = 0x19
--	RTNH_F_DEAD                          = 0x1
--	RTNH_F_LINKDOWN                      = 0x10
--	RTNH_F_OFFLOAD                       = 0x8
--	RTNH_F_ONLINK                        = 0x4
--	RTNH_F_PERVASIVE                     = 0x2
--	RTN_MAX                              = 0xb
--	RTPROT_BABEL                         = 0x2a
--	RTPROT_BIRD                          = 0xc
--	RTPROT_BOOT                          = 0x3
--	RTPROT_DHCP                          = 0x10
--	RTPROT_DNROUTED                      = 0xd
--	RTPROT_GATED                         = 0x8
--	RTPROT_KERNEL                        = 0x2
--	RTPROT_MROUTED                       = 0x11
--	RTPROT_MRT                           = 0xa
--	RTPROT_NTK                           = 0xf
--	RTPROT_RA                            = 0x9
--	RTPROT_REDIRECT                      = 0x1
--	RTPROT_STATIC                        = 0x4
--	RTPROT_UNSPEC                        = 0x0
--	RTPROT_XORP                          = 0xe
--	RTPROT_ZEBRA                         = 0xb
--	RT_CLASS_DEFAULT                     = 0xfd
--	RT_CLASS_LOCAL                       = 0xff
--	RT_CLASS_MAIN                        = 0xfe
--	RT_CLASS_MAX                         = 0xff
--	RT_CLASS_UNSPEC                      = 0x0
--	RUSAGE_CHILDREN                      = -0x1
--	RUSAGE_SELF                          = 0x0
--	RUSAGE_THREAD                        = 0x1
--	SCM_CREDENTIALS                      = 0x2
--	SCM_RIGHTS                           = 0x1
--	SCM_TIMESTAMP                        = 0x1d
--	SCM_TIMESTAMPING                     = 0x25
--	SCM_TIMESTAMPING_OPT_STATS           = 0x36
--	SCM_TIMESTAMPNS                      = 0x23
--	SCM_WIFI_STATUS                      = 0x29
--	SECCOMP_MODE_DISABLED                = 0x0
--	SECCOMP_MODE_FILTER                  = 0x2
--	SECCOMP_MODE_STRICT                  = 0x1
--	SHUT_RD                              = 0x0
--	SHUT_RDWR                            = 0x2
--	SHUT_WR                              = 0x1
--	SIOCADDDLCI                          = 0x8980
--	SIOCADDMULTI                         = 0x8931
--	SIOCADDRT                            = 0x890b
--	SIOCATMARK                           = 0x8905
--	SIOCBONDCHANGEACTIVE                 = 0x8995
--	SIOCBONDENSLAVE                      = 0x8990
--	SIOCBONDINFOQUERY                    = 0x8994
--	SIOCBONDRELEASE                      = 0x8991
--	SIOCBONDSETHWADDR                    = 0x8992
--	SIOCBONDSLAVEINFOQUERY               = 0x8993
--	SIOCBRADDBR                          = 0x89a0
--	SIOCBRADDIF                          = 0x89a2
--	SIOCBRDELBR                          = 0x89a1
--	SIOCBRDELIF                          = 0x89a3
--	SIOCDARP                             = 0x8953
--	SIOCDELDLCI                          = 0x8981
--	SIOCDELMULTI                         = 0x8932
--	SIOCDELRT                            = 0x890c
--	SIOCDEVPRIVATE                       = 0x89f0
--	SIOCDIFADDR                          = 0x8936
--	SIOCDRARP                            = 0x8960
--	SIOCETHTOOL                          = 0x8946
--	SIOCGARP                             = 0x8954
--	SIOCGHWTSTAMP                        = 0x89b1
--	SIOCGIFADDR                          = 0x8915
--	SIOCGIFBR                            = 0x8940
--	SIOCGIFBRDADDR                       = 0x8919
--	SIOCGIFCONF                          = 0x8912
--	SIOCGIFCOUNT                         = 0x8938
--	SIOCGIFDSTADDR                       = 0x8917
--	SIOCGIFENCAP                         = 0x8925
--	SIOCGIFFLAGS                         = 0x8913
--	SIOCGIFHWADDR                        = 0x8927
--	SIOCGIFINDEX                         = 0x8933
--	SIOCGIFMAP                           = 0x8970
--	SIOCGIFMEM                           = 0x891f
--	SIOCGIFMETRIC                        = 0x891d
--	SIOCGIFMTU                           = 0x8921
--	SIOCGIFNAME                          = 0x8910
--	SIOCGIFNETMASK                       = 0x891b
--	SIOCGIFPFLAGS                        = 0x8935
--	SIOCGIFSLAVE                         = 0x8929
--	SIOCGIFTXQLEN                        = 0x8942
--	SIOCGIFVLAN                          = 0x8982
--	SIOCGMIIPHY                          = 0x8947
--	SIOCGMIIREG                          = 0x8948
--	SIOCGPGRP                            = 0x8904
--	SIOCGRARP                            = 0x8961
--	SIOCGSKNS                            = 0x894c
--	SIOCGSTAMP                           = 0x8906
--	SIOCGSTAMPNS                         = 0x8907
--	SIOCINQ                              = 0x541b
--	SIOCOUTQ                             = 0x5411
--	SIOCOUTQNSD                          = 0x894b
--	SIOCPROTOPRIVATE                     = 0x89e0
--	SIOCRTMSG                            = 0x890d
--	SIOCSARP                             = 0x8955
--	SIOCSHWTSTAMP                        = 0x89b0
--	SIOCSIFADDR                          = 0x8916
--	SIOCSIFBR                            = 0x8941
--	SIOCSIFBRDADDR                       = 0x891a
--	SIOCSIFDSTADDR                       = 0x8918
--	SIOCSIFENCAP                         = 0x8926
--	SIOCSIFFLAGS                         = 0x8914
--	SIOCSIFHWADDR                        = 0x8924
--	SIOCSIFHWBROADCAST                   = 0x8937
--	SIOCSIFLINK                          = 0x8911
--	SIOCSIFMAP                           = 0x8971
--	SIOCSIFMEM                           = 0x8920
--	SIOCSIFMETRIC                        = 0x891e
--	SIOCSIFMTU                           = 0x8922
--	SIOCSIFNAME                          = 0x8923
--	SIOCSIFNETMASK                       = 0x891c
--	SIOCSIFPFLAGS                        = 0x8934
--	SIOCSIFSLAVE                         = 0x8930
--	SIOCSIFTXQLEN                        = 0x8943
--	SIOCSIFVLAN                          = 0x8983
--	SIOCSMIIREG                          = 0x8949
--	SIOCSPGRP                            = 0x8902
--	SIOCSRARP                            = 0x8962
--	SIOCWANDEV                           = 0x894a
--	SOCK_CLOEXEC                         = 0x80000
--	SOCK_DCCP                            = 0x6
--	SOCK_DGRAM                           = 0x2
--	SOCK_IOC_TYPE                        = 0x89
--	SOCK_NONBLOCK                        = 0x800
--	SOCK_PACKET                          = 0xa
--	SOCK_RAW                             = 0x3
--	SOCK_RDM                             = 0x4
--	SOCK_SEQPACKET                       = 0x5
--	SOCK_STREAM                          = 0x1
--	SOL_AAL                              = 0x109
--	SOL_ALG                              = 0x117
--	SOL_ATM                              = 0x108
--	SOL_CAIF                             = 0x116
--	SOL_CAN_BASE                         = 0x64
--	SOL_DCCP                             = 0x10d
--	SOL_DECNET                           = 0x105
--	SOL_ICMPV6                           = 0x3a
--	SOL_IP                               = 0x0
--	SOL_IPV6                             = 0x29
--	SOL_IRDA                             = 0x10a
--	SOL_IUCV                             = 0x115
--	SOL_KCM                              = 0x119
--	SOL_LLC                              = 0x10c
--	SOL_NETBEUI                          = 0x10b
--	SOL_NETLINK                          = 0x10e
--	SOL_NFC                              = 0x118
--	SOL_PACKET                           = 0x107
--	SOL_PNPIPE                           = 0x113
--	SOL_PPPOL2TP                         = 0x111
--	SOL_RAW                              = 0xff
--	SOL_RDS                              = 0x114
--	SOL_RXRPC                            = 0x110
--	SOL_SOCKET                           = 0x1
--	SOL_TCP                              = 0x6
--	SOL_TIPC                             = 0x10f
--	SOL_X25                              = 0x106
--	SOMAXCONN                            = 0x80
--	SO_ACCEPTCONN                        = 0x1e
--	SO_ATTACH_BPF                        = 0x32
--	SO_ATTACH_FILTER                     = 0x1a
--	SO_ATTACH_REUSEPORT_CBPF             = 0x33
--	SO_ATTACH_REUSEPORT_EBPF             = 0x34
--	SO_BINDTODEVICE                      = 0x19
--	SO_BPF_EXTENSIONS                    = 0x30
--	SO_BROADCAST                         = 0x6
--	SO_BSDCOMPAT                         = 0xe
--	SO_BUSY_POLL                         = 0x2e
--	SO_CNX_ADVICE                        = 0x35
--	SO_DEBUG                             = 0x1
--	SO_DETACH_BPF                        = 0x1b
--	SO_DETACH_FILTER                     = 0x1b
--	SO_DOMAIN                            = 0x27
--	SO_DONTROUTE                         = 0x5
--	SO_ERROR                             = 0x4
--	SO_GET_FILTER                        = 0x1a
--	SO_INCOMING_CPU                      = 0x31
--	SO_KEEPALIVE                         = 0x9
--	SO_LINGER                            = 0xd
--	SO_LOCK_FILTER                       = 0x2c
--	SO_MARK                              = 0x24
--	SO_MAX_PACING_RATE                   = 0x2f
--	SO_NOFCS                             = 0x2b
--	SO_NO_CHECK                          = 0xb
--	SO_OOBINLINE                         = 0xa
--	SO_PASSCRED                          = 0x10
--	SO_PASSSEC                           = 0x22
--	SO_PEEK_OFF                          = 0x2a
--	SO_PEERCRED                          = 0x11
--	SO_PEERNAME                          = 0x1c
--	SO_PEERSEC                           = 0x1f
--	SO_PRIORITY                          = 0xc
--	SO_PROTOCOL                          = 0x26
--	SO_RCVBUF                            = 0x8
--	SO_RCVBUFFORCE                       = 0x21
--	SO_RCVLOWAT                          = 0x12
--	SO_RCVTIMEO                          = 0x14
--	SO_REUSEADDR                         = 0x2
--	SO_REUSEPORT                         = 0xf
--	SO_RXQ_OVFL                          = 0x28
--	SO_SECURITY_AUTHENTICATION           = 0x16
--	SO_SECURITY_ENCRYPTION_NETWORK       = 0x18
--	SO_SECURITY_ENCRYPTION_TRANSPORT     = 0x17
--	SO_SELECT_ERR_QUEUE                  = 0x2d
--	SO_SNDBUF                            = 0x7
--	SO_SNDBUFFORCE                       = 0x20
--	SO_SNDLOWAT                          = 0x13
--	SO_SNDTIMEO                          = 0x15
--	SO_TIMESTAMP                         = 0x1d
--	SO_TIMESTAMPING                      = 0x25
--	SO_TIMESTAMPNS                       = 0x23
--	SO_TYPE                              = 0x3
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE        = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE        = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE            = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT        = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX          = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID        = 0x3
--	SO_VM_SOCKETS_TRUSTED                = 0x5
--	SO_WIFI_STATUS                       = 0x29
--	SPLICE_F_GIFT                        = 0x8
--	SPLICE_F_MORE                        = 0x4
--	SPLICE_F_MOVE                        = 0x1
--	SPLICE_F_NONBLOCK                    = 0x2
--	S_BLKSIZE                            = 0x200
--	S_IEXEC                              = 0x40
--	S_IFBLK                              = 0x6000
--	S_IFCHR                              = 0x2000
--	S_IFDIR                              = 0x4000
--	S_IFIFO                              = 0x1000
--	S_IFLNK                              = 0xa000
--	S_IFMT                               = 0xf000
--	S_IFREG                              = 0x8000
--	S_IFSOCK                             = 0xc000
--	S_IREAD                              = 0x100
--	S_IRGRP                              = 0x20
--	S_IROTH                              = 0x4
--	S_IRUSR                              = 0x100
--	S_IRWXG                              = 0x38
--	S_IRWXO                              = 0x7
--	S_IRWXU                              = 0x1c0
--	S_ISGID                              = 0x400
--	S_ISUID                              = 0x800
--	S_ISVTX                              = 0x200
--	S_IWGRP                              = 0x10
--	S_IWOTH                              = 0x2
--	S_IWRITE                             = 0x80
--	S_IWUSR                              = 0x80
--	S_IXGRP                              = 0x8
--	S_IXOTH                              = 0x1
--	S_IXUSR                              = 0x40
--	TAB0                                 = 0x0
--	TAB1                                 = 0x800
--	TAB2                                 = 0x1000
--	TAB3                                 = 0x1800
--	TABDLY                               = 0x1800
--	TASKSTATS_CMD_ATTR_MAX               = 0x4
--	TASKSTATS_CMD_MAX                    = 0x2
--	TASKSTATS_GENL_NAME                  = "TASKSTATS"
--	TASKSTATS_GENL_VERSION               = 0x1
--	TASKSTATS_TYPE_MAX                   = 0x6
--	TASKSTATS_VERSION                    = 0x8
--	TCFLSH                               = 0x540b
--	TCGETA                               = 0x5405
--	TCGETS                               = 0x5401
--	TCGETS2                              = 0x802c542a
--	TCGETX                               = 0x5432
--	TCIFLUSH                             = 0x0
--	TCIOFF                               = 0x2
--	TCIOFLUSH                            = 0x2
--	TCION                                = 0x3
--	TCOFLUSH                             = 0x1
--	TCOOFF                               = 0x0
--	TCOON                                = 0x1
--	TCP_CC_INFO                          = 0x1a
--	TCP_CONGESTION                       = 0xd
--	TCP_COOKIE_IN_ALWAYS                 = 0x1
--	TCP_COOKIE_MAX                       = 0x10
--	TCP_COOKIE_MIN                       = 0x8
--	TCP_COOKIE_OUT_NEVER                 = 0x2
--	TCP_COOKIE_PAIR_SIZE                 = 0x20
--	TCP_COOKIE_TRANSACTIONS              = 0xf
--	TCP_CORK                             = 0x3
--	TCP_DEFER_ACCEPT                     = 0x9
--	TCP_FASTOPEN                         = 0x17
--	TCP_INFO                             = 0xb
--	TCP_KEEPCNT                          = 0x6
--	TCP_KEEPIDLE                         = 0x4
--	TCP_KEEPINTVL                        = 0x5
--	TCP_LINGER2                          = 0x8
--	TCP_MAXSEG                           = 0x2
--	TCP_MAXWIN                           = 0xffff
--	TCP_MAX_WINSHIFT                     = 0xe
--	TCP_MD5SIG                           = 0xe
--	TCP_MD5SIG_MAXKEYLEN                 = 0x50
--	TCP_MSS                              = 0x200
--	TCP_MSS_DEFAULT                      = 0x218
--	TCP_MSS_DESIRED                      = 0x4c4
--	TCP_NODELAY                          = 0x1
--	TCP_NOTSENT_LOWAT                    = 0x19
--	TCP_QUEUE_SEQ                        = 0x15
--	TCP_QUICKACK                         = 0xc
--	TCP_REPAIR                           = 0x13
--	TCP_REPAIR_OPTIONS                   = 0x16
--	TCP_REPAIR_QUEUE                     = 0x14
--	TCP_REPAIR_WINDOW                    = 0x1d
--	TCP_SAVED_SYN                        = 0x1c
--	TCP_SAVE_SYN                         = 0x1b
--	TCP_SYNCNT                           = 0x7
--	TCP_S_DATA_IN                        = 0x4
--	TCP_S_DATA_OUT                       = 0x8
--	TCP_THIN_DUPACK                      = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS             = 0x10
--	TCP_TIMESTAMP                        = 0x18
--	TCP_USER_TIMEOUT                     = 0x12
--	TCP_WINDOW_CLAMP                     = 0xa
--	TCSAFLUSH                            = 0x2
--	TCSBRK                               = 0x5409
--	TCSBRKP                              = 0x5425
--	TCSETA                               = 0x5406
--	TCSETAF                              = 0x5408
--	TCSETAW                              = 0x5407
--	TCSETS                               = 0x5402
--	TCSETS2                              = 0x402c542b
--	TCSETSF                              = 0x5404
--	TCSETSF2                             = 0x402c542d
--	TCSETSW                              = 0x5403
--	TCSETSW2                             = 0x402c542c
--	TCSETX                               = 0x5433
--	TCSETXF                              = 0x5434
--	TCSETXW                              = 0x5435
--	TCXONC                               = 0x540a
--	TIOCCBRK                             = 0x5428
--	TIOCCONS                             = 0x541d
--	TIOCEXCL                             = 0x540c
--	TIOCGDEV                             = 0x80045432
--	TIOCGETD                             = 0x5424
--	TIOCGEXCL                            = 0x80045440
--	TIOCGICOUNT                          = 0x545d
--	TIOCGLCKTRMIOS                       = 0x5456
--	TIOCGPGRP                            = 0x540f
--	TIOCGPKT                             = 0x80045438
--	TIOCGPTLCK                           = 0x80045439
--	TIOCGPTN                             = 0x80045430
--	TIOCGRS485                           = 0x542e
--	TIOCGSERIAL                          = 0x541e
--	TIOCGSID                             = 0x5429
--	TIOCGSOFTCAR                         = 0x5419
--	TIOCGWINSZ                           = 0x5413
--	TIOCINQ                              = 0x541b
--	TIOCLINUX                            = 0x541c
--	TIOCMBIC                             = 0x5417
--	TIOCMBIS                             = 0x5416
--	TIOCMGET                             = 0x5415
--	TIOCMIWAIT                           = 0x545c
--	TIOCMSET                             = 0x5418
--	TIOCM_CAR                            = 0x40
--	TIOCM_CD                             = 0x40
--	TIOCM_CTS                            = 0x20
--	TIOCM_DSR                            = 0x100
--	TIOCM_DTR                            = 0x2
--	TIOCM_LE                             = 0x1
--	TIOCM_RI                             = 0x80
--	TIOCM_RNG                            = 0x80
--	TIOCM_RTS                            = 0x4
--	TIOCM_SR                             = 0x10
--	TIOCM_ST                             = 0x8
--	TIOCNOTTY                            = 0x5422
--	TIOCNXCL                             = 0x540d
--	TIOCOUTQ                             = 0x5411
--	TIOCPKT                              = 0x5420
--	TIOCPKT_DATA                         = 0x0
--	TIOCPKT_DOSTOP                       = 0x20
--	TIOCPKT_FLUSHREAD                    = 0x1
--	TIOCPKT_FLUSHWRITE                   = 0x2
--	TIOCPKT_IOCTL                        = 0x40
--	TIOCPKT_NOSTOP                       = 0x10
--	TIOCPKT_START                        = 0x8
--	TIOCPKT_STOP                         = 0x4
--	TIOCSBRK                             = 0x5427
--	TIOCSCTTY                            = 0x540e
--	TIOCSERCONFIG                        = 0x5453
--	TIOCSERGETLSR                        = 0x5459
--	TIOCSERGETMULTI                      = 0x545a
--	TIOCSERGSTRUCT                       = 0x5458
--	TIOCSERGWILD                         = 0x5454
--	TIOCSERSETMULTI                      = 0x545b
--	TIOCSERSWILD                         = 0x5455
--	TIOCSER_TEMT                         = 0x1
--	TIOCSETD                             = 0x5423
--	TIOCSIG                              = 0x40045436
--	TIOCSLCKTRMIOS                       = 0x5457
--	TIOCSPGRP                            = 0x5410
--	TIOCSPTLCK                           = 0x40045431
--	TIOCSRS485                           = 0x542f
--	TIOCSSERIAL                          = 0x541f
--	TIOCSSOFTCAR                         = 0x541a
--	TIOCSTI                              = 0x5412
--	TIOCSWINSZ                           = 0x5414
--	TIOCVHANGUP                          = 0x5437
--	TOSTOP                               = 0x100
--	TS_COMM_LEN                          = 0x20
--	TUNATTACHFILTER                      = 0x401054d5
--	TUNDETACHFILTER                      = 0x401054d6
--	TUNGETFEATURES                       = 0x800454cf
--	TUNGETFILTER                         = 0x801054db
--	TUNGETIFF                            = 0x800454d2
--	TUNGETSNDBUF                         = 0x800454d3
--	TUNGETVNETBE                         = 0x800454df
--	TUNGETVNETHDRSZ                      = 0x800454d7
--	TUNGETVNETLE                         = 0x800454dd
--	TUNSETDEBUG                          = 0x400454c9
--	TUNSETGROUP                          = 0x400454ce
--	TUNSETIFF                            = 0x400454ca
--	TUNSETIFINDEX                        = 0x400454da
--	TUNSETLINK                           = 0x400454cd
--	TUNSETNOCSUM                         = 0x400454c8
--	TUNSETOFFLOAD                        = 0x400454d0
--	TUNSETOWNER                          = 0x400454cc
--	TUNSETPERSIST                        = 0x400454cb
--	TUNSETQUEUE                          = 0x400454d9
--	TUNSETSNDBUF                         = 0x400454d4
--	TUNSETTXFILTER                       = 0x400454d1
--	TUNSETVNETBE                         = 0x400454de
--	TUNSETVNETHDRSZ                      = 0x400454d8
--	TUNSETVNETLE                         = 0x400454dc
--	UMOUNT_NOFOLLOW                      = 0x8
--	VDISCARD                             = 0xd
--	VEOF                                 = 0x4
--	VEOL                                 = 0xb
--	VEOL2                                = 0x10
--	VERASE                               = 0x2
--	VINTR                                = 0x0
--	VKILL                                = 0x3
--	VLNEXT                               = 0xf
--	VMADDR_CID_ANY                       = 0xffffffff
--	VMADDR_CID_HOST                      = 0x2
--	VMADDR_CID_HYPERVISOR                = 0x0
--	VMADDR_CID_RESERVED                  = 0x1
--	VMADDR_PORT_ANY                      = 0xffffffff
--	VMIN                                 = 0x6
--	VM_SOCKETS_INVALID_VERSION           = 0xffffffff
--	VQUIT                                = 0x1
--	VREPRINT                             = 0xc
--	VSTART                               = 0x8
--	VSTOP                                = 0x9
--	VSUSP                                = 0xa
--	VSWTC                                = 0x7
--	VT0                                  = 0x0
--	VT1                                  = 0x4000
--	VTDLY                                = 0x4000
--	VTIME                                = 0x5
--	VWERASE                              = 0xe
--	WALL                                 = 0x40000000
--	WCLONE                               = 0x80000000
--	WCONTINUED                           = 0x8
--	WEXITED                              = 0x4
--	WNOHANG                              = 0x1
--	WNOTHREAD                            = 0x20000000
--	WNOWAIT                              = 0x1000000
--	WORDSIZE                             = 0x40
--	WSTOPPED                             = 0x2
--	WUNTRACED                            = 0x2
--	XATTR_CREATE                         = 0x1
--	XATTR_REPLACE                        = 0x2
--	XCASE                                = 0x4
--	XTABS                                = 0x1800
-+	B1000000                         = 0x1008
-+	B115200                          = 0x1002
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
-+	B230400                          = 0x1003
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
-+	B460800                          = 0x1004
-+	B500000                          = 0x1005
-+	B57600                           = 0x1001
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x80081270
-+	BLKBSZSET                        = 0x40081271
-+	BLKFLSBUF                        = 0x1261
-+	BLKFRAGET                        = 0x1265
-+	BLKFRASET                        = 0x1264
-+	BLKGETSIZE                       = 0x1260
-+	BLKGETSIZE64                     = 0x80081272
-+	BLKPBSZGET                       = 0x127b
-+	BLKRAGET                         = 0x1263
-+	BLKRASET                         = 0x1262
-+	BLKROGET                         = 0x125e
-+	BLKROSET                         = 0x125d
-+	BLKRRPART                        = 0x125f
-+	BLKSECTGET                       = 0x1267
-+	BLKSECTSET                       = 0x1266
-+	BLKSSZGET                        = 0x1268
-+	BOTHER                           = 0x1000
-+	BS1                              = 0x2000
-+	BSDLY                            = 0x2000
-+	CBAUD                            = 0x100f
-+	CBAUDEX                          = 0x1000
-+	CIBAUD                           = 0x100f0000
-+	CLOCAL                           = 0x800
-+	CR1                              = 0x200
-+	CR2                              = 0x400
-+	CR3                              = 0x600
-+	CRDLY                            = 0x600
-+	CREAD                            = 0x80
-+	CS6                              = 0x10
-+	CS7                              = 0x20
-+	CS8                              = 0x30
-+	CSIZE                            = 0x30
-+	CSTOPB                           = 0x40
-+	ECHOCTL                          = 0x200
-+	ECHOE                            = 0x10
-+	ECHOK                            = 0x20
-+	ECHOKE                           = 0x800
-+	ECHONL                           = 0x40
-+	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x80000
-+	EFD_NONBLOCK                     = 0x800
-+	EPOLL_CLOEXEC                    = 0x80000
-+	EXTPROC                          = 0x10000
-+	FF1                              = 0x8000
-+	FFDLY                            = 0x8000
-+	FLUSHO                           = 0x1000
-+	FS_IOC_ENABLE_VERITY             = 0x40806685
-+	FS_IOC_GETFLAGS                  = 0x80086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
-+	F_GETLK                          = 0x5
-+	F_GETLK64                        = 0x5
-+	F_GETOWN                         = 0x9
-+	F_RDLCK                          = 0x0
-+	F_SETLK                          = 0x6
-+	F_SETLK64                        = 0x6
-+	F_SETLKW                         = 0x7
-+	F_SETLKW64                       = 0x7
-+	F_SETOWN                         = 0x8
-+	F_UNLCK                          = 0x2
-+	F_WRLCK                          = 0x1
-+	HUPCL                            = 0x400
-+	ICANON                           = 0x2
-+	IEXTEN                           = 0x8000
-+	IN_CLOEXEC                       = 0x80000
-+	IN_NONBLOCK                      = 0x800
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9
-+	ISIG                             = 0x1
-+	IUCLC                            = 0x200
-+	IXOFF                            = 0x1000
-+	IXON                             = 0x400
-+	MAP_ANON                         = 0x20
-+	MAP_ANONYMOUS                    = 0x20
-+	MAP_DENYWRITE                    = 0x800
-+	MAP_EXECUTABLE                   = 0x1000
-+	MAP_GROWSDOWN                    = 0x100
-+	MAP_HUGETLB                      = 0x40000
-+	MAP_LOCKED                       = 0x2000
-+	MAP_NONBLOCK                     = 0x10000
-+	MAP_NORESERVE                    = 0x4000
-+	MAP_POPULATE                     = 0x8000
-+	MAP_STACK                        = 0x20000
-+	MAP_SYNC                         = 0x80000
-+	MCL_CURRENT                      = 0x1
-+	MCL_FUTURE                       = 0x2
-+	MCL_ONFAULT                      = 0x4
-+	NFDBITS                          = 0x40
-+	NLDLY                            = 0x100
-+	NOFLSH                           = 0x80
-+	NS_GET_NSTYPE                    = 0xb703
-+	NS_GET_OWNER_UID                 = 0xb704
-+	NS_GET_PARENT                    = 0xb702
-+	NS_GET_USERNS                    = 0xb701
-+	OLCUC                            = 0x2
-+	ONLCR                            = 0x4
-+	O_APPEND                         = 0x400
-+	O_ASYNC                          = 0x2000
-+	O_CLOEXEC                        = 0x80000
-+	O_CREAT                          = 0x40
-+	O_DIRECT                         = 0x4000
-+	O_DIRECTORY                      = 0x10000
-+	O_DSYNC                          = 0x1000
-+	O_EXCL                           = 0x80
-+	O_FSYNC                          = 0x101000
-+	O_LARGEFILE                      = 0x0
-+	O_NDELAY                         = 0x800
-+	O_NOATIME                        = 0x40000
-+	O_NOCTTY                         = 0x100
-+	O_NOFOLLOW                       = 0x20000
-+	O_NONBLOCK                       = 0x800
-+	O_PATH                           = 0x200000
-+	O_RSYNC                          = 0x101000
-+	O_SYNC                           = 0x101000
-+	O_TMPFILE                        = 0x410000
-+	O_TRUNC                          = 0x200
-+	PARENB                           = 0x100
-+	PARODD                           = 0x200
-+	PENDIN                           = 0x4000
-+	PERF_EVENT_IOC_DISABLE           = 0x2401
-+	PERF_EVENT_IOC_ENABLE            = 0x2400
-+	PERF_EVENT_IOC_ID                = 0x80082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409
-+	PERF_EVENT_IOC_PERIOD            = 0x40082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x2402
-+	PERF_EVENT_IOC_RESET             = 0x2403
-+	PERF_EVENT_IOC_SET_BPF           = 0x40042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x40082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x2405
-+	PPPIOCATTACH                     = 0x4004743d
-+	PPPIOCATTCHAN                    = 0x40047438
-+	PPPIOCCONNECT                    = 0x4004743a
-+	PPPIOCDETACH                     = 0x4004743c
-+	PPPIOCDISCONN                    = 0x7439
-+	PPPIOCGASYNCMAP                  = 0x80047458
-+	PPPIOCGCHAN                      = 0x80047437
-+	PPPIOCGDEBUG                     = 0x80047441
-+	PPPIOCGFLAGS                     = 0x8004745a
-+	PPPIOCGIDLE                      = 0x8010743f
-+	PPPIOCGIDLE32                    = 0x8008743f
-+	PPPIOCGIDLE64                    = 0x8010743f
-+	PPPIOCGL2TPSTATS                 = 0x80487436
-+	PPPIOCGMRU                       = 0x80047453
-+	PPPIOCGRASYNCMAP                 = 0x80047455
-+	PPPIOCGUNIT                      = 0x80047456
-+	PPPIOCGXASYNCMAP                 = 0x80207450
-+	PPPIOCSACTIVE                    = 0x40107446
-+	PPPIOCSASYNCMAP                  = 0x40047457
-+	PPPIOCSCOMPRESS                  = 0x4010744d
-+	PPPIOCSDEBUG                     = 0x40047440
-+	PPPIOCSFLAGS                     = 0x40047459
-+	PPPIOCSMAXCID                    = 0x40047451
-+	PPPIOCSMRRU                      = 0x4004743b
-+	PPPIOCSMRU                       = 0x40047452
-+	PPPIOCSNPMODE                    = 0x4008744b
-+	PPPIOCSPASS                      = 0x40107447
-+	PPPIOCSRASYNCMAP                 = 0x40047454
-+	PPPIOCSXASYNCMAP                 = 0x4020744f
-+	PPPIOCXFERUNIT                   = 0x744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
-+	PTRACE_DISABLE_TE                = 0x5010
-+	PTRACE_ENABLE_TE                 = 0x5009
-+	PTRACE_GET_LAST_BREAK            = 0x5006
-+	PTRACE_OLDSETOPTIONS             = 0x15
-+	PTRACE_PEEKDATA_AREA             = 0x5003
-+	PTRACE_PEEKTEXT_AREA             = 0x5002
-+	PTRACE_PEEKUSR_AREA              = 0x5000
-+	PTRACE_PEEK_SYSTEM_CALL          = 0x5007
-+	PTRACE_POKEDATA_AREA             = 0x5005
-+	PTRACE_POKETEXT_AREA             = 0x5004
-+	PTRACE_POKEUSR_AREA              = 0x5001
-+	PTRACE_POKE_SYSTEM_CALL          = 0x5008
-+	PTRACE_PROT                      = 0x15
-+	PTRACE_SINGLEBLOCK               = 0xc
-+	PTRACE_TE_ABORT_RAND             = 0x5011
-+	PT_ACR0                          = 0x90
-+	PT_ACR1                          = 0x94
-+	PT_ACR10                         = 0xb8
-+	PT_ACR11                         = 0xbc
-+	PT_ACR12                         = 0xc0
-+	PT_ACR13                         = 0xc4
-+	PT_ACR14                         = 0xc8
-+	PT_ACR15                         = 0xcc
-+	PT_ACR2                          = 0x98
-+	PT_ACR3                          = 0x9c
-+	PT_ACR4                          = 0xa0
-+	PT_ACR5                          = 0xa4
-+	PT_ACR6                          = 0xa8
-+	PT_ACR7                          = 0xac
-+	PT_ACR8                          = 0xb0
-+	PT_ACR9                          = 0xb4
-+	PT_CR_10                         = 0x168
-+	PT_CR_11                         = 0x170
-+	PT_CR_9                          = 0x160
-+	PT_ENDREGS                       = 0x1af
-+	PT_FPC                           = 0xd8
-+	PT_FPR0                          = 0xe0
-+	PT_FPR1                          = 0xe8
-+	PT_FPR10                         = 0x130
-+	PT_FPR11                         = 0x138
-+	PT_FPR12                         = 0x140
-+	PT_FPR13                         = 0x148
-+	PT_FPR14                         = 0x150
-+	PT_FPR15                         = 0x158
-+	PT_FPR2                          = 0xf0
-+	PT_FPR3                          = 0xf8
-+	PT_FPR4                          = 0x100
-+	PT_FPR5                          = 0x108
-+	PT_FPR6                          = 0x110
-+	PT_FPR7                          = 0x118
-+	PT_FPR8                          = 0x120
-+	PT_FPR9                          = 0x128
-+	PT_GPR0                          = 0x10
-+	PT_GPR1                          = 0x18
-+	PT_GPR10                         = 0x60
-+	PT_GPR11                         = 0x68
-+	PT_GPR12                         = 0x70
-+	PT_GPR13                         = 0x78
-+	PT_GPR14                         = 0x80
-+	PT_GPR15                         = 0x88
-+	PT_GPR2                          = 0x20
-+	PT_GPR3                          = 0x28
-+	PT_GPR4                          = 0x30
-+	PT_GPR5                          = 0x38
-+	PT_GPR6                          = 0x40
-+	PT_GPR7                          = 0x48
-+	PT_GPR8                          = 0x50
-+	PT_GPR9                          = 0x58
-+	PT_IEEE_IP                       = 0x1a8
-+	PT_LASTOFF                       = 0x1a8
-+	PT_ORIGGPR2                      = 0xd0
-+	PT_PSWADDR                       = 0x8
-+	PT_PSWMASK                       = 0x0
-+	RLIMIT_AS                        = 0x9
-+	RLIMIT_MEMLOCK                   = 0x8
-+	RLIMIT_NOFILE                    = 0x7
-+	RLIMIT_NPROC                     = 0x6
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x40085203
-+	RNDADDTOENTCNT                   = 0x40045201
-+	RNDCLEARPOOL                     = 0x5206
-+	RNDGETENTCNT                     = 0x80045200
-+	RNDGETPOOL                       = 0x80085202
-+	RNDRESEEDCRNG                    = 0x5207
-+	RNDZAPENTCNT                     = 0x5204
-+	RTC_AIE_OFF                      = 0x7002
-+	RTC_AIE_ON                       = 0x7001
-+	RTC_ALM_READ                     = 0x80247008
-+	RTC_ALM_SET                      = 0x40247007
-+	RTC_EPOCH_READ                   = 0x8008700d
-+	RTC_EPOCH_SET                    = 0x4008700e
-+	RTC_IRQP_READ                    = 0x8008700b
-+	RTC_IRQP_SET                     = 0x4008700c
-+	RTC_PIE_OFF                      = 0x7006
-+	RTC_PIE_ON                       = 0x7005
-+	RTC_PLL_GET                      = 0x80207011
-+	RTC_PLL_SET                      = 0x40207012
-+	RTC_RD_TIME                      = 0x80247009
-+	RTC_SET_TIME                     = 0x4024700a
-+	RTC_UIE_OFF                      = 0x7004
-+	RTC_UIE_ON                       = 0x7003
-+	RTC_VL_CLR                       = 0x7014
-+	RTC_VL_READ                      = 0x80047013
-+	RTC_WIE_OFF                      = 0x7010
-+	RTC_WIE_ON                       = 0x700f
-+	RTC_WKALM_RD                     = 0x80287010
-+	RTC_WKALM_SET                    = 0x4028700f
-+	SCM_TIMESTAMPING                 = 0x25
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x36
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3a
-+	SCM_TIMESTAMPNS                  = 0x23
-+	SCM_TXTIME                       = 0x3d
-+	SCM_WIFI_STATUS                  = 0x29
-+	SFD_CLOEXEC                      = 0x80000
-+	SFD_NONBLOCK                     = 0x800
-+	SIOCATMARK                       = 0x8905
-+	SIOCGPGRP                        = 0x8904
-+	SIOCGSTAMPNS_NEW                 = 0x80108907
-+	SIOCGSTAMP_NEW                   = 0x80108906
-+	SIOCINQ                          = 0x541b
-+	SIOCOUTQ                         = 0x5411
-+	SIOCSPGRP                        = 0x8902
-+	SOCK_CLOEXEC                     = 0x80000
-+	SOCK_DGRAM                       = 0x2
-+	SOCK_NONBLOCK                    = 0x800
-+	SOCK_STREAM                      = 0x1
-+	SOL_SOCKET                       = 0x1
-+	SO_ACCEPTCONN                    = 0x1e
-+	SO_ATTACH_BPF                    = 0x32
-+	SO_ATTACH_REUSEPORT_CBPF         = 0x33
-+	SO_ATTACH_REUSEPORT_EBPF         = 0x34
-+	SO_BINDTODEVICE                  = 0x19
-+	SO_BINDTOIFINDEX                 = 0x3e
-+	SO_BPF_EXTENSIONS                = 0x30
-+	SO_BROADCAST                     = 0x6
-+	SO_BSDCOMPAT                     = 0xe
-+	SO_BUSY_POLL                     = 0x2e
-+	SO_CNX_ADVICE                    = 0x35
-+	SO_COOKIE                        = 0x39
-+	SO_DETACH_REUSEPORT_BPF          = 0x44
-+	SO_DOMAIN                        = 0x27
-+	SO_DONTROUTE                     = 0x5
-+	SO_ERROR                         = 0x4
-+	SO_INCOMING_CPU                  = 0x31
-+	SO_INCOMING_NAPI_ID              = 0x38
-+	SO_KEEPALIVE                     = 0x9
-+	SO_LINGER                        = 0xd
-+	SO_LOCK_FILTER                   = 0x2c
-+	SO_MARK                          = 0x24
-+	SO_MAX_PACING_RATE               = 0x2f
-+	SO_MEMINFO                       = 0x37
-+	SO_NOFCS                         = 0x2b
-+	SO_OOBINLINE                     = 0xa
-+	SO_PASSCRED                      = 0x10
-+	SO_PASSSEC                       = 0x22
-+	SO_PEEK_OFF                      = 0x2a
-+	SO_PEERCRED                      = 0x11
-+	SO_PEERGROUPS                    = 0x3b
-+	SO_PEERSEC                       = 0x1f
-+	SO_PROTOCOL                      = 0x26
-+	SO_RCVBUF                        = 0x8
-+	SO_RCVBUFFORCE                   = 0x21
-+	SO_RCVLOWAT                      = 0x12
-+	SO_RCVTIMEO                      = 0x14
-+	SO_RCVTIMEO_NEW                  = 0x42
-+	SO_RCVTIMEO_OLD                  = 0x14
-+	SO_REUSEADDR                     = 0x2
-+	SO_REUSEPORT                     = 0xf
-+	SO_RXQ_OVFL                      = 0x28
-+	SO_SECURITY_AUTHENTICATION       = 0x16
-+	SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
-+	SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+	SO_SELECT_ERR_QUEUE              = 0x2d
-+	SO_SNDBUF                        = 0x7
-+	SO_SNDBUFFORCE                   = 0x20
-+	SO_SNDLOWAT                      = 0x13
-+	SO_SNDTIMEO                      = 0x15
-+	SO_SNDTIMEO_NEW                  = 0x43
-+	SO_SNDTIMEO_OLD                  = 0x15
-+	SO_TIMESTAMPING                  = 0x25
-+	SO_TIMESTAMPING_NEW              = 0x41
-+	SO_TIMESTAMPING_OLD              = 0x25
-+	SO_TIMESTAMPNS                   = 0x23
-+	SO_TIMESTAMPNS_NEW               = 0x40
-+	SO_TIMESTAMPNS_OLD               = 0x23
-+	SO_TIMESTAMP_NEW                 = 0x3f
-+	SO_TXTIME                        = 0x3d
-+	SO_TYPE                          = 0x3
-+	SO_WIFI_STATUS                   = 0x29
-+	SO_ZEROCOPY                      = 0x3c
-+	TAB1                             = 0x800
-+	TAB2                             = 0x1000
-+	TAB3                             = 0x1800
-+	TABDLY                           = 0x1800
-+	TCFLSH                           = 0x540b
-+	TCGETA                           = 0x5405
-+	TCGETS                           = 0x5401
-+	TCGETS2                          = 0x802c542a
-+	TCGETX                           = 0x5432
-+	TCSAFLUSH                        = 0x2
-+	TCSBRK                           = 0x5409
-+	TCSBRKP                          = 0x5425
-+	TCSETA                           = 0x5406
-+	TCSETAF                          = 0x5408
-+	TCSETAW                          = 0x5407
-+	TCSETS                           = 0x5402
-+	TCSETS2                          = 0x402c542b
-+	TCSETSF                          = 0x5404
-+	TCSETSF2                         = 0x402c542d
-+	TCSETSW                          = 0x5403
-+	TCSETSW2                         = 0x402c542c
-+	TCSETX                           = 0x5433
-+	TCSETXF                          = 0x5434
-+	TCSETXW                          = 0x5435
-+	TCXONC                           = 0x540a
-+	TIOCCBRK                         = 0x5428
-+	TIOCCONS                         = 0x541d
-+	TIOCEXCL                         = 0x540c
-+	TIOCGDEV                         = 0x80045432
-+	TIOCGETD                         = 0x5424
-+	TIOCGEXCL                        = 0x80045440
-+	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x80285442
-+	TIOCGLCKTRMIOS                   = 0x5456
-+	TIOCGPGRP                        = 0x540f
-+	TIOCGPKT                         = 0x80045438
-+	TIOCGPTLCK                       = 0x80045439
-+	TIOCGPTN                         = 0x80045430
-+	TIOCGPTPEER                      = 0x5441
-+	TIOCGRS485                       = 0x542e
-+	TIOCGSERIAL                      = 0x541e
-+	TIOCGSID                         = 0x5429
-+	TIOCGSOFTCAR                     = 0x5419
-+	TIOCGWINSZ                       = 0x5413
-+	TIOCINQ                          = 0x541b
-+	TIOCLINUX                        = 0x541c
-+	TIOCMBIC                         = 0x5417
-+	TIOCMBIS                         = 0x5416
-+	TIOCMGET                         = 0x5415
-+	TIOCMIWAIT                       = 0x545c
-+	TIOCMSET                         = 0x5418
-+	TIOCM_CAR                        = 0x40
-+	TIOCM_CD                         = 0x40
-+	TIOCM_CTS                        = 0x20
-+	TIOCM_DSR                        = 0x100
-+	TIOCM_RI                         = 0x80
-+	TIOCM_RNG                        = 0x80
-+	TIOCM_SR                         = 0x10
-+	TIOCM_ST                         = 0x8
-+	TIOCNOTTY                        = 0x5422
-+	TIOCNXCL                         = 0x540d
-+	TIOCOUTQ                         = 0x5411
-+	TIOCPKT                          = 0x5420
-+	TIOCSBRK                         = 0x5427
-+	TIOCSCTTY                        = 0x540e
-+	TIOCSERCONFIG                    = 0x5453
-+	TIOCSERGETLSR                    = 0x5459
-+	TIOCSERGETMULTI                  = 0x545a
-+	TIOCSERGSTRUCT                   = 0x5458
-+	TIOCSERGWILD                     = 0x5454
-+	TIOCSERSETMULTI                  = 0x545b
-+	TIOCSERSWILD                     = 0x5455
-+	TIOCSER_TEMT                     = 0x1
-+	TIOCSETD                         = 0x5423
-+	TIOCSIG                          = 0x40045436
-+	TIOCSISO7816                     = 0xc0285443
-+	TIOCSLCKTRMIOS                   = 0x5457
-+	TIOCSPGRP                        = 0x5410
-+	TIOCSPTLCK                       = 0x40045431
-+	TIOCSRS485                       = 0x542f
-+	TIOCSSERIAL                      = 0x541f
-+	TIOCSSOFTCAR                     = 0x541a
-+	TIOCSTI                          = 0x5412
-+	TIOCSWINSZ                       = 0x5414
-+	TIOCVHANGUP                      = 0x5437
-+	TOSTOP                           = 0x100
-+	TUNATTACHFILTER                  = 0x401054d5
-+	TUNDETACHFILTER                  = 0x401054d6
-+	TUNGETDEVNETNS                   = 0x54e3
-+	TUNGETFEATURES                   = 0x800454cf
-+	TUNGETFILTER                     = 0x801054db
-+	TUNGETIFF                        = 0x800454d2
-+	TUNGETSNDBUF                     = 0x800454d3
-+	TUNGETVNETBE                     = 0x800454df
-+	TUNGETVNETHDRSZ                  = 0x800454d7
-+	TUNGETVNETLE                     = 0x800454dd
-+	TUNSETCARRIER                    = 0x400454e2
-+	TUNSETDEBUG                      = 0x400454c9
-+	TUNSETFILTEREBPF                 = 0x800454e1
-+	TUNSETGROUP                      = 0x400454ce
-+	TUNSETIFF                        = 0x400454ca
-+	TUNSETIFINDEX                    = 0x400454da
-+	TUNSETLINK                       = 0x400454cd
-+	TUNSETNOCSUM                     = 0x400454c8
-+	TUNSETOFFLOAD                    = 0x400454d0
-+	TUNSETOWNER                      = 0x400454cc
-+	TUNSETPERSIST                    = 0x400454cb
-+	TUNSETQUEUE                      = 0x400454d9
-+	TUNSETSNDBUF                     = 0x400454d4
-+	TUNSETSTEERINGEBPF               = 0x800454e0
-+	TUNSETTXFILTER                   = 0x400454d1
-+	TUNSETVNETBE                     = 0x400454de
-+	TUNSETVNETHDRSZ                  = 0x400454d8
-+	TUNSETVNETLE                     = 0x400454dc
-+	UBI_IOCATT                       = 0x40186f40
-+	UBI_IOCDET                       = 0x40046f41
-+	UBI_IOCEBCH                      = 0x40044f02
-+	UBI_IOCEBER                      = 0x40044f01
-+	UBI_IOCEBISMAP                   = 0x80044f05
-+	UBI_IOCEBMAP                     = 0x40084f03
-+	UBI_IOCEBUNMAP                   = 0x40044f04
-+	UBI_IOCMKVOL                     = 0x40986f00
-+	UBI_IOCRMVOL                     = 0x40046f01
-+	UBI_IOCRNVOL                     = 0x51106f03
-+	UBI_IOCRPEB                      = 0x40046f04
-+	UBI_IOCRSVOL                     = 0x400c6f02
-+	UBI_IOCSETVOLPROP                = 0x40104f06
-+	UBI_IOCSPEB                      = 0x40046f05
-+	UBI_IOCVOLCRBLK                  = 0x40804f07
-+	UBI_IOCVOLRMBLK                  = 0x4f08
-+	UBI_IOCVOLUP                     = 0x40084f00
-+	VDISCARD                         = 0xd
-+	VEOF                             = 0x4
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
-+	VREPRINT                         = 0xc
-+	VSTART                           = 0x8
-+	VSTOP                            = 0x9
-+	VSUSP                            = 0xa
-+	VSWTC                            = 0x7
-+	VT1                              = 0x4000
-+	VTDLY                            = 0x4000
-+	VTIME                            = 0x5
-+	VWERASE                          = 0xe
-+	WDIOC_GETBOOTSTATUS              = 0x80045702
-+	WDIOC_GETPRETIMEOUT              = 0x80045709
-+	WDIOC_GETSTATUS                  = 0x80045701
-+	WDIOC_GETSUPPORT                 = 0x80285700
-+	WDIOC_GETTEMP                    = 0x80045703
-+	WDIOC_GETTIMELEFT                = 0x8004570a
-+	WDIOC_GETTIMEOUT                 = 0x80045707
-+	WDIOC_KEEPALIVE                  = 0x80045705
-+	WDIOC_SETOPTIONS                 = 0x80045704
-+	WORDSIZE                         = 0x40
-+	XCASE                            = 0x4
-+	XTABS                            = 0x1800
- )
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x62)
- 	EADDRNOTAVAIL   = syscall.Errno(0x63)
- 	EADV            = syscall.Errno(0x44)
- 	EAFNOSUPPORT    = syscall.Errno(0x61)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x72)
- 	EBADE           = syscall.Errno(0x34)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x4d)
- 	EBADMSG         = syscall.Errno(0x4a)
- 	EBADR           = syscall.Errno(0x35)
- 	EBADRQC         = syscall.Errno(0x38)
- 	EBADSLT         = syscall.Errno(0x39)
- 	EBFONT          = syscall.Errno(0x3b)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7d)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x2c)
- 	ECOMM           = syscall.Errno(0x46)
- 	ECONNABORTED    = syscall.Errno(0x67)
-@@ -1943,23 +560,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x23)
- 	EDEADLOCK       = syscall.Errno(0x23)
- 	EDESTADDRREQ    = syscall.Errno(0x59)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x49)
- 	EDQUOT          = syscall.Errno(0x7a)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x70)
- 	EHOSTUNREACH    = syscall.Errno(0x71)
- 	EHWPOISON       = syscall.Errno(0x85)
- 	EIDRM           = syscall.Errno(0x2b)
- 	EILSEQ          = syscall.Errno(0x54)
- 	EINPROGRESS     = syscall.Errno(0x73)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x6a)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x7f)
- 	EKEYREJECTED    = syscall.Errno(0x81)
-@@ -1976,8 +585,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x30)
- 	ELOOP           = syscall.Errno(0x28)
- 	EMEDIUMTYPE     = syscall.Errno(0x7c)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x5a)
- 	EMULTIHOP       = syscall.Errno(0x48)
- 	ENAMETOOLONG    = syscall.Errno(0x24)
-@@ -1985,103 +592,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x64)
- 	ENETRESET       = syscall.Errno(0x66)
- 	ENETUNREACH     = syscall.Errno(0x65)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x37)
- 	ENOBUFS         = syscall.Errno(0x69)
- 	ENOCSI          = syscall.Errno(0x32)
- 	ENODATA         = syscall.Errno(0x3d)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x7e)
- 	ENOLCK          = syscall.Errno(0x25)
- 	ENOLINK         = syscall.Errno(0x43)
- 	ENOMEDIUM       = syscall.Errno(0x7b)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x2a)
- 	ENONET          = syscall.Errno(0x40)
- 	ENOPKG          = syscall.Errno(0x41)
- 	ENOPROTOOPT     = syscall.Errno(0x5c)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x3f)
- 	ENOSTR          = syscall.Errno(0x3c)
- 	ENOSYS          = syscall.Errno(0x26)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x6b)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x27)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x83)
- 	ENOTSOCK        = syscall.Errno(0x58)
- 	ENOTSUP         = syscall.Errno(0x5f)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x4c)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x5f)
- 	EOVERFLOW       = syscall.Errno(0x4b)
- 	EOWNERDEAD      = syscall.Errno(0x82)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x60)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROTO          = syscall.Errno(0x47)
- 	EPROTONOSUPPORT = syscall.Errno(0x5d)
- 	EPROTOTYPE      = syscall.Errno(0x5b)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x4e)
- 	EREMOTE         = syscall.Errno(0x42)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x55)
- 	ERFKILL         = syscall.Errno(0x84)
--	EROFS           = syscall.Errno(0x1e)
- 	ESHUTDOWN       = syscall.Errno(0x6c)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x5e)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x45)
- 	ESTALE          = syscall.Errno(0x74)
- 	ESTRPIPE        = syscall.Errno(0x56)
- 	ETIME           = syscall.Errno(0x3e)
- 	ETIMEDOUT       = syscall.Errno(0x6e)
- 	ETOOMANYREFS    = syscall.Errno(0x6d)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x31)
- 	EUSERS          = syscall.Errno(0x57)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x36)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0x7)
- 	SIGCHLD   = syscall.Signal(0x11)
- 	SIGCLD    = syscall.Signal(0x11)
- 	SIGCONT   = syscall.Signal(0x12)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x1d)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x1d)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1e)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTKFLT = syscall.Signal(0x10)
- 	SIGSTOP   = syscall.Signal(0x13)
- 	SIGSYS    = syscall.Signal(0x1f)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x14)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
--	SIGUNUSED = syscall.Signal(0x1f)
- 	SIGURG    = syscall.Signal(0x17)
- 	SIGUSR1   = syscall.Signal(0xa)
- 	SIGUSR2   = syscall.Signal(0xc)
-@@ -2092,171 +666,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	35:  "resource deadlock avoided",
--	36:  "file name too long",
--	37:  "no locks available",
--	38:  "function not implemented",
--	39:  "directory not empty",
--	40:  "too many levels of symbolic links",
--	42:  "no message of desired type",
--	43:  "identifier removed",
--	44:  "channel number out of range",
--	45:  "level 2 not synchronized",
--	46:  "level 3 halted",
--	47:  "level 3 reset",
--	48:  "link number out of range",
--	49:  "protocol driver not attached",
--	50:  "no CSI structure available",
--	51:  "level 2 halted",
--	52:  "invalid exchange",
--	53:  "invalid request descriptor",
--	54:  "exchange full",
--	55:  "no anode",
--	56:  "invalid request code",
--	57:  "invalid slot",
--	59:  "bad font file format",
--	60:  "device not a stream",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of streams resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "multihop attempted",
--	73:  "RFS specific error",
--	74:  "bad message",
--	75:  "value too large for defined data type",
--	76:  "name not unique on network",
--	77:  "file descriptor in bad state",
--	78:  "remote address changed",
--	79:  "can not access a needed shared library",
--	80:  "accessing a corrupted shared library",
--	81:  ".lib section in a.out corrupted",
--	82:  "attempting to link in too many shared libraries",
--	83:  "cannot exec a shared library directly",
--	84:  "invalid or incomplete multibyte or wide character",
--	85:  "interrupted system call should be restarted",
--	86:  "streams pipe error",
--	87:  "too many users",
--	88:  "socket operation on non-socket",
--	89:  "destination address required",
--	90:  "message too long",
--	91:  "protocol wrong type for socket",
--	92:  "protocol not available",
--	93:  "protocol not supported",
--	94:  "socket type not supported",
--	95:  "operation not supported",
--	96:  "protocol family not supported",
--	97:  "address family not supported by protocol",
--	98:  "address already in use",
--	99:  "cannot assign requested address",
--	100: "network is down",
--	101: "network is unreachable",
--	102: "network dropped connection on reset",
--	103: "software caused connection abort",
--	104: "connection reset by peer",
--	105: "no buffer space available",
--	106: "transport endpoint is already connected",
--	107: "transport endpoint is not connected",
--	108: "cannot send after transport endpoint shutdown",
--	109: "too many references: cannot splice",
--	110: "connection timed out",
--	111: "connection refused",
--	112: "host is down",
--	113: "no route to host",
--	114: "operation already in progress",
--	115: "operation now in progress",
--	116: "stale file handle",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "disk quota exceeded",
--	123: "no medium found",
--	124: "wrong medium type",
--	125: "operation canceled",
--	126: "required key not available",
--	127: "key has expired",
--	128: "key has been revoked",
--	129: "key was rejected by service",
--	130: "owner died",
--	131: "state not recoverable",
--	132: "operation not possible due to RF-kill",
--	133: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{35, "EDEADLK", "resource deadlock avoided"},
-+	{36, "ENAMETOOLONG", "file name too long"},
-+	{37, "ENOLCK", "no locks available"},
-+	{38, "ENOSYS", "function not implemented"},
-+	{39, "ENOTEMPTY", "directory not empty"},
-+	{40, "ELOOP", "too many levels of symbolic links"},
-+	{42, "ENOMSG", "no message of desired type"},
-+	{43, "EIDRM", "identifier removed"},
-+	{44, "ECHRNG", "channel number out of range"},
-+	{45, "EL2NSYNC", "level 2 not synchronized"},
-+	{46, "EL3HLT", "level 3 halted"},
-+	{47, "EL3RST", "level 3 reset"},
-+	{48, "ELNRNG", "link number out of range"},
-+	{49, "EUNATCH", "protocol driver not attached"},
-+	{50, "ENOCSI", "no CSI structure available"},
-+	{51, "EL2HLT", "level 2 halted"},
-+	{52, "EBADE", "invalid exchange"},
-+	{53, "EBADR", "invalid request descriptor"},
-+	{54, "EXFULL", "exchange full"},
-+	{55, "ENOANO", "no anode"},
-+	{56, "EBADRQC", "invalid request code"},
-+	{57, "EBADSLT", "invalid slot"},
-+	{59, "EBFONT", "bad font file format"},
-+	{60, "ENOSTR", "device not a stream"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of streams resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "EMULTIHOP", "multihop attempted"},
-+	{73, "EDOTDOT", "RFS specific error"},
-+	{74, "EBADMSG", "bad message"},
-+	{75, "EOVERFLOW", "value too large for defined data type"},
-+	{76, "ENOTUNIQ", "name not unique on network"},
-+	{77, "EBADFD", "file descriptor in bad state"},
-+	{78, "EREMCHG", "remote address changed"},
-+	{79, "ELIBACC", "can not access a needed shared library"},
-+	{80, "ELIBBAD", "accessing a corrupted shared library"},
-+	{81, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{83, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{85, "ERESTART", "interrupted system call should be restarted"},
-+	{86, "ESTRPIPE", "streams pipe error"},
-+	{87, "EUSERS", "too many users"},
-+	{88, "ENOTSOCK", "socket operation on non-socket"},
-+	{89, "EDESTADDRREQ", "destination address required"},
-+	{90, "EMSGSIZE", "message too long"},
-+	{91, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{92, "ENOPROTOOPT", "protocol not available"},
-+	{93, "EPROTONOSUPPORT", "protocol not supported"},
-+	{94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{95, "ENOTSUP", "operation not supported"},
-+	{96, "EPFNOSUPPORT", "protocol family not supported"},
-+	{97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{98, "EADDRINUSE", "address already in use"},
-+	{99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{100, "ENETDOWN", "network is down"},
-+	{101, "ENETUNREACH", "network is unreachable"},
-+	{102, "ENETRESET", "network dropped connection on reset"},
-+	{103, "ECONNABORTED", "software caused connection abort"},
-+	{104, "ECONNRESET", "connection reset by peer"},
-+	{105, "ENOBUFS", "no buffer space available"},
-+	{106, "EISCONN", "transport endpoint is already connected"},
-+	{107, "ENOTCONN", "transport endpoint is not connected"},
-+	{108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{109, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{110, "ETIMEDOUT", "connection timed out"},
-+	{111, "ECONNREFUSED", "connection refused"},
-+	{112, "EHOSTDOWN", "host is down"},
-+	{113, "EHOSTUNREACH", "no route to host"},
-+	{114, "EALREADY", "operation already in progress"},
-+	{115, "EINPROGRESS", "operation now in progress"},
-+	{116, "ESTALE", "stale file handle"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EDQUOT", "disk quota exceeded"},
-+	{123, "ENOMEDIUM", "no medium found"},
-+	{124, "EMEDIUMTYPE", "wrong medium type"},
-+	{125, "ECANCELED", "operation canceled"},
-+	{126, "ENOKEY", "required key not available"},
-+	{127, "EKEYEXPIRED", "key has expired"},
-+	{128, "EKEYREVOKED", "key has been revoked"},
-+	{129, "EKEYREJECTED", "key was rejected by service"},
-+	{130, "EOWNERDEAD", "owner died"},
-+	{131, "ENOTRECOVERABLE", "state not recoverable"},
-+	{132, "ERFKILL", "operation not possible due to RF-kill"},
-+	{133, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "bus error",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "user defined signal 1",
--	11: "segmentation fault",
--	12: "user defined signal 2",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "stack fault",
--	17: "child exited",
--	18: "continued",
--	19: "stopped (signal)",
--	20: "stopped",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "urgent I/O condition",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "I/O possible",
--	30: "power failure",
--	31: "bad system call",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGBUS", "bus error"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGUSR1", "user defined signal 1"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGUSR2", "user defined signal 2"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGSTKFLT", "stack fault"},
-+	{17, "SIGCHLD", "child exited"},
-+	{18, "SIGCONT", "continued"},
-+	{19, "SIGSTOP", "stopped (signal)"},
-+	{20, "SIGTSTP", "stopped"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGURG", "urgent I/O condition"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGIO", "I/O possible"},
-+	{30, "SIGPWR", "power failure"},
-+	{31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-index 95de199f..079762fa 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-@@ -1,915 +1,132 @@
--// mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// mkerrors.sh -Wall -Werror -static -I/tmp/include
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build sparc64,linux
- 
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs -- -m64 _const.go
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
- 
- package unix
- 
- import "syscall"
- 
- const (
--	AF_ALG                           = 0x26
--	AF_APPLETALK                     = 0x5
--	AF_ASH                           = 0x12
--	AF_ATMPVC                        = 0x8
--	AF_ATMSVC                        = 0x14
--	AF_AX25                          = 0x3
--	AF_BLUETOOTH                     = 0x1f
--	AF_BRIDGE                        = 0x7
--	AF_CAIF                          = 0x25
--	AF_CAN                           = 0x1d
--	AF_DECnet                        = 0xc
--	AF_ECONET                        = 0x13
--	AF_FILE                          = 0x1
--	AF_IB                            = 0x1b
--	AF_IEEE802154                    = 0x24
--	AF_INET                          = 0x2
--	AF_INET6                         = 0xa
--	AF_IPX                           = 0x4
--	AF_IRDA                          = 0x17
--	AF_ISDN                          = 0x22
--	AF_IUCV                          = 0x20
--	AF_KCM                           = 0x29
--	AF_KEY                           = 0xf
--	AF_LLC                           = 0x1a
--	AF_LOCAL                         = 0x1
--	AF_MAX                           = 0x2a
--	AF_MPLS                          = 0x1c
--	AF_NETBEUI                       = 0xd
--	AF_NETLINK                       = 0x10
--	AF_NETROM                        = 0x6
--	AF_NFC                           = 0x27
--	AF_PACKET                        = 0x11
--	AF_PHONET                        = 0x23
--	AF_PPPOX                         = 0x18
--	AF_RDS                           = 0x15
--	AF_ROSE                          = 0xb
--	AF_ROUTE                         = 0x10
--	AF_RXRPC                         = 0x21
--	AF_SECURITY                      = 0xe
--	AF_SNA                           = 0x16
--	AF_TIPC                          = 0x1e
--	AF_UNIX                          = 0x1
--	AF_UNSPEC                        = 0x0
--	AF_VSOCK                         = 0x28
--	AF_WANPIPE                       = 0x19
--	AF_X25                           = 0x9
--	ALG_OP_DECRYPT                   = 0x0
--	ALG_OP_ENCRYPT                   = 0x1
--	ALG_SET_AEAD_ASSOCLEN            = 0x4
--	ALG_SET_AEAD_AUTHSIZE            = 0x5
--	ALG_SET_IV                       = 0x2
--	ALG_SET_KEY                      = 0x1
--	ALG_SET_OP                       = 0x3
--	ARPHRD_6LOWPAN                   = 0x339
--	ARPHRD_ADAPT                     = 0x108
--	ARPHRD_APPLETLK                  = 0x8
--	ARPHRD_ARCNET                    = 0x7
--	ARPHRD_ASH                       = 0x30d
--	ARPHRD_ATM                       = 0x13
--	ARPHRD_AX25                      = 0x3
--	ARPHRD_BIF                       = 0x307
--	ARPHRD_CAIF                      = 0x336
--	ARPHRD_CAN                       = 0x118
--	ARPHRD_CHAOS                     = 0x5
--	ARPHRD_CISCO                     = 0x201
--	ARPHRD_CSLIP                     = 0x101
--	ARPHRD_CSLIP6                    = 0x103
--	ARPHRD_DDCMP                     = 0x205
--	ARPHRD_DLCI                      = 0xf
--	ARPHRD_ECONET                    = 0x30e
--	ARPHRD_EETHER                    = 0x2
--	ARPHRD_ETHER                     = 0x1
--	ARPHRD_EUI64                     = 0x1b
--	ARPHRD_FCAL                      = 0x311
--	ARPHRD_FCFABRIC                  = 0x313
--	ARPHRD_FCPL                      = 0x312
--	ARPHRD_FCPP                      = 0x310
--	ARPHRD_FDDI                      = 0x306
--	ARPHRD_FRAD                      = 0x302
--	ARPHRD_HDLC                      = 0x201
--	ARPHRD_HIPPI                     = 0x30c
--	ARPHRD_HWX25                     = 0x110
--	ARPHRD_IEEE1394                  = 0x18
--	ARPHRD_IEEE802                   = 0x6
--	ARPHRD_IEEE80211                 = 0x321
--	ARPHRD_IEEE80211_PRISM           = 0x322
--	ARPHRD_IEEE80211_RADIOTAP        = 0x323
--	ARPHRD_IEEE802154                = 0x324
--	ARPHRD_IEEE802154_MONITOR        = 0x325
--	ARPHRD_IEEE802_TR                = 0x320
--	ARPHRD_INFINIBAND                = 0x20
--	ARPHRD_IP6GRE                    = 0x337
--	ARPHRD_IPDDP                     = 0x309
--	ARPHRD_IPGRE                     = 0x30a
--	ARPHRD_IRDA                      = 0x30f
--	ARPHRD_LAPB                      = 0x204
--	ARPHRD_LOCALTLK                  = 0x305
--	ARPHRD_LOOPBACK                  = 0x304
--	ARPHRD_METRICOM                  = 0x17
--	ARPHRD_NETLINK                   = 0x338
--	ARPHRD_NETROM                    = 0x0
--	ARPHRD_NONE                      = 0xfffe
--	ARPHRD_PHONET                    = 0x334
--	ARPHRD_PHONET_PIPE               = 0x335
--	ARPHRD_PIMREG                    = 0x30b
--	ARPHRD_PPP                       = 0x200
--	ARPHRD_PRONET                    = 0x4
--	ARPHRD_RAWHDLC                   = 0x206
--	ARPHRD_ROSE                      = 0x10e
--	ARPHRD_RSRVD                     = 0x104
--	ARPHRD_SIT                       = 0x308
--	ARPHRD_SKIP                      = 0x303
--	ARPHRD_SLIP                      = 0x100
--	ARPHRD_SLIP6                     = 0x102
--	ARPHRD_TUNNEL                    = 0x300
--	ARPHRD_TUNNEL6                   = 0x301
--	ARPHRD_VOID                      = 0xffff
--	ARPHRD_X25                       = 0x10f
- 	ASI_LEON_DFLUSH                  = 0x11
- 	ASI_LEON_IFLUSH                  = 0x10
- 	ASI_LEON_MMUFLUSH                = 0x18
--	B0                               = 0x0
--	B1000000                         = 0x100c
--	B110                             = 0x3
-+	B1000000                         = 0x1008
- 	B115200                          = 0x1002
--	B1152000                         = 0x100d
--	B1200                            = 0x9
--	B134                             = 0x4
--	B150                             = 0x5
--	B1500000                         = 0x100e
--	B153600                          = 0x1006
--	B1800                            = 0xa
--	B19200                           = 0xe
--	B200                             = 0x6
--	B2000000                         = 0x100f
-+	B1152000                         = 0x1009
-+	B1500000                         = 0x100a
-+	B2000000                         = 0x100b
- 	B230400                          = 0x1003
--	B2400                            = 0xb
--	B300                             = 0x7
--	B307200                          = 0x1007
--	B38400                           = 0xf
-+	B2500000                         = 0x100c
-+	B3000000                         = 0x100d
-+	B3500000                         = 0x100e
-+	B4000000                         = 0x100f
- 	B460800                          = 0x1004
--	B4800                            = 0xc
--	B50                              = 0x1
--	B500000                          = 0x100a
-+	B500000                          = 0x1005
- 	B57600                           = 0x1001
--	B576000                          = 0x100b
--	B600                             = 0x8
--	B614400                          = 0x1008
--	B75                              = 0x2
--	B76800                           = 0x1005
--	B921600                          = 0x1009
--	B9600                            = 0xd
--	BLKBSZGET                        = 0x80081270
--	BLKBSZSET                        = 0x40081271
--	BLKFLSBUF                        = 0x1261
--	BLKFRAGET                        = 0x1265
--	BLKFRASET                        = 0x1264
--	BLKGETSIZE                       = 0x1260
--	BLKGETSIZE64                     = 0x80081272
--	BLKRAGET                         = 0x1263
--	BLKRASET                         = 0x1262
--	BLKROGET                         = 0x125e
--	BLKROSET                         = 0x125d
--	BLKRRPART                        = 0x125f
--	BLKSECTGET                       = 0x1267
--	BLKSECTSET                       = 0x1266
--	BLKSSZGET                        = 0x1268
-+	B576000                          = 0x1006
-+	B921600                          = 0x1007
-+	BLKBSZGET                        = 0x40081270
-+	BLKBSZSET                        = 0x80081271
-+	BLKFLSBUF                        = 0x20001261
-+	BLKFRAGET                        = 0x20001265
-+	BLKFRASET                        = 0x20001264
-+	BLKGETSIZE                       = 0x20001260
-+	BLKGETSIZE64                     = 0x40081272
-+	BLKPBSZGET                       = 0x2000127b
-+	BLKRAGET                         = 0x20001263
-+	BLKRASET                         = 0x20001262
-+	BLKROGET                         = 0x2000125e
-+	BLKROSET                         = 0x2000125d
-+	BLKRRPART                        = 0x2000125f
-+	BLKSECTGET                       = 0x20001267
-+	BLKSECTSET                       = 0x20001266
-+	BLKSSZGET                        = 0x20001268
- 	BOTHER                           = 0x1000
--	BPF_A                            = 0x10
--	BPF_ABS                          = 0x20
--	BPF_ADD                          = 0x0
--	BPF_ALU                          = 0x4
--	BPF_AND                          = 0x50
--	BPF_B                            = 0x10
--	BPF_DIV                          = 0x30
--	BPF_H                            = 0x8
--	BPF_IMM                          = 0x0
--	BPF_IND                          = 0x40
--	BPF_JA                           = 0x0
--	BPF_JEQ                          = 0x10
--	BPF_JGE                          = 0x30
--	BPF_JGT                          = 0x20
--	BPF_JMP                          = 0x5
--	BPF_JSET                         = 0x40
--	BPF_K                            = 0x0
--	BPF_LD                           = 0x0
--	BPF_LDX                          = 0x1
--	BPF_LEN                          = 0x80
--	BPF_LL_OFF                       = -0x200000
--	BPF_LSH                          = 0x60
--	BPF_MAJOR_VERSION                = 0x1
--	BPF_MAXINSNS                     = 0x1000
--	BPF_MEM                          = 0x60
--	BPF_MEMWORDS                     = 0x10
--	BPF_MINOR_VERSION                = 0x1
--	BPF_MISC                         = 0x7
--	BPF_MOD                          = 0x90
--	BPF_MSH                          = 0xa0
--	BPF_MUL                          = 0x20
--	BPF_NEG                          = 0x80
--	BPF_NET_OFF                      = -0x100000
--	BPF_OR                           = 0x40
--	BPF_RET                          = 0x6
--	BPF_RSH                          = 0x70
--	BPF_ST                           = 0x2
--	BPF_STX                          = 0x3
--	BPF_SUB                          = 0x10
--	BPF_TAX                          = 0x0
--	BPF_TXA                          = 0x80
--	BPF_W                            = 0x0
--	BPF_X                            = 0x8
--	BPF_XOR                          = 0xa0
--	BRKINT                           = 0x2
--	BS0                              = 0x0
- 	BS1                              = 0x2000
- 	BSDLY                            = 0x2000
--	CAN_BCM                          = 0x2
--	CAN_EFF_FLAG                     = 0x80000000
--	CAN_EFF_ID_BITS                  = 0x1d
--	CAN_EFF_MASK                     = 0x1fffffff
--	CAN_ERR_FLAG                     = 0x20000000
--	CAN_ERR_MASK                     = 0x1fffffff
--	CAN_INV_FILTER                   = 0x20000000
--	CAN_ISOTP                        = 0x6
--	CAN_MAX_DLC                      = 0x8
--	CAN_MAX_DLEN                     = 0x8
--	CAN_MCNET                        = 0x5
--	CAN_MTU                          = 0x10
--	CAN_NPROTO                       = 0x7
--	CAN_RAW                          = 0x1
--	CAN_RTR_FLAG                     = 0x40000000
--	CAN_SFF_ID_BITS                  = 0xb
--	CAN_SFF_MASK                     = 0x7ff
--	CAN_TP16                         = 0x3
--	CAN_TP20                         = 0x4
- 	CBAUD                            = 0x100f
- 	CBAUDEX                          = 0x1000
--	CFLUSH                           = 0xf
- 	CIBAUD                           = 0x100f0000
- 	CLOCAL                           = 0x800
--	CLOCK_BOOTTIME                   = 0x7
--	CLOCK_BOOTTIME_ALARM             = 0x9
--	CLOCK_DEFAULT                    = 0x0
--	CLOCK_EXT                        = 0x1
--	CLOCK_INT                        = 0x2
--	CLOCK_MONOTONIC                  = 0x1
--	CLOCK_MONOTONIC_COARSE           = 0x6
--	CLOCK_MONOTONIC_RAW              = 0x4
--	CLOCK_PROCESS_CPUTIME_ID         = 0x2
--	CLOCK_REALTIME                   = 0x0
--	CLOCK_REALTIME_ALARM             = 0x8
--	CLOCK_REALTIME_COARSE            = 0x5
--	CLOCK_TAI                        = 0xb
--	CLOCK_THREAD_CPUTIME_ID          = 0x3
--	CLOCK_TXFROMRX                   = 0x4
--	CLOCK_TXINT                      = 0x3
--	CLONE_CHILD_CLEARTID             = 0x200000
--	CLONE_CHILD_SETTID               = 0x1000000
--	CLONE_DETACHED                   = 0x400000
--	CLONE_FILES                      = 0x400
--	CLONE_FS                         = 0x200
--	CLONE_IO                         = 0x80000000
--	CLONE_NEWCGROUP                  = 0x2000000
--	CLONE_NEWIPC                     = 0x8000000
--	CLONE_NEWNET                     = 0x40000000
--	CLONE_NEWNS                      = 0x20000
--	CLONE_NEWPID                     = 0x20000000
--	CLONE_NEWUSER                    = 0x10000000
--	CLONE_NEWUTS                     = 0x4000000
--	CLONE_PARENT                     = 0x8000
--	CLONE_PARENT_SETTID              = 0x100000
--	CLONE_PTRACE                     = 0x2000
--	CLONE_SETTLS                     = 0x80000
--	CLONE_SIGHAND                    = 0x800
--	CLONE_SYSVSEM                    = 0x40000
--	CLONE_THREAD                     = 0x10000
--	CLONE_UNTRACED                   = 0x800000
--	CLONE_VFORK                      = 0x4000
--	CLONE_VM                         = 0x100
--	CMSPAR                           = 0x40000000
--	CR0                              = 0x0
- 	CR1                              = 0x200
- 	CR2                              = 0x400
- 	CR3                              = 0x600
- 	CRDLY                            = 0x600
- 	CREAD                            = 0x80
--	CRTSCTS                          = 0x80000000
--	CS5                              = 0x0
- 	CS6                              = 0x10
- 	CS7                              = 0x20
- 	CS8                              = 0x30
--	CSIGNAL                          = 0xff
- 	CSIZE                            = 0x30
--	CSTART                           = 0x11
--	CSTATUS                          = 0x0
--	CSTOP                            = 0x13
- 	CSTOPB                           = 0x40
--	CSUSP                            = 0x1a
--	DT_BLK                           = 0x6
--	DT_CHR                           = 0x2
--	DT_DIR                           = 0x4
--	DT_FIFO                          = 0x1
--	DT_LNK                           = 0xa
--	DT_REG                           = 0x8
--	DT_SOCK                          = 0xc
--	DT_UNKNOWN                       = 0x0
--	DT_WHT                           = 0xe
--	ECHO                             = 0x8
- 	ECHOCTL                          = 0x200
- 	ECHOE                            = 0x10
- 	ECHOK                            = 0x20
- 	ECHOKE                           = 0x800
- 	ECHONL                           = 0x40
- 	ECHOPRT                          = 0x400
-+	EFD_CLOEXEC                      = 0x400000
-+	EFD_NONBLOCK                     = 0x4000
- 	EMT_TAGOVF                       = 0x1
--	ENCODING_DEFAULT                 = 0x0
--	ENCODING_FM_MARK                 = 0x3
--	ENCODING_FM_SPACE                = 0x4
--	ENCODING_MANCHESTER              = 0x5
--	ENCODING_NRZ                     = 0x1
--	ENCODING_NRZI                    = 0x2
--	EPOLLERR                         = 0x8
--	EPOLLET                          = 0x80000000
--	EPOLLEXCLUSIVE                   = 0x10000000
--	EPOLLHUP                         = 0x10
--	EPOLLIN                          = 0x1
--	EPOLLMSG                         = 0x400
--	EPOLLONESHOT                     = 0x40000000
--	EPOLLOUT                         = 0x4
--	EPOLLPRI                         = 0x2
--	EPOLLRDBAND                      = 0x80
--	EPOLLRDHUP                       = 0x2000
--	EPOLLRDNORM                      = 0x40
--	EPOLLWAKEUP                      = 0x20000000
--	EPOLLWRBAND                      = 0x200
--	EPOLLWRNORM                      = 0x100
- 	EPOLL_CLOEXEC                    = 0x400000
--	EPOLL_CTL_ADD                    = 0x1
--	EPOLL_CTL_DEL                    = 0x2
--	EPOLL_CTL_MOD                    = 0x3
--	ETH_P_1588                       = 0x88f7
--	ETH_P_8021AD                     = 0x88a8
--	ETH_P_8021AH                     = 0x88e7
--	ETH_P_8021Q                      = 0x8100
--	ETH_P_80221                      = 0x8917
--	ETH_P_802_2                      = 0x4
--	ETH_P_802_3                      = 0x1
--	ETH_P_802_3_MIN                  = 0x600
--	ETH_P_802_EX1                    = 0x88b5
--	ETH_P_AARP                       = 0x80f3
--	ETH_P_AF_IUCV                    = 0xfbfb
--	ETH_P_ALL                        = 0x3
--	ETH_P_AOE                        = 0x88a2
--	ETH_P_ARCNET                     = 0x1a
--	ETH_P_ARP                        = 0x806
--	ETH_P_ATALK                      = 0x809b
--	ETH_P_ATMFATE                    = 0x8884
--	ETH_P_ATMMPOA                    = 0x884c
--	ETH_P_AX25                       = 0x2
--	ETH_P_BATMAN                     = 0x4305
--	ETH_P_BPQ                        = 0x8ff
--	ETH_P_CAIF                       = 0xf7
--	ETH_P_CAN                        = 0xc
--	ETH_P_CANFD                      = 0xd
--	ETH_P_CONTROL                    = 0x16
--	ETH_P_CUST                       = 0x6006
--	ETH_P_DDCMP                      = 0x6
--	ETH_P_DEC                        = 0x6000
--	ETH_P_DIAG                       = 0x6005
--	ETH_P_DNA_DL                     = 0x6001
--	ETH_P_DNA_RC                     = 0x6002
--	ETH_P_DNA_RT                     = 0x6003
--	ETH_P_DSA                        = 0x1b
--	ETH_P_ECONET                     = 0x18
--	ETH_P_EDSA                       = 0xdada
--	ETH_P_FCOE                       = 0x8906
--	ETH_P_FIP                        = 0x8914
--	ETH_P_HDLC                       = 0x19
--	ETH_P_HSR                        = 0x892f
--	ETH_P_IEEE802154                 = 0xf6
--	ETH_P_IEEEPUP                    = 0xa00
--	ETH_P_IEEEPUPAT                  = 0xa01
--	ETH_P_IP                         = 0x800
--	ETH_P_IPV6                       = 0x86dd
--	ETH_P_IPX                        = 0x8137
--	ETH_P_IRDA                       = 0x17
--	ETH_P_LAT                        = 0x6004
--	ETH_P_LINK_CTL                   = 0x886c
--	ETH_P_LOCALTALK                  = 0x9
--	ETH_P_LOOP                       = 0x60
--	ETH_P_LOOPBACK                   = 0x9000
--	ETH_P_MACSEC                     = 0x88e5
--	ETH_P_MOBITEX                    = 0x15
--	ETH_P_MPLS_MC                    = 0x8848
--	ETH_P_MPLS_UC                    = 0x8847
--	ETH_P_MVRP                       = 0x88f5
--	ETH_P_PAE                        = 0x888e
--	ETH_P_PAUSE                      = 0x8808
--	ETH_P_PHONET                     = 0xf5
--	ETH_P_PPPTALK                    = 0x10
--	ETH_P_PPP_DISC                   = 0x8863
--	ETH_P_PPP_MP                     = 0x8
--	ETH_P_PPP_SES                    = 0x8864
--	ETH_P_PRP                        = 0x88fb
--	ETH_P_PUP                        = 0x200
--	ETH_P_PUPAT                      = 0x201
--	ETH_P_QINQ1                      = 0x9100
--	ETH_P_QINQ2                      = 0x9200
--	ETH_P_QINQ3                      = 0x9300
--	ETH_P_RARP                       = 0x8035
--	ETH_P_SCA                        = 0x6007
--	ETH_P_SLOW                       = 0x8809
--	ETH_P_SNAP                       = 0x5
--	ETH_P_TDLS                       = 0x890d
--	ETH_P_TEB                        = 0x6558
--	ETH_P_TIPC                       = 0x88ca
--	ETH_P_TRAILER                    = 0x1c
--	ETH_P_TR_802_2                   = 0x11
--	ETH_P_TSN                        = 0x22f0
--	ETH_P_WAN_PPP                    = 0x7
--	ETH_P_WCCP                       = 0x883e
--	ETH_P_X25                        = 0x805
--	ETH_P_XDSA                       = 0xf8
--	EXTA                             = 0xe
--	EXTB                             = 0xf
- 	EXTPROC                          = 0x10000
--	FALLOC_FL_COLLAPSE_RANGE         = 0x8
--	FALLOC_FL_INSERT_RANGE           = 0x20
--	FALLOC_FL_KEEP_SIZE              = 0x1
--	FALLOC_FL_NO_HIDE_STALE          = 0x4
--	FALLOC_FL_PUNCH_HOLE             = 0x2
--	FALLOC_FL_ZERO_RANGE             = 0x10
--	FD_CLOEXEC                       = 0x1
--	FD_SETSIZE                       = 0x400
--	FF0                              = 0x0
- 	FF1                              = 0x8000
- 	FFDLY                            = 0x8000
--	FLUSHO                           = 0x2000
--	F_DUPFD                          = 0x0
--	F_DUPFD_CLOEXEC                  = 0x406
--	F_EXLCK                          = 0x4
--	F_GETFD                          = 0x1
--	F_GETFL                          = 0x3
--	F_GETLEASE                       = 0x401
-+	FLUSHO                           = 0x1000
-+	FS_IOC_ENABLE_VERITY             = 0x80806685
-+	FS_IOC_GETFLAGS                  = 0x40086601
-+	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
-+	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
-+	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
- 	F_GETLK                          = 0x7
- 	F_GETLK64                        = 0x7
- 	F_GETOWN                         = 0x5
--	F_GETOWN_EX                      = 0x10
--	F_GETPIPE_SZ                     = 0x408
--	F_GETSIG                         = 0xb
--	F_LOCK                           = 0x1
--	F_NOTIFY                         = 0x402
--	F_OFD_GETLK                      = 0x24
--	F_OFD_SETLK                      = 0x25
--	F_OFD_SETLKW                     = 0x26
--	F_OK                             = 0x0
- 	F_RDLCK                          = 0x1
--	F_SETFD                          = 0x2
--	F_SETFL                          = 0x4
--	F_SETLEASE                       = 0x400
- 	F_SETLK                          = 0x8
- 	F_SETLK64                        = 0x8
- 	F_SETLKW                         = 0x9
- 	F_SETLKW64                       = 0x9
- 	F_SETOWN                         = 0x6
--	F_SETOWN_EX                      = 0xf
--	F_SETPIPE_SZ                     = 0x407
--	F_SETSIG                         = 0xa
--	F_SHLCK                          = 0x8
--	F_TEST                           = 0x3
--	F_TLOCK                          = 0x2
--	F_ULOCK                          = 0x0
- 	F_UNLCK                          = 0x3
- 	F_WRLCK                          = 0x2
--	GRND_NONBLOCK                    = 0x1
--	GRND_RANDOM                      = 0x2
- 	HUPCL                            = 0x400
--	IBSHIFT                          = 0x10
- 	ICANON                           = 0x2
--	ICMPV6_FILTER                    = 0x1
--	ICRNL                            = 0x100
- 	IEXTEN                           = 0x8000
--	IFA_F_DADFAILED                  = 0x8
--	IFA_F_DEPRECATED                 = 0x20
--	IFA_F_HOMEADDRESS                = 0x10
--	IFA_F_MANAGETEMPADDR             = 0x100
--	IFA_F_MCAUTOJOIN                 = 0x400
--	IFA_F_NODAD                      = 0x2
--	IFA_F_NOPREFIXROUTE              = 0x200
--	IFA_F_OPTIMISTIC                 = 0x4
--	IFA_F_PERMANENT                  = 0x80
--	IFA_F_SECONDARY                  = 0x1
--	IFA_F_STABLE_PRIVACY             = 0x800
--	IFA_F_TEMPORARY                  = 0x1
--	IFA_F_TENTATIVE                  = 0x40
--	IFA_MAX                          = 0x8
--	IFF_ALLMULTI                     = 0x200
--	IFF_ATTACH_QUEUE                 = 0x200
--	IFF_AUTOMEDIA                    = 0x4000
--	IFF_BROADCAST                    = 0x2
--	IFF_DEBUG                        = 0x4
--	IFF_DETACH_QUEUE                 = 0x400
--	IFF_DORMANT                      = 0x20000
--	IFF_DYNAMIC                      = 0x8000
--	IFF_ECHO                         = 0x40000
--	IFF_LOOPBACK                     = 0x8
--	IFF_LOWER_UP                     = 0x10000
--	IFF_MASTER                       = 0x400
--	IFF_MULTICAST                    = 0x1000
--	IFF_MULTI_QUEUE                  = 0x100
--	IFF_NOARP                        = 0x80
--	IFF_NOFILTER                     = 0x1000
--	IFF_NOTRAILERS                   = 0x20
--	IFF_NO_PI                        = 0x1000
--	IFF_ONE_QUEUE                    = 0x2000
--	IFF_PERSIST                      = 0x800
--	IFF_POINTOPOINT                  = 0x10
--	IFF_PORTSEL                      = 0x2000
--	IFF_PROMISC                      = 0x100
--	IFF_RUNNING                      = 0x40
--	IFF_SLAVE                        = 0x800
--	IFF_TAP                          = 0x2
--	IFF_TUN                          = 0x1
--	IFF_TUN_EXCL                     = 0x8000
--	IFF_UP                           = 0x1
--	IFF_VNET_HDR                     = 0x4000
--	IFF_VOLATILE                     = 0x70c5a
--	IFNAMSIZ                         = 0x10
--	IGNBRK                           = 0x1
--	IGNCR                            = 0x80
--	IGNPAR                           = 0x4
--	IMAXBEL                          = 0x2000
--	INLCR                            = 0x40
--	INPCK                            = 0x10
--	IN_ACCESS                        = 0x1
--	IN_ALL_EVENTS                    = 0xfff
--	IN_ATTRIB                        = 0x4
--	IN_CLASSA_HOST                   = 0xffffff
--	IN_CLASSA_MAX                    = 0x80
--	IN_CLASSA_NET                    = 0xff000000
--	IN_CLASSA_NSHIFT                 = 0x18
--	IN_CLASSB_HOST                   = 0xffff
--	IN_CLASSB_MAX                    = 0x10000
--	IN_CLASSB_NET                    = 0xffff0000
--	IN_CLASSB_NSHIFT                 = 0x10
--	IN_CLASSC_HOST                   = 0xff
--	IN_CLASSC_NET                    = 0xffffff00
--	IN_CLASSC_NSHIFT                 = 0x8
- 	IN_CLOEXEC                       = 0x400000
--	IN_CLOSE                         = 0x18
--	IN_CLOSE_NOWRITE                 = 0x10
--	IN_CLOSE_WRITE                   = 0x8
--	IN_CREATE                        = 0x100
--	IN_DELETE                        = 0x200
--	IN_DELETE_SELF                   = 0x400
--	IN_DONT_FOLLOW                   = 0x2000000
--	IN_EXCL_UNLINK                   = 0x4000000
--	IN_IGNORED                       = 0x8000
--	IN_ISDIR                         = 0x40000000
--	IN_LOOPBACKNET                   = 0x7f
--	IN_MASK_ADD                      = 0x20000000
--	IN_MODIFY                        = 0x2
--	IN_MOVE                          = 0xc0
--	IN_MOVED_FROM                    = 0x40
--	IN_MOVED_TO                      = 0x80
--	IN_MOVE_SELF                     = 0x800
- 	IN_NONBLOCK                      = 0x4000
--	IN_ONESHOT                       = 0x80000000
--	IN_ONLYDIR                       = 0x1000000
--	IN_OPEN                          = 0x20
--	IN_Q_OVERFLOW                    = 0x4000
--	IN_UNMOUNT                       = 0x2000
--	IPPROTO_AH                       = 0x33
--	IPPROTO_BEETPH                   = 0x5e
--	IPPROTO_COMP                     = 0x6c
--	IPPROTO_DCCP                     = 0x21
--	IPPROTO_DSTOPTS                  = 0x3c
--	IPPROTO_EGP                      = 0x8
--	IPPROTO_ENCAP                    = 0x62
--	IPPROTO_ESP                      = 0x32
--	IPPROTO_FRAGMENT                 = 0x2c
--	IPPROTO_GRE                      = 0x2f
--	IPPROTO_HOPOPTS                  = 0x0
--	IPPROTO_ICMP                     = 0x1
--	IPPROTO_ICMPV6                   = 0x3a
--	IPPROTO_IDP                      = 0x16
--	IPPROTO_IGMP                     = 0x2
--	IPPROTO_IP                       = 0x0
--	IPPROTO_IPIP                     = 0x4
--	IPPROTO_IPV6                     = 0x29
--	IPPROTO_MH                       = 0x87
--	IPPROTO_MPLS                     = 0x89
--	IPPROTO_MTP                      = 0x5c
--	IPPROTO_NONE                     = 0x3b
--	IPPROTO_PIM                      = 0x67
--	IPPROTO_PUP                      = 0xc
--	IPPROTO_RAW                      = 0xff
--	IPPROTO_ROUTING                  = 0x2b
--	IPPROTO_RSVP                     = 0x2e
--	IPPROTO_SCTP                     = 0x84
--	IPPROTO_TCP                      = 0x6
--	IPPROTO_TP                       = 0x1d
--	IPPROTO_UDP                      = 0x11
--	IPPROTO_UDPLITE                  = 0x88
--	IPV6_2292DSTOPTS                 = 0x4
--	IPV6_2292HOPLIMIT                = 0x8
--	IPV6_2292HOPOPTS                 = 0x3
--	IPV6_2292PKTINFO                 = 0x2
--	IPV6_2292PKTOPTIONS              = 0x6
--	IPV6_2292RTHDR                   = 0x5
--	IPV6_ADDRFORM                    = 0x1
--	IPV6_ADD_MEMBERSHIP              = 0x14
--	IPV6_AUTHHDR                     = 0xa
--	IPV6_CHECKSUM                    = 0x7
--	IPV6_DONTFRAG                    = 0x3e
--	IPV6_DROP_MEMBERSHIP             = 0x15
--	IPV6_DSTOPTS                     = 0x3b
--	IPV6_HDRINCL                     = 0x24
--	IPV6_HOPLIMIT                    = 0x34
--	IPV6_HOPOPTS                     = 0x36
--	IPV6_IPSEC_POLICY                = 0x22
--	IPV6_JOIN_ANYCAST                = 0x1b
--	IPV6_JOIN_GROUP                  = 0x14
--	IPV6_LEAVE_ANYCAST               = 0x1c
--	IPV6_LEAVE_GROUP                 = 0x15
--	IPV6_MTU                         = 0x18
--	IPV6_MTU_DISCOVER                = 0x17
--	IPV6_MULTICAST_HOPS              = 0x12
--	IPV6_MULTICAST_IF                = 0x11
--	IPV6_MULTICAST_LOOP              = 0x13
--	IPV6_NEXTHOP                     = 0x9
--	IPV6_PATHMTU                     = 0x3d
--	IPV6_PKTINFO                     = 0x32
--	IPV6_PMTUDISC_DO                 = 0x2
--	IPV6_PMTUDISC_DONT               = 0x0
--	IPV6_PMTUDISC_INTERFACE          = 0x4
--	IPV6_PMTUDISC_OMIT               = 0x5
--	IPV6_PMTUDISC_PROBE              = 0x3
--	IPV6_PMTUDISC_WANT               = 0x1
--	IPV6_RECVDSTOPTS                 = 0x3a
--	IPV6_RECVERR                     = 0x19
--	IPV6_RECVHOPLIMIT                = 0x33
--	IPV6_RECVHOPOPTS                 = 0x35
--	IPV6_RECVPATHMTU                 = 0x3c
--	IPV6_RECVPKTINFO                 = 0x31
--	IPV6_RECVRTHDR                   = 0x38
--	IPV6_RECVTCLASS                  = 0x42
--	IPV6_ROUTER_ALERT                = 0x16
--	IPV6_RTHDR                       = 0x39
--	IPV6_RTHDRDSTOPTS                = 0x37
--	IPV6_RTHDR_LOOSE                 = 0x0
--	IPV6_RTHDR_STRICT                = 0x1
--	IPV6_RTHDR_TYPE_0                = 0x0
--	IPV6_RXDSTOPTS                   = 0x3b
--	IPV6_RXHOPOPTS                   = 0x36
--	IPV6_TCLASS                      = 0x43
--	IPV6_UNICAST_HOPS                = 0x10
--	IPV6_V6ONLY                      = 0x1a
--	IPV6_XFRM_POLICY                 = 0x23
--	IP_ADD_MEMBERSHIP                = 0x23
--	IP_ADD_SOURCE_MEMBERSHIP         = 0x27
--	IP_BIND_ADDRESS_NO_PORT          = 0x18
--	IP_BLOCK_SOURCE                  = 0x26
--	IP_CHECKSUM                      = 0x17
--	IP_DEFAULT_MULTICAST_LOOP        = 0x1
--	IP_DEFAULT_MULTICAST_TTL         = 0x1
--	IP_DF                            = 0x4000
--	IP_DROP_MEMBERSHIP               = 0x24
--	IP_DROP_SOURCE_MEMBERSHIP        = 0x28
--	IP_FREEBIND                      = 0xf
--	IP_HDRINCL                       = 0x3
--	IP_IPSEC_POLICY                  = 0x10
--	IP_MAXPACKET                     = 0xffff
--	IP_MAX_MEMBERSHIPS               = 0x14
--	IP_MF                            = 0x2000
--	IP_MINTTL                        = 0x15
--	IP_MSFILTER                      = 0x29
--	IP_MSS                           = 0x240
--	IP_MTU                           = 0xe
--	IP_MTU_DISCOVER                  = 0xa
--	IP_MULTICAST_ALL                 = 0x31
--	IP_MULTICAST_IF                  = 0x20
--	IP_MULTICAST_LOOP                = 0x22
--	IP_MULTICAST_TTL                 = 0x21
--	IP_NODEFRAG                      = 0x16
--	IP_OFFMASK                       = 0x1fff
--	IP_OPTIONS                       = 0x4
--	IP_ORIGDSTADDR                   = 0x14
--	IP_PASSSEC                       = 0x12
--	IP_PKTINFO                       = 0x8
--	IP_PKTOPTIONS                    = 0x9
--	IP_PMTUDISC                      = 0xa
--	IP_PMTUDISC_DO                   = 0x2
--	IP_PMTUDISC_DONT                 = 0x0
--	IP_PMTUDISC_INTERFACE            = 0x4
--	IP_PMTUDISC_OMIT                 = 0x5
--	IP_PMTUDISC_PROBE                = 0x3
--	IP_PMTUDISC_WANT                 = 0x1
--	IP_RECVERR                       = 0xb
--	IP_RECVOPTS                      = 0x6
--	IP_RECVORIGDSTADDR               = 0x14
--	IP_RECVRETOPTS                   = 0x7
--	IP_RECVTOS                       = 0xd
--	IP_RECVTTL                       = 0xc
--	IP_RETOPTS                       = 0x7
--	IP_RF                            = 0x8000
--	IP_ROUTER_ALERT                  = 0x5
--	IP_TOS                           = 0x1
--	IP_TRANSPARENT                   = 0x13
--	IP_TTL                           = 0x2
--	IP_UNBLOCK_SOURCE                = 0x25
--	IP_UNICAST_IF                    = 0x32
--	IP_XFRM_POLICY                   = 0x11
-+	IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
- 	ISIG                             = 0x1
--	ISTRIP                           = 0x20
- 	IUCLC                            = 0x200
--	IUTF8                            = 0x4000
--	IXANY                            = 0x800
- 	IXOFF                            = 0x1000
- 	IXON                             = 0x400
--	LINUX_REBOOT_CMD_CAD_OFF         = 0x0
--	LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
--	LINUX_REBOOT_CMD_HALT            = 0xcdef0123
--	LINUX_REBOOT_CMD_KEXEC           = 0x45584543
--	LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
--	LINUX_REBOOT_CMD_RESTART         = 0x1234567
--	LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
--	LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
--	LINUX_REBOOT_MAGIC1              = 0xfee1dead
--	LINUX_REBOOT_MAGIC2              = 0x28121969
--	LOCK_EX                          = 0x2
--	LOCK_NB                          = 0x4
--	LOCK_SH                          = 0x1
--	LOCK_UN                          = 0x8
--	MADV_DODUMP                      = 0x11
--	MADV_DOFORK                      = 0xb
--	MADV_DONTDUMP                    = 0x10
--	MADV_DONTFORK                    = 0xa
--	MADV_DONTNEED                    = 0x4
--	MADV_FREE                        = 0x8
--	MADV_HUGEPAGE                    = 0xe
--	MADV_HWPOISON                    = 0x64
--	MADV_MERGEABLE                   = 0xc
--	MADV_NOHUGEPAGE                  = 0xf
--	MADV_NORMAL                      = 0x0
--	MADV_RANDOM                      = 0x1
--	MADV_REMOVE                      = 0x9
--	MADV_SEQUENTIAL                  = 0x2
--	MADV_UNMERGEABLE                 = 0xd
--	MADV_WILLNEED                    = 0x3
- 	MAP_ANON                         = 0x20
- 	MAP_ANONYMOUS                    = 0x20
- 	MAP_DENYWRITE                    = 0x800
- 	MAP_EXECUTABLE                   = 0x1000
--	MAP_FILE                         = 0x0
--	MAP_FIXED                        = 0x10
- 	MAP_GROWSDOWN                    = 0x200
- 	MAP_HUGETLB                      = 0x40000
--	MAP_HUGE_MASK                    = 0x3f
--	MAP_HUGE_SHIFT                   = 0x1a
- 	MAP_LOCKED                       = 0x100
- 	MAP_NONBLOCK                     = 0x10000
- 	MAP_NORESERVE                    = 0x40
- 	MAP_POPULATE                     = 0x8000
--	MAP_PRIVATE                      = 0x2
- 	MAP_RENAME                       = 0x20
--	MAP_SHARED                       = 0x1
- 	MAP_STACK                        = 0x20000
--	MAP_TYPE                         = 0xf
-+	MAP_SYNC                         = 0x80000
- 	MCL_CURRENT                      = 0x2000
- 	MCL_FUTURE                       = 0x4000
- 	MCL_ONFAULT                      = 0x8000
--	MNT_DETACH                       = 0x2
--	MNT_EXPIRE                       = 0x4
--	MNT_FORCE                        = 0x1
--	MSG_BATCH                        = 0x40000
--	MSG_CMSG_CLOEXEC                 = 0x40000000
--	MSG_CONFIRM                      = 0x800
--	MSG_CTRUNC                       = 0x8
--	MSG_DONTROUTE                    = 0x4
--	MSG_DONTWAIT                     = 0x40
--	MSG_EOR                          = 0x80
--	MSG_ERRQUEUE                     = 0x2000
--	MSG_FASTOPEN                     = 0x20000000
--	MSG_FIN                          = 0x200
--	MSG_MORE                         = 0x8000
--	MSG_NOSIGNAL                     = 0x4000
--	MSG_OOB                          = 0x1
--	MSG_PEEK                         = 0x2
--	MSG_PROXY                        = 0x10
--	MSG_RST                          = 0x1000
--	MSG_SYN                          = 0x400
--	MSG_TRUNC                        = 0x20
--	MSG_TRYHARD                      = 0x4
--	MSG_WAITALL                      = 0x100
--	MSG_WAITFORONE                   = 0x10000
--	MS_ACTIVE                        = 0x40000000
--	MS_ASYNC                         = 0x1
--	MS_BIND                          = 0x1000
--	MS_DIRSYNC                       = 0x80
--	MS_INVALIDATE                    = 0x2
--	MS_I_VERSION                     = 0x800000
--	MS_KERNMOUNT                     = 0x400000
--	MS_LAZYTIME                      = 0x2000000
--	MS_MANDLOCK                      = 0x40
--	MS_MGC_MSK                       = 0xffff0000
--	MS_MGC_VAL                       = 0xc0ed0000
--	MS_MOVE                          = 0x2000
--	MS_NOATIME                       = 0x400
--	MS_NODEV                         = 0x4
--	MS_NODIRATIME                    = 0x800
--	MS_NOEXEC                        = 0x8
--	MS_NOSUID                        = 0x2
--	MS_NOUSER                        = -0x80000000
--	MS_POSIXACL                      = 0x10000
--	MS_PRIVATE                       = 0x40000
--	MS_RDONLY                        = 0x1
--	MS_REC                           = 0x4000
--	MS_RELATIME                      = 0x200000
--	MS_REMOUNT                       = 0x20
--	MS_RMT_MASK                      = 0x2800051
--	MS_SHARED                        = 0x100000
--	MS_SILENT                        = 0x8000
--	MS_SLAVE                         = 0x80000
--	MS_STRICTATIME                   = 0x1000000
--	MS_SYNC                          = 0x4
--	MS_SYNCHRONOUS                   = 0x10
--	MS_UNBINDABLE                    = 0x20000
--	NAME_MAX                         = 0xff
--	NETLINK_ADD_MEMBERSHIP           = 0x1
--	NETLINK_AUDIT                    = 0x9
--	NETLINK_BROADCAST_ERROR          = 0x4
--	NETLINK_CAP_ACK                  = 0xa
--	NETLINK_CONNECTOR                = 0xb
--	NETLINK_CRYPTO                   = 0x15
--	NETLINK_DNRTMSG                  = 0xe
--	NETLINK_DROP_MEMBERSHIP          = 0x2
--	NETLINK_ECRYPTFS                 = 0x13
--	NETLINK_FIB_LOOKUP               = 0xa
--	NETLINK_FIREWALL                 = 0x3
--	NETLINK_GENERIC                  = 0x10
--	NETLINK_INET_DIAG                = 0x4
--	NETLINK_IP6_FW                   = 0xd
--	NETLINK_ISCSI                    = 0x8
--	NETLINK_KOBJECT_UEVENT           = 0xf
--	NETLINK_LISTEN_ALL_NSID          = 0x8
--	NETLINK_LIST_MEMBERSHIPS         = 0x9
--	NETLINK_NETFILTER                = 0xc
--	NETLINK_NFLOG                    = 0x5
--	NETLINK_NO_ENOBUFS               = 0x5
--	NETLINK_PKTINFO                  = 0x3
--	NETLINK_RDMA                     = 0x14
--	NETLINK_ROUTE                    = 0x0
--	NETLINK_RX_RING                  = 0x6
--	NETLINK_SCSITRANSPORT            = 0x12
--	NETLINK_SELINUX                  = 0x7
--	NETLINK_SOCK_DIAG                = 0x4
--	NETLINK_TX_RING                  = 0x7
--	NETLINK_UNUSED                   = 0x1
--	NETLINK_USERSOCK                 = 0x2
--	NETLINK_XFRM                     = 0x6
--	NL0                              = 0x0
--	NL1                              = 0x100
--	NLA_ALIGNTO                      = 0x4
--	NLA_F_NESTED                     = 0x8000
--	NLA_F_NET_BYTEORDER              = 0x4000
--	NLA_HDRLEN                       = 0x4
-+	NFDBITS                          = 0x40
- 	NLDLY                            = 0x100
--	NLMSG_ALIGNTO                    = 0x4
--	NLMSG_DONE                       = 0x3
--	NLMSG_ERROR                      = 0x2
--	NLMSG_HDRLEN                     = 0x10
--	NLMSG_MIN_TYPE                   = 0x10
--	NLMSG_NOOP                       = 0x1
--	NLMSG_OVERRUN                    = 0x4
--	NLM_F_ACK                        = 0x4
--	NLM_F_APPEND                     = 0x800
--	NLM_F_ATOMIC                     = 0x400
--	NLM_F_CREATE                     = 0x400
--	NLM_F_DUMP                       = 0x300
--	NLM_F_DUMP_FILTERED              = 0x20
--	NLM_F_DUMP_INTR                  = 0x10
--	NLM_F_ECHO                       = 0x8
--	NLM_F_EXCL                       = 0x200
--	NLM_F_MATCH                      = 0x200
--	NLM_F_MULTI                      = 0x2
--	NLM_F_REPLACE                    = 0x100
--	NLM_F_REQUEST                    = 0x1
--	NLM_F_ROOT                       = 0x100
- 	NOFLSH                           = 0x80
--	OCRNL                            = 0x8
--	OFDEL                            = 0x80
--	OFILL                            = 0x40
-+	NS_GET_NSTYPE                    = 0x2000b703
-+	NS_GET_OWNER_UID                 = 0x2000b704
-+	NS_GET_PARENT                    = 0x2000b702
-+	NS_GET_USERNS                    = 0x2000b701
- 	OLCUC                            = 0x2
- 	ONLCR                            = 0x4
--	ONLRET                           = 0x20
--	ONOCR                            = 0x10
--	OPOST                            = 0x1
--	O_ACCMODE                        = 0x3
- 	O_APPEND                         = 0x8
- 	O_ASYNC                          = 0x40
- 	O_CLOEXEC                        = 0x400000
-@@ -926,231 +143,67 @@ const (
- 	O_NOFOLLOW                       = 0x20000
- 	O_NONBLOCK                       = 0x4000
- 	O_PATH                           = 0x1000000
--	O_RDONLY                         = 0x0
--	O_RDWR                           = 0x2
- 	O_RSYNC                          = 0x802000
- 	O_SYNC                           = 0x802000
- 	O_TMPFILE                        = 0x2010000
- 	O_TRUNC                          = 0x400
--	O_WRONLY                         = 0x1
--	PACKET_ADD_MEMBERSHIP            = 0x1
--	PACKET_AUXDATA                   = 0x8
--	PACKET_BROADCAST                 = 0x1
--	PACKET_COPY_THRESH               = 0x7
--	PACKET_DROP_MEMBERSHIP           = 0x2
--	PACKET_FANOUT                    = 0x12
--	PACKET_FANOUT_CBPF               = 0x6
--	PACKET_FANOUT_CPU                = 0x2
--	PACKET_FANOUT_DATA               = 0x16
--	PACKET_FANOUT_EBPF               = 0x7
--	PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
--	PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
--	PACKET_FANOUT_HASH               = 0x0
--	PACKET_FANOUT_LB                 = 0x1
--	PACKET_FANOUT_QM                 = 0x5
--	PACKET_FANOUT_RND                = 0x4
--	PACKET_FANOUT_ROLLOVER           = 0x3
--	PACKET_FASTROUTE                 = 0x6
--	PACKET_HDRLEN                    = 0xb
--	PACKET_HOST                      = 0x0
--	PACKET_KERNEL                    = 0x7
--	PACKET_LOOPBACK                  = 0x5
--	PACKET_LOSS                      = 0xe
--	PACKET_MR_ALLMULTI               = 0x2
--	PACKET_MR_MULTICAST              = 0x0
--	PACKET_MR_PROMISC                = 0x1
--	PACKET_MR_UNICAST                = 0x3
--	PACKET_MULTICAST                 = 0x2
--	PACKET_ORIGDEV                   = 0x9
--	PACKET_OTHERHOST                 = 0x3
--	PACKET_OUTGOING                  = 0x4
--	PACKET_QDISC_BYPASS              = 0x14
--	PACKET_RECV_OUTPUT               = 0x3
--	PACKET_RESERVE                   = 0xc
--	PACKET_ROLLOVER_STATS            = 0x15
--	PACKET_RX_RING                   = 0x5
--	PACKET_STATISTICS                = 0x6
--	PACKET_TIMESTAMP                 = 0x11
--	PACKET_TX_HAS_OFF                = 0x13
--	PACKET_TX_RING                   = 0xd
--	PACKET_TX_TIMESTAMP              = 0x10
--	PACKET_USER                      = 0x6
--	PACKET_VERSION                   = 0xa
--	PACKET_VNET_HDR                  = 0xf
- 	PARENB                           = 0x100
--	PARITY_CRC16_PR0                 = 0x2
--	PARITY_CRC16_PR0_CCITT           = 0x4
--	PARITY_CRC16_PR1                 = 0x3
--	PARITY_CRC16_PR1_CCITT           = 0x5
--	PARITY_CRC32_PR0_CCITT           = 0x6
--	PARITY_CRC32_PR1_CCITT           = 0x7
--	PARITY_DEFAULT                   = 0x0
--	PARITY_NONE                      = 0x1
--	PARMRK                           = 0x8
- 	PARODD                           = 0x200
- 	PENDIN                           = 0x4000
--	PRIO_PGRP                        = 0x1
--	PRIO_PROCESS                     = 0x0
--	PRIO_USER                        = 0x2
--	PROT_EXEC                        = 0x4
--	PROT_GROWSDOWN                   = 0x1000000
--	PROT_GROWSUP                     = 0x2000000
--	PROT_NONE                        = 0x0
--	PROT_READ                        = 0x1
--	PROT_WRITE                       = 0x2
--	PR_CAPBSET_DROP                  = 0x18
--	PR_CAPBSET_READ                  = 0x17
--	PR_CAP_AMBIENT                   = 0x2f
--	PR_CAP_AMBIENT_CLEAR_ALL         = 0x4
--	PR_CAP_AMBIENT_IS_SET            = 0x1
--	PR_CAP_AMBIENT_LOWER             = 0x3
--	PR_CAP_AMBIENT_RAISE             = 0x2
--	PR_ENDIAN_BIG                    = 0x0
--	PR_ENDIAN_LITTLE                 = 0x1
--	PR_ENDIAN_PPC_LITTLE             = 0x2
--	PR_FPEMU_NOPRINT                 = 0x1
--	PR_FPEMU_SIGFPE                  = 0x2
--	PR_FP_EXC_ASYNC                  = 0x2
--	PR_FP_EXC_DISABLED               = 0x0
--	PR_FP_EXC_DIV                    = 0x10000
--	PR_FP_EXC_INV                    = 0x100000
--	PR_FP_EXC_NONRECOV               = 0x1
--	PR_FP_EXC_OVF                    = 0x20000
--	PR_FP_EXC_PRECISE                = 0x3
--	PR_FP_EXC_RES                    = 0x80000
--	PR_FP_EXC_SW_ENABLE              = 0x80
--	PR_FP_EXC_UND                    = 0x40000
--	PR_FP_MODE_FR                    = 0x1
--	PR_FP_MODE_FRE                   = 0x2
--	PR_GET_CHILD_SUBREAPER           = 0x25
--	PR_GET_DUMPABLE                  = 0x3
--	PR_GET_ENDIAN                    = 0x13
--	PR_GET_FPEMU                     = 0x9
--	PR_GET_FPEXC                     = 0xb
--	PR_GET_FP_MODE                   = 0x2e
--	PR_GET_KEEPCAPS                  = 0x7
--	PR_GET_NAME                      = 0x10
--	PR_GET_NO_NEW_PRIVS              = 0x27
--	PR_GET_PDEATHSIG                 = 0x2
--	PR_GET_SECCOMP                   = 0x15
--	PR_GET_SECUREBITS                = 0x1b
--	PR_GET_THP_DISABLE               = 0x2a
--	PR_GET_TID_ADDRESS               = 0x28
--	PR_GET_TIMERSLACK                = 0x1e
--	PR_GET_TIMING                    = 0xd
--	PR_GET_TSC                       = 0x19
--	PR_GET_UNALIGN                   = 0x5
--	PR_MCE_KILL                      = 0x21
--	PR_MCE_KILL_CLEAR                = 0x0
--	PR_MCE_KILL_DEFAULT              = 0x2
--	PR_MCE_KILL_EARLY                = 0x1
--	PR_MCE_KILL_GET                  = 0x22
--	PR_MCE_KILL_LATE                 = 0x0
--	PR_MCE_KILL_SET                  = 0x1
--	PR_MPX_DISABLE_MANAGEMENT        = 0x2c
--	PR_MPX_ENABLE_MANAGEMENT         = 0x2b
--	PR_SET_CHILD_SUBREAPER           = 0x24
--	PR_SET_DUMPABLE                  = 0x4
--	PR_SET_ENDIAN                    = 0x14
--	PR_SET_FPEMU                     = 0xa
--	PR_SET_FPEXC                     = 0xc
--	PR_SET_FP_MODE                   = 0x2d
--	PR_SET_KEEPCAPS                  = 0x8
--	PR_SET_MM                        = 0x23
--	PR_SET_MM_ARG_END                = 0x9
--	PR_SET_MM_ARG_START              = 0x8
--	PR_SET_MM_AUXV                   = 0xc
--	PR_SET_MM_BRK                    = 0x7
--	PR_SET_MM_END_CODE               = 0x2
--	PR_SET_MM_END_DATA               = 0x4
--	PR_SET_MM_ENV_END                = 0xb
--	PR_SET_MM_ENV_START              = 0xa
--	PR_SET_MM_EXE_FILE               = 0xd
--	PR_SET_MM_MAP                    = 0xe
--	PR_SET_MM_MAP_SIZE               = 0xf
--	PR_SET_MM_START_BRK              = 0x6
--	PR_SET_MM_START_CODE             = 0x1
--	PR_SET_MM_START_DATA             = 0x3
--	PR_SET_MM_START_STACK            = 0x5
--	PR_SET_NAME                      = 0xf
--	PR_SET_NO_NEW_PRIVS              = 0x26
--	PR_SET_PDEATHSIG                 = 0x1
--	PR_SET_PTRACER                   = 0x59616d61
--	PR_SET_PTRACER_ANY               = -0x1
--	PR_SET_SECCOMP                   = 0x16
--	PR_SET_SECUREBITS                = 0x1c
--	PR_SET_THP_DISABLE               = 0x29
--	PR_SET_TIMERSLACK                = 0x1d
--	PR_SET_TIMING                    = 0xe
--	PR_SET_TSC                       = 0x1a
--	PR_SET_UNALIGN                   = 0x6
--	PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
--	PR_TASK_PERF_EVENTS_ENABLE       = 0x20
--	PR_TIMING_STATISTICAL            = 0x0
--	PR_TIMING_TIMESTAMP              = 0x1
--	PR_TSC_ENABLE                    = 0x1
--	PR_TSC_SIGSEGV                   = 0x2
--	PR_UNALIGN_NOPRINT               = 0x1
--	PR_UNALIGN_SIGBUS                = 0x2
--	PTRACE_ATTACH                    = 0x10
--	PTRACE_CONT                      = 0x7
--	PTRACE_DETACH                    = 0x11
--	PTRACE_EVENT_CLONE               = 0x3
--	PTRACE_EVENT_EXEC                = 0x4
--	PTRACE_EVENT_EXIT                = 0x6
--	PTRACE_EVENT_FORK                = 0x1
--	PTRACE_EVENT_SECCOMP             = 0x7
--	PTRACE_EVENT_STOP                = 0x80
--	PTRACE_EVENT_VFORK               = 0x2
--	PTRACE_EVENT_VFORK_DONE          = 0x5
--	PTRACE_GETEVENTMSG               = 0x4201
-+	PERF_EVENT_IOC_DISABLE           = 0x20002401
-+	PERF_EVENT_IOC_ENABLE            = 0x20002400
-+	PERF_EVENT_IOC_ID                = 0x40082407
-+	PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+	PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
-+	PERF_EVENT_IOC_PERIOD            = 0x80082404
-+	PERF_EVENT_IOC_QUERY_BPF         = 0xc008240a
-+	PERF_EVENT_IOC_REFRESH           = 0x20002402
-+	PERF_EVENT_IOC_RESET             = 0x20002403
-+	PERF_EVENT_IOC_SET_BPF           = 0x80042408
-+	PERF_EVENT_IOC_SET_FILTER        = 0x80082406
-+	PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
-+	PPPIOCATTACH                     = 0x8004743d
-+	PPPIOCATTCHAN                    = 0x80047438
-+	PPPIOCCONNECT                    = 0x8004743a
-+	PPPIOCDETACH                     = 0x8004743c
-+	PPPIOCDISCONN                    = 0x20007439
-+	PPPIOCGASYNCMAP                  = 0x40047458
-+	PPPIOCGCHAN                      = 0x40047437
-+	PPPIOCGDEBUG                     = 0x40047441
-+	PPPIOCGFLAGS                     = 0x4004745a
-+	PPPIOCGIDLE                      = 0x4010743f
-+	PPPIOCGIDLE32                    = 0x4008743f
-+	PPPIOCGIDLE64                    = 0x4010743f
-+	PPPIOCGL2TPSTATS                 = 0x40487436
-+	PPPIOCGMRU                       = 0x40047453
-+	PPPIOCGRASYNCMAP                 = 0x40047455
-+	PPPIOCGUNIT                      = 0x40047456
-+	PPPIOCGXASYNCMAP                 = 0x40207450
-+	PPPIOCSACTIVE                    = 0x80107446
-+	PPPIOCSASYNCMAP                  = 0x80047457
-+	PPPIOCSCOMPRESS                  = 0x8010744d
-+	PPPIOCSDEBUG                     = 0x80047440
-+	PPPIOCSFLAGS                     = 0x80047459
-+	PPPIOCSMAXCID                    = 0x80047451
-+	PPPIOCSMRRU                      = 0x8004743b
-+	PPPIOCSMRU                       = 0x80047452
-+	PPPIOCSNPMODE                    = 0x8008744b
-+	PPPIOCSPASS                      = 0x80107447
-+	PPPIOCSRASYNCMAP                 = 0x80047454
-+	PPPIOCSXASYNCMAP                 = 0x8020744f
-+	PPPIOCXFERUNIT                   = 0x2000744e
-+	PR_SET_PTRACER_ANY               = 0xffffffffffffffff
- 	PTRACE_GETFPAREGS                = 0x14
- 	PTRACE_GETFPREGS                 = 0xe
- 	PTRACE_GETFPREGS64               = 0x19
--	PTRACE_GETREGS                   = 0xc
- 	PTRACE_GETREGS64                 = 0x16
--	PTRACE_GETREGSET                 = 0x4204
--	PTRACE_GETSIGINFO                = 0x4202
--	PTRACE_GETSIGMASK                = 0x420a
--	PTRACE_INTERRUPT                 = 0x4207
--	PTRACE_KILL                      = 0x8
--	PTRACE_LISTEN                    = 0x4208
--	PTRACE_O_EXITKILL                = 0x100000
--	PTRACE_O_MASK                    = 0x3000ff
--	PTRACE_O_SUSPEND_SECCOMP         = 0x200000
--	PTRACE_O_TRACECLONE              = 0x8
--	PTRACE_O_TRACEEXEC               = 0x10
--	PTRACE_O_TRACEEXIT               = 0x40
--	PTRACE_O_TRACEFORK               = 0x2
--	PTRACE_O_TRACESECCOMP            = 0x80
--	PTRACE_O_TRACESYSGOOD            = 0x1
--	PTRACE_O_TRACEVFORK              = 0x4
--	PTRACE_O_TRACEVFORKDONE          = 0x20
--	PTRACE_PEEKDATA                  = 0x2
--	PTRACE_PEEKSIGINFO               = 0x4209
--	PTRACE_PEEKSIGINFO_SHARED        = 0x1
--	PTRACE_PEEKTEXT                  = 0x1
--	PTRACE_PEEKUSR                   = 0x3
--	PTRACE_POKEDATA                  = 0x5
--	PTRACE_POKETEXT                  = 0x4
--	PTRACE_POKEUSR                   = 0x6
- 	PTRACE_READDATA                  = 0x10
- 	PTRACE_READTEXT                  = 0x12
--	PTRACE_SECCOMP_GET_FILTER        = 0x420c
--	PTRACE_SEIZE                     = 0x4206
- 	PTRACE_SETFPAREGS                = 0x15
- 	PTRACE_SETFPREGS                 = 0xf
- 	PTRACE_SETFPREGS64               = 0x1a
--	PTRACE_SETOPTIONS                = 0x4200
--	PTRACE_SETREGS                   = 0xd
- 	PTRACE_SETREGS64                 = 0x17
--	PTRACE_SETREGSET                 = 0x4205
--	PTRACE_SETSIGINFO                = 0x4203
--	PTRACE_SETSIGMASK                = 0x420b
--	PTRACE_SINGLESTEP                = 0x9
- 	PTRACE_SPARC_DETACH              = 0xb
--	PTRACE_SYSCALL                   = 0x18
--	PTRACE_TRACEME                   = 0x0
- 	PTRACE_WRITEDATA                 = 0x11
- 	PTRACE_WRITETEXT                 = 0x13
- 	PT_FP                            = 0x48
-@@ -1202,329 +255,98 @@ const (
- 	PT_WIM                           = 0x10
- 	PT_Y                             = 0xc
- 	RLIMIT_AS                        = 0x9
--	RLIMIT_CORE                      = 0x4
--	RLIMIT_CPU                       = 0x0
--	RLIMIT_DATA                      = 0x2
--	RLIMIT_FSIZE                     = 0x1
-+	RLIMIT_MEMLOCK                   = 0x8
- 	RLIMIT_NOFILE                    = 0x6
--	RLIMIT_STACK                     = 0x3
--	RLIM_INFINITY                    = -0x1
--	RTAX_ADVMSS                      = 0x8
--	RTAX_CC_ALGO                     = 0x10
--	RTAX_CWND                        = 0x7
--	RTAX_FEATURES                    = 0xc
--	RTAX_FEATURE_ALLFRAG             = 0x8
--	RTAX_FEATURE_ECN                 = 0x1
--	RTAX_FEATURE_MASK                = 0xf
--	RTAX_FEATURE_SACK                = 0x2
--	RTAX_FEATURE_TIMESTAMP           = 0x4
--	RTAX_HOPLIMIT                    = 0xa
--	RTAX_INITCWND                    = 0xb
--	RTAX_INITRWND                    = 0xe
--	RTAX_LOCK                        = 0x1
--	RTAX_MAX                         = 0x10
--	RTAX_MTU                         = 0x2
--	RTAX_QUICKACK                    = 0xf
--	RTAX_REORDERING                  = 0x9
--	RTAX_RTO_MIN                     = 0xd
--	RTAX_RTT                         = 0x4
--	RTAX_RTTVAR                      = 0x5
--	RTAX_SSTHRESH                    = 0x6
--	RTAX_UNSPEC                      = 0x0
--	RTAX_WINDOW                      = 0x3
--	RTA_ALIGNTO                      = 0x4
--	RTA_MAX                          = 0x18
--	RTCF_DIRECTSRC                   = 0x4000000
--	RTCF_DOREDIRECT                  = 0x1000000
--	RTCF_LOG                         = 0x2000000
--	RTCF_MASQ                        = 0x400000
--	RTCF_NAT                         = 0x800000
--	RTCF_VALVE                       = 0x200000
--	RTF_ADDRCLASSMASK                = 0xf8000000
--	RTF_ADDRCONF                     = 0x40000
--	RTF_ALLONLINK                    = 0x20000
--	RTF_BROADCAST                    = 0x10000000
--	RTF_CACHE                        = 0x1000000
--	RTF_DEFAULT                      = 0x10000
--	RTF_DYNAMIC                      = 0x10
--	RTF_FLOW                         = 0x2000000
--	RTF_GATEWAY                      = 0x2
--	RTF_HOST                         = 0x4
--	RTF_INTERFACE                    = 0x40000000
--	RTF_IRTT                         = 0x100
--	RTF_LINKRT                       = 0x100000
--	RTF_LOCAL                        = 0x80000000
--	RTF_MODIFIED                     = 0x20
--	RTF_MSS                          = 0x40
--	RTF_MTU                          = 0x40
--	RTF_MULTICAST                    = 0x20000000
--	RTF_NAT                          = 0x8000000
--	RTF_NOFORWARD                    = 0x1000
--	RTF_NONEXTHOP                    = 0x200000
--	RTF_NOPMTUDISC                   = 0x4000
--	RTF_POLICY                       = 0x4000000
--	RTF_REINSTATE                    = 0x8
--	RTF_REJECT                       = 0x200
--	RTF_STATIC                       = 0x400
--	RTF_THROW                        = 0x2000
--	RTF_UP                           = 0x1
--	RTF_WINDOW                       = 0x80
--	RTF_XRESOLVE                     = 0x800
--	RTM_BASE                         = 0x10
--	RTM_DELACTION                    = 0x31
--	RTM_DELADDR                      = 0x15
--	RTM_DELADDRLABEL                 = 0x49
--	RTM_DELLINK                      = 0x11
--	RTM_DELMDB                       = 0x55
--	RTM_DELNEIGH                     = 0x1d
--	RTM_DELNSID                      = 0x59
--	RTM_DELQDISC                     = 0x25
--	RTM_DELROUTE                     = 0x19
--	RTM_DELRULE                      = 0x21
--	RTM_DELTCLASS                    = 0x29
--	RTM_DELTFILTER                   = 0x2d
--	RTM_F_CLONED                     = 0x200
--	RTM_F_EQUALIZE                   = 0x400
--	RTM_F_LOOKUP_TABLE               = 0x1000
--	RTM_F_NOTIFY                     = 0x100
--	RTM_F_PREFIX                     = 0x800
--	RTM_GETACTION                    = 0x32
--	RTM_GETADDR                      = 0x16
--	RTM_GETADDRLABEL                 = 0x4a
--	RTM_GETANYCAST                   = 0x3e
--	RTM_GETDCB                       = 0x4e
--	RTM_GETLINK                      = 0x12
--	RTM_GETMDB                       = 0x56
--	RTM_GETMULTICAST                 = 0x3a
--	RTM_GETNEIGH                     = 0x1e
--	RTM_GETNEIGHTBL                  = 0x42
--	RTM_GETNETCONF                   = 0x52
--	RTM_GETNSID                      = 0x5a
--	RTM_GETQDISC                     = 0x26
--	RTM_GETROUTE                     = 0x1a
--	RTM_GETRULE                      = 0x22
--	RTM_GETSTATS                     = 0x5e
--	RTM_GETTCLASS                    = 0x2a
--	RTM_GETTFILTER                   = 0x2e
--	RTM_MAX                          = 0x5f
--	RTM_NEWACTION                    = 0x30
--	RTM_NEWADDR                      = 0x14
--	RTM_NEWADDRLABEL                 = 0x48
--	RTM_NEWLINK                      = 0x10
--	RTM_NEWMDB                       = 0x54
--	RTM_NEWNDUSEROPT                 = 0x44
--	RTM_NEWNEIGH                     = 0x1c
--	RTM_NEWNEIGHTBL                  = 0x40
--	RTM_NEWNETCONF                   = 0x50
--	RTM_NEWNSID                      = 0x58
--	RTM_NEWPREFIX                    = 0x34
--	RTM_NEWQDISC                     = 0x24
--	RTM_NEWROUTE                     = 0x18
--	RTM_NEWRULE                      = 0x20
--	RTM_NEWSTATS                     = 0x5c
--	RTM_NEWTCLASS                    = 0x28
--	RTM_NEWTFILTER                   = 0x2c
--	RTM_NR_FAMILIES                  = 0x14
--	RTM_NR_MSGTYPES                  = 0x50
--	RTM_SETDCB                       = 0x4f
--	RTM_SETLINK                      = 0x13
--	RTM_SETNEIGHTBL                  = 0x43
--	RTNH_ALIGNTO                     = 0x4
--	RTNH_COMPARE_MASK                = 0x11
--	RTNH_F_DEAD                      = 0x1
--	RTNH_F_LINKDOWN                  = 0x10
--	RTNH_F_OFFLOAD                   = 0x8
--	RTNH_F_ONLINK                    = 0x4
--	RTNH_F_PERVASIVE                 = 0x2
--	RTN_MAX                          = 0xb
--	RTPROT_BABEL                     = 0x2a
--	RTPROT_BIRD                      = 0xc
--	RTPROT_BOOT                      = 0x3
--	RTPROT_DHCP                      = 0x10
--	RTPROT_DNROUTED                  = 0xd
--	RTPROT_GATED                     = 0x8
--	RTPROT_KERNEL                    = 0x2
--	RTPROT_MROUTED                   = 0x11
--	RTPROT_MRT                       = 0xa
--	RTPROT_NTK                       = 0xf
--	RTPROT_RA                        = 0x9
--	RTPROT_REDIRECT                  = 0x1
--	RTPROT_STATIC                    = 0x4
--	RTPROT_UNSPEC                    = 0x0
--	RTPROT_XORP                      = 0xe
--	RTPROT_ZEBRA                     = 0xb
--	RT_CLASS_DEFAULT                 = 0xfd
--	RT_CLASS_LOCAL                   = 0xff
--	RT_CLASS_MAIN                    = 0xfe
--	RT_CLASS_MAX                     = 0xff
--	RT_CLASS_UNSPEC                  = 0x0
--	RUSAGE_CHILDREN                  = -0x1
--	RUSAGE_SELF                      = 0x0
--	RUSAGE_THREAD                    = 0x1
--	SCM_CREDENTIALS                  = 0x2
--	SCM_RIGHTS                       = 0x1
--	SCM_TIMESTAMP                    = 0x1d
-+	RLIMIT_NPROC                     = 0x7
-+	RLIMIT_RSS                       = 0x5
-+	RNDADDENTROPY                    = 0x80085203
-+	RNDADDTOENTCNT                   = 0x80045201
-+	RNDCLEARPOOL                     = 0x20005206
-+	RNDGETENTCNT                     = 0x40045200
-+	RNDGETPOOL                       = 0x40085202
-+	RNDRESEEDCRNG                    = 0x20005207
-+	RNDZAPENTCNT                     = 0x20005204
-+	RTC_AIE_OFF                      = 0x20007002
-+	RTC_AIE_ON                       = 0x20007001
-+	RTC_ALM_READ                     = 0x40247008
-+	RTC_ALM_SET                      = 0x80247007
-+	RTC_EPOCH_READ                   = 0x4008700d
-+	RTC_EPOCH_SET                    = 0x8008700e
-+	RTC_IRQP_READ                    = 0x4008700b
-+	RTC_IRQP_SET                     = 0x8008700c
-+	RTC_PIE_OFF                      = 0x20007006
-+	RTC_PIE_ON                       = 0x20007005
-+	RTC_PLL_GET                      = 0x40207011
-+	RTC_PLL_SET                      = 0x80207012
-+	RTC_RD_TIME                      = 0x40247009
-+	RTC_SET_TIME                     = 0x8024700a
-+	RTC_UIE_OFF                      = 0x20007004
-+	RTC_UIE_ON                       = 0x20007003
-+	RTC_VL_CLR                       = 0x20007014
-+	RTC_VL_READ                      = 0x40047013
-+	RTC_WIE_OFF                      = 0x20007010
-+	RTC_WIE_ON                       = 0x2000700f
-+	RTC_WKALM_RD                     = 0x40287010
-+	RTC_WKALM_SET                    = 0x8028700f
- 	SCM_TIMESTAMPING                 = 0x23
-+	SCM_TIMESTAMPING_OPT_STATS       = 0x38
-+	SCM_TIMESTAMPING_PKTINFO         = 0x3c
- 	SCM_TIMESTAMPNS                  = 0x21
-+	SCM_TXTIME                       = 0x3f
- 	SCM_WIFI_STATUS                  = 0x25
--	SHUT_RD                          = 0x0
--	SHUT_RDWR                        = 0x2
--	SHUT_WR                          = 0x1
--	SIOCADDDLCI                      = 0x8980
--	SIOCADDMULTI                     = 0x8931
--	SIOCADDRT                        = 0x890b
-+	SFD_CLOEXEC                      = 0x400000
-+	SFD_NONBLOCK                     = 0x4000
- 	SIOCATMARK                       = 0x8905
--	SIOCBONDCHANGEACTIVE             = 0x8995
--	SIOCBONDENSLAVE                  = 0x8990
--	SIOCBONDINFOQUERY                = 0x8994
--	SIOCBONDRELEASE                  = 0x8991
--	SIOCBONDSETHWADDR                = 0x8992
--	SIOCBONDSLAVEINFOQUERY           = 0x8993
--	SIOCBRADDBR                      = 0x89a0
--	SIOCBRADDIF                      = 0x89a2
--	SIOCBRDELBR                      = 0x89a1
--	SIOCBRDELIF                      = 0x89a3
--	SIOCDARP                         = 0x8953
--	SIOCDELDLCI                      = 0x8981
--	SIOCDELMULTI                     = 0x8932
--	SIOCDELRT                        = 0x890c
--	SIOCDEVPRIVATE                   = 0x89f0
--	SIOCDIFADDR                      = 0x8936
--	SIOCDRARP                        = 0x8960
--	SIOCETHTOOL                      = 0x8946
--	SIOCGARP                         = 0x8954
--	SIOCGHWTSTAMP                    = 0x89b1
--	SIOCGIFADDR                      = 0x8915
--	SIOCGIFBR                        = 0x8940
--	SIOCGIFBRDADDR                   = 0x8919
--	SIOCGIFCONF                      = 0x8912
--	SIOCGIFCOUNT                     = 0x8938
--	SIOCGIFDSTADDR                   = 0x8917
--	SIOCGIFENCAP                     = 0x8925
--	SIOCGIFFLAGS                     = 0x8913
--	SIOCGIFHWADDR                    = 0x8927
--	SIOCGIFINDEX                     = 0x8933
--	SIOCGIFMAP                       = 0x8970
--	SIOCGIFMEM                       = 0x891f
--	SIOCGIFMETRIC                    = 0x891d
--	SIOCGIFMTU                       = 0x8921
--	SIOCGIFNAME                      = 0x8910
--	SIOCGIFNETMASK                   = 0x891b
--	SIOCGIFPFLAGS                    = 0x8935
--	SIOCGIFSLAVE                     = 0x8929
--	SIOCGIFTXQLEN                    = 0x8942
--	SIOCGIFVLAN                      = 0x8982
--	SIOCGMIIPHY                      = 0x8947
--	SIOCGMIIREG                      = 0x8948
- 	SIOCGPGRP                        = 0x8904
--	SIOCGRARP                        = 0x8961
--	SIOCGSTAMP                       = 0x8906
--	SIOCGSTAMPNS                     = 0x8907
-+	SIOCGSTAMPNS_NEW                 = 0x40108907
-+	SIOCGSTAMP_NEW                   = 0x40108906
- 	SIOCINQ                          = 0x4004667f
- 	SIOCOUTQ                         = 0x40047473
--	SIOCOUTQNSD                      = 0x894b
--	SIOCPROTOPRIVATE                 = 0x89e0
--	SIOCRTMSG                        = 0x890d
--	SIOCSARP                         = 0x8955
--	SIOCSHWTSTAMP                    = 0x89b0
--	SIOCSIFADDR                      = 0x8916
--	SIOCSIFBR                        = 0x8941
--	SIOCSIFBRDADDR                   = 0x891a
--	SIOCSIFDSTADDR                   = 0x8918
--	SIOCSIFENCAP                     = 0x8926
--	SIOCSIFFLAGS                     = 0x8914
--	SIOCSIFHWADDR                    = 0x8924
--	SIOCSIFHWBROADCAST               = 0x8937
--	SIOCSIFLINK                      = 0x8911
--	SIOCSIFMAP                       = 0x8971
--	SIOCSIFMEM                       = 0x8920
--	SIOCSIFMETRIC                    = 0x891e
--	SIOCSIFMTU                       = 0x8922
--	SIOCSIFNAME                      = 0x8923
--	SIOCSIFNETMASK                   = 0x891c
--	SIOCSIFPFLAGS                    = 0x8934
--	SIOCSIFSLAVE                     = 0x8930
--	SIOCSIFTXQLEN                    = 0x8943
--	SIOCSIFVLAN                      = 0x8983
--	SIOCSMIIREG                      = 0x8949
- 	SIOCSPGRP                        = 0x8902
--	SIOCSRARP                        = 0x8962
--	SIOCWANDEV                       = 0x894a
- 	SOCK_CLOEXEC                     = 0x400000
--	SOCK_DCCP                        = 0x6
- 	SOCK_DGRAM                       = 0x2
- 	SOCK_NONBLOCK                    = 0x4000
--	SOCK_PACKET                      = 0xa
--	SOCK_RAW                         = 0x3
--	SOCK_RDM                         = 0x4
--	SOCK_SEQPACKET                   = 0x5
- 	SOCK_STREAM                      = 0x1
--	SOL_AAL                          = 0x109
--	SOL_ALG                          = 0x117
--	SOL_ATM                          = 0x108
--	SOL_CAIF                         = 0x116
--	SOL_DCCP                         = 0x10d
--	SOL_DECNET                       = 0x105
--	SOL_ICMPV6                       = 0x3a
--	SOL_IP                           = 0x0
--	SOL_IPV6                         = 0x29
--	SOL_IRDA                         = 0x10a
--	SOL_IUCV                         = 0x115
--	SOL_KCM                          = 0x119
--	SOL_LLC                          = 0x10c
--	SOL_NETBEUI                      = 0x10b
--	SOL_NETLINK                      = 0x10e
--	SOL_NFC                          = 0x118
--	SOL_PACKET                       = 0x107
--	SOL_PNPIPE                       = 0x113
--	SOL_PPPOL2TP                     = 0x111
--	SOL_RAW                          = 0xff
--	SOL_RDS                          = 0x114
--	SOL_RXRPC                        = 0x110
- 	SOL_SOCKET                       = 0xffff
--	SOL_TCP                          = 0x6
--	SOL_TIPC                         = 0x10f
--	SOL_X25                          = 0x106
--	SOMAXCONN                        = 0x80
- 	SO_ACCEPTCONN                    = 0x8000
- 	SO_ATTACH_BPF                    = 0x34
--	SO_ATTACH_FILTER                 = 0x1a
- 	SO_ATTACH_REUSEPORT_CBPF         = 0x35
- 	SO_ATTACH_REUSEPORT_EBPF         = 0x36
- 	SO_BINDTODEVICE                  = 0xd
-+	SO_BINDTOIFINDEX                 = 0x41
- 	SO_BPF_EXTENSIONS                = 0x32
- 	SO_BROADCAST                     = 0x20
- 	SO_BSDCOMPAT                     = 0x400
- 	SO_BUSY_POLL                     = 0x30
- 	SO_CNX_ADVICE                    = 0x37
--	SO_DEBUG                         = 0x1
--	SO_DETACH_BPF                    = 0x1b
--	SO_DETACH_FILTER                 = 0x1b
-+	SO_COOKIE                        = 0x3b
-+	SO_DETACH_REUSEPORT_BPF          = 0x47
- 	SO_DOMAIN                        = 0x1029
- 	SO_DONTROUTE                     = 0x10
- 	SO_ERROR                         = 0x1007
--	SO_GET_FILTER                    = 0x1a
- 	SO_INCOMING_CPU                  = 0x33
-+	SO_INCOMING_NAPI_ID              = 0x3a
- 	SO_KEEPALIVE                     = 0x8
- 	SO_LINGER                        = 0x80
- 	SO_LOCK_FILTER                   = 0x28
- 	SO_MARK                          = 0x22
- 	SO_MAX_PACING_RATE               = 0x31
-+	SO_MEMINFO                       = 0x39
- 	SO_NOFCS                         = 0x27
--	SO_NO_CHECK                      = 0xb
- 	SO_OOBINLINE                     = 0x100
- 	SO_PASSCRED                      = 0x2
- 	SO_PASSSEC                       = 0x1f
- 	SO_PEEK_OFF                      = 0x26
- 	SO_PEERCRED                      = 0x40
--	SO_PEERNAME                      = 0x1c
-+	SO_PEERGROUPS                    = 0x3d
- 	SO_PEERSEC                       = 0x1e
--	SO_PRIORITY                      = 0xc
- 	SO_PROTOCOL                      = 0x1028
- 	SO_RCVBUF                        = 0x1002
- 	SO_RCVBUFFORCE                   = 0x100b
- 	SO_RCVLOWAT                      = 0x800
- 	SO_RCVTIMEO                      = 0x2000
-+	SO_RCVTIMEO_NEW                  = 0x44
-+	SO_RCVTIMEO_OLD                  = 0x2000
- 	SO_REUSEADDR                     = 0x4
- 	SO_REUSEPORT                     = 0x200
- 	SO_RXQ_OVFL                      = 0x24
-@@ -1536,50 +358,19 @@ const (
- 	SO_SNDBUFFORCE                   = 0x100a
- 	SO_SNDLOWAT                      = 0x1000
- 	SO_SNDTIMEO                      = 0x4000
--	SO_TIMESTAMP                     = 0x1d
-+	SO_SNDTIMEO_NEW                  = 0x45
-+	SO_SNDTIMEO_OLD                  = 0x4000
- 	SO_TIMESTAMPING                  = 0x23
-+	SO_TIMESTAMPING_NEW              = 0x43
-+	SO_TIMESTAMPING_OLD              = 0x23
- 	SO_TIMESTAMPNS                   = 0x21
-+	SO_TIMESTAMPNS_NEW               = 0x42
-+	SO_TIMESTAMPNS_OLD               = 0x21
-+	SO_TIMESTAMP_NEW                 = 0x46
-+	SO_TXTIME                        = 0x3f
- 	SO_TYPE                          = 0x1008
--	SO_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
--	SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
--	SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
--	SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
--	SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
--	SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
--	SO_VM_SOCKETS_TRUSTED            = 0x5
- 	SO_WIFI_STATUS                   = 0x25
--	SPLICE_F_GIFT                    = 0x8
--	SPLICE_F_MORE                    = 0x4
--	SPLICE_F_MOVE                    = 0x1
--	SPLICE_F_NONBLOCK                = 0x2
--	S_BLKSIZE                        = 0x200
--	S_IEXEC                          = 0x40
--	S_IFBLK                          = 0x6000
--	S_IFCHR                          = 0x2000
--	S_IFDIR                          = 0x4000
--	S_IFIFO                          = 0x1000
--	S_IFLNK                          = 0xa000
--	S_IFMT                           = 0xf000
--	S_IFREG                          = 0x8000
--	S_IFSOCK                         = 0xc000
--	S_IREAD                          = 0x100
--	S_IRGRP                          = 0x20
--	S_IROTH                          = 0x4
--	S_IRUSR                          = 0x100
--	S_IRWXG                          = 0x38
--	S_IRWXO                          = 0x7
--	S_IRWXU                          = 0x1c0
--	S_ISGID                          = 0x400
--	S_ISUID                          = 0x800
--	S_ISVTX                          = 0x200
--	S_IWGRP                          = 0x10
--	S_IWOTH                          = 0x2
--	S_IWRITE                         = 0x80
--	S_IWUSR                          = 0x80
--	S_IXGRP                          = 0x8
--	S_IXOTH                          = 0x1
--	S_IXUSR                          = 0x40
--	TAB0                             = 0x0
-+	SO_ZEROCOPY                      = 0x3e
- 	TAB1                             = 0x800
- 	TAB2                             = 0x1000
- 	TAB3                             = 0x1800
-@@ -1588,54 +379,6 @@ const (
- 	TCGETA                           = 0x40125401
- 	TCGETS                           = 0x40245408
- 	TCGETS2                          = 0x402c540c
--	TCIFLUSH                         = 0x0
--	TCIOFF                           = 0x2
--	TCIOFLUSH                        = 0x2
--	TCION                            = 0x3
--	TCOFLUSH                         = 0x1
--	TCOOFF                           = 0x0
--	TCOON                            = 0x1
--	TCP_CC_INFO                      = 0x1a
--	TCP_CONGESTION                   = 0xd
--	TCP_COOKIE_IN_ALWAYS             = 0x1
--	TCP_COOKIE_MAX                   = 0x10
--	TCP_COOKIE_MIN                   = 0x8
--	TCP_COOKIE_OUT_NEVER             = 0x2
--	TCP_COOKIE_PAIR_SIZE             = 0x20
--	TCP_COOKIE_TRANSACTIONS          = 0xf
--	TCP_CORK                         = 0x3
--	TCP_DEFER_ACCEPT                 = 0x9
--	TCP_FASTOPEN                     = 0x17
--	TCP_INFO                         = 0xb
--	TCP_KEEPCNT                      = 0x6
--	TCP_KEEPIDLE                     = 0x4
--	TCP_KEEPINTVL                    = 0x5
--	TCP_LINGER2                      = 0x8
--	TCP_MAXSEG                       = 0x2
--	TCP_MAXWIN                       = 0xffff
--	TCP_MAX_WINSHIFT                 = 0xe
--	TCP_MD5SIG                       = 0xe
--	TCP_MD5SIG_MAXKEYLEN             = 0x50
--	TCP_MSS                          = 0x200
--	TCP_MSS_DEFAULT                  = 0x218
--	TCP_MSS_DESIRED                  = 0x4c4
--	TCP_NODELAY                      = 0x1
--	TCP_NOTSENT_LOWAT                = 0x19
--	TCP_QUEUE_SEQ                    = 0x15
--	TCP_QUICKACK                     = 0xc
--	TCP_REPAIR                       = 0x13
--	TCP_REPAIR_OPTIONS               = 0x16
--	TCP_REPAIR_QUEUE                 = 0x14
--	TCP_SAVED_SYN                    = 0x1c
--	TCP_SAVE_SYN                     = 0x1b
--	TCP_SYNCNT                       = 0x7
--	TCP_S_DATA_IN                    = 0x4
--	TCP_S_DATA_OUT                   = 0x8
--	TCP_THIN_DUPACK                  = 0x11
--	TCP_THIN_LINEAR_TIMEOUTS         = 0x10
--	TCP_TIMESTAMP                    = 0x18
--	TCP_USER_TIMEOUT                 = 0x12
--	TCP_WINDOW_CLAMP                 = 0xa
- 	TCSAFLUSH                        = 0x2
- 	TCSBRK                           = 0x20005405
- 	TCSBRKP                          = 0x5425
-@@ -1656,11 +399,13 @@ const (
- 	TIOCGETD                         = 0x40047400
- 	TIOCGEXCL                        = 0x40045440
- 	TIOCGICOUNT                      = 0x545d
-+	TIOCGISO7816                     = 0x40285443
- 	TIOCGLCKTRMIOS                   = 0x5456
- 	TIOCGPGRP                        = 0x40047483
- 	TIOCGPKT                         = 0x40045438
- 	TIOCGPTLCK                       = 0x40045439
- 	TIOCGPTN                         = 0x40047486
-+	TIOCGPTPEER                      = 0x20007489
- 	TIOCGRS485                       = 0x40205441
- 	TIOCGSERIAL                      = 0x541e
- 	TIOCGSID                         = 0x40047485
-@@ -1677,28 +422,14 @@ const (
- 	TIOCM_CD                         = 0x40
- 	TIOCM_CTS                        = 0x20
- 	TIOCM_DSR                        = 0x100
--	TIOCM_DTR                        = 0x2
--	TIOCM_LE                         = 0x1
--	TIOCM_LOOP                       = 0x8000
--	TIOCM_OUT1                       = 0x2000
--	TIOCM_OUT2                       = 0x4000
- 	TIOCM_RI                         = 0x80
- 	TIOCM_RNG                        = 0x80
--	TIOCM_RTS                        = 0x4
- 	TIOCM_SR                         = 0x10
- 	TIOCM_ST                         = 0x8
- 	TIOCNOTTY                        = 0x20007471
- 	TIOCNXCL                         = 0x2000740e
- 	TIOCOUTQ                         = 0x40047473
- 	TIOCPKT                          = 0x80047470
--	TIOCPKT_DATA                     = 0x0
--	TIOCPKT_DOSTOP                   = 0x20
--	TIOCPKT_FLUSHREAD                = 0x1
--	TIOCPKT_FLUSHWRITE               = 0x2
--	TIOCPKT_IOCTL                    = 0x40
--	TIOCPKT_NOSTOP                   = 0x10
--	TIOCPKT_START                    = 0x8
--	TIOCPKT_STOP                     = 0x4
- 	TIOCSBRK                         = 0x2000747b
- 	TIOCSCTTY                        = 0x20007484
- 	TIOCSERCONFIG                    = 0x5453
-@@ -1708,9 +439,9 @@ const (
- 	TIOCSERGWILD                     = 0x5454
- 	TIOCSERSETMULTI                  = 0x545b
- 	TIOCSERSWILD                     = 0x5455
--	TIOCSER_TEMT                     = 0x1
- 	TIOCSETD                         = 0x80047401
- 	TIOCSIG                          = 0x80047488
-+	TIOCSISO7816                     = 0xc0285444
- 	TIOCSLCKTRMIOS                   = 0x5457
- 	TIOCSPGRP                        = 0x80047482
- 	TIOCSPTLCK                       = 0x80047487
-@@ -1725,6 +456,7 @@ const (
- 	TOSTOP                           = 0x100
- 	TUNATTACHFILTER                  = 0x801054d5
- 	TUNDETACHFILTER                  = 0x801054d6
-+	TUNGETDEVNETNS                   = 0x200054e3
- 	TUNGETFEATURES                   = 0x400454cf
- 	TUNGETFILTER                     = 0x401054db
- 	TUNGETIFF                        = 0x400454d2
-@@ -1732,7 +464,9 @@ const (
- 	TUNGETVNETBE                     = 0x400454df
- 	TUNGETVNETHDRSZ                  = 0x400454d7
- 	TUNGETVNETLE                     = 0x400454dd
-+	TUNSETCARRIER                    = 0x800454e2
- 	TUNSETDEBUG                      = 0x800454c9
-+	TUNSETFILTEREBPF                 = 0x400454e1
- 	TUNSETGROUP                      = 0x800454ce
- 	TUNSETIFF                        = 0x800454ca
- 	TUNSETIFINDEX                    = 0x800454da
-@@ -1743,47 +477,52 @@ const (
- 	TUNSETPERSIST                    = 0x800454cb
- 	TUNSETQUEUE                      = 0x800454d9
- 	TUNSETSNDBUF                     = 0x800454d4
-+	TUNSETSTEERINGEBPF               = 0x400454e0
- 	TUNSETTXFILTER                   = 0x800454d1
- 	TUNSETVNETBE                     = 0x800454de
- 	TUNSETVNETHDRSZ                  = 0x800454d8
- 	TUNSETVNETLE                     = 0x800454dc
-+	UBI_IOCATT                       = 0x80186f40
-+	UBI_IOCDET                       = 0x80046f41
-+	UBI_IOCEBCH                      = 0x80044f02
-+	UBI_IOCEBER                      = 0x80044f01
-+	UBI_IOCEBISMAP                   = 0x40044f05
-+	UBI_IOCEBMAP                     = 0x80084f03
-+	UBI_IOCEBUNMAP                   = 0x80044f04
-+	UBI_IOCMKVOL                     = 0x80986f00
-+	UBI_IOCRMVOL                     = 0x80046f01
-+	UBI_IOCRNVOL                     = 0x91106f03
-+	UBI_IOCRPEB                      = 0x80046f04
-+	UBI_IOCRSVOL                     = 0x800c6f02
-+	UBI_IOCSETVOLPROP                = 0x80104f06
-+	UBI_IOCSPEB                      = 0x80046f05
-+	UBI_IOCVOLCRBLK                  = 0x80804f07
-+	UBI_IOCVOLRMBLK                  = 0x20004f08
-+	UBI_IOCVOLUP                     = 0x80084f00
- 	VDISCARD                         = 0xd
--	VDSUSP                           = 0xb
- 	VEOF                             = 0x4
--	VEOL                             = 0x5
--	VEOL2                            = 0x6
--	VERASE                           = 0x2
--	VINTR                            = 0x0
--	VKILL                            = 0x3
--	VLNEXT                           = 0xf
--	VMADDR_CID_ANY                   = 0xffffffff
--	VMADDR_CID_HOST                  = 0x2
--	VMADDR_CID_HYPERVISOR            = 0x0
--	VMADDR_CID_RESERVED              = 0x1
--	VMADDR_PORT_ANY                  = 0xffffffff
--	VMIN                             = 0x4
--	VQUIT                            = 0x1
-+	VEOL                             = 0xb
-+	VEOL2                            = 0x10
-+	VMIN                             = 0x6
- 	VREPRINT                         = 0xc
- 	VSTART                           = 0x8
- 	VSTOP                            = 0x9
- 	VSUSP                            = 0xa
- 	VSWTC                            = 0x7
--	VT0                              = 0x0
- 	VT1                              = 0x4000
- 	VTDLY                            = 0x4000
- 	VTIME                            = 0x5
- 	VWERASE                          = 0xe
--	WALL                             = 0x40000000
--	WCLONE                           = 0x80000000
--	WCONTINUED                       = 0x8
--	WEXITED                          = 0x4
--	WNOHANG                          = 0x1
--	WNOTHREAD                        = 0x20000000
--	WNOWAIT                          = 0x1000000
-+	WDIOC_GETBOOTSTATUS              = 0x40045702
-+	WDIOC_GETPRETIMEOUT              = 0x40045709
-+	WDIOC_GETSTATUS                  = 0x40045701
-+	WDIOC_GETSUPPORT                 = 0x40285700
-+	WDIOC_GETTEMP                    = 0x40045703
-+	WDIOC_GETTIMELEFT                = 0x4004570a
-+	WDIOC_GETTIMEOUT                 = 0x40045707
-+	WDIOC_KEEPALIVE                  = 0x40045705
-+	WDIOC_SETOPTIONS                 = 0x40045704
- 	WORDSIZE                         = 0x40
--	WRAP                             = 0x20000
--	WSTOPPED                         = 0x2
--	WUNTRACED                        = 0x2
- 	XCASE                            = 0x4
- 	XTABS                            = 0x1800
- 	__TIOCFLUSH                      = 0x80047410
-@@ -1791,25 +530,19 @@ const (
- 
- // Errors
- const (
--	E2BIG           = syscall.Errno(0x7)
--	EACCES          = syscall.Errno(0xd)
- 	EADDRINUSE      = syscall.Errno(0x30)
- 	EADDRNOTAVAIL   = syscall.Errno(0x31)
- 	EADV            = syscall.Errno(0x53)
- 	EAFNOSUPPORT    = syscall.Errno(0x2f)
--	EAGAIN          = syscall.Errno(0xb)
- 	EALREADY        = syscall.Errno(0x25)
- 	EBADE           = syscall.Errno(0x66)
--	EBADF           = syscall.Errno(0x9)
- 	EBADFD          = syscall.Errno(0x5d)
- 	EBADMSG         = syscall.Errno(0x4c)
- 	EBADR           = syscall.Errno(0x67)
- 	EBADRQC         = syscall.Errno(0x6a)
- 	EBADSLT         = syscall.Errno(0x6b)
- 	EBFONT          = syscall.Errno(0x6d)
--	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x7f)
--	ECHILD          = syscall.Errno(0xa)
- 	ECHRNG          = syscall.Errno(0x5e)
- 	ECOMM           = syscall.Errno(0x55)
- 	ECONNABORTED    = syscall.Errno(0x35)
-@@ -1818,23 +551,15 @@ const (
- 	EDEADLK         = syscall.Errno(0x4e)
- 	EDEADLOCK       = syscall.Errno(0x6c)
- 	EDESTADDRREQ    = syscall.Errno(0x27)
--	EDOM            = syscall.Errno(0x21)
- 	EDOTDOT         = syscall.Errno(0x58)
- 	EDQUOT          = syscall.Errno(0x45)
--	EEXIST          = syscall.Errno(0x11)
--	EFAULT          = syscall.Errno(0xe)
--	EFBIG           = syscall.Errno(0x1b)
- 	EHOSTDOWN       = syscall.Errno(0x40)
- 	EHOSTUNREACH    = syscall.Errno(0x41)
- 	EHWPOISON       = syscall.Errno(0x87)
- 	EIDRM           = syscall.Errno(0x4d)
- 	EILSEQ          = syscall.Errno(0x7a)
- 	EINPROGRESS     = syscall.Errno(0x24)
--	EINTR           = syscall.Errno(0x4)
--	EINVAL          = syscall.Errno(0x16)
--	EIO             = syscall.Errno(0x5)
- 	EISCONN         = syscall.Errno(0x38)
--	EISDIR          = syscall.Errno(0x15)
- 	EISNAM          = syscall.Errno(0x78)
- 	EKEYEXPIRED     = syscall.Errno(0x81)
- 	EKEYREJECTED    = syscall.Errno(0x83)
-@@ -1851,8 +576,6 @@ const (
- 	ELNRNG          = syscall.Errno(0x62)
- 	ELOOP           = syscall.Errno(0x3e)
- 	EMEDIUMTYPE     = syscall.Errno(0x7e)
--	EMFILE          = syscall.Errno(0x18)
--	EMLINK          = syscall.Errno(0x1f)
- 	EMSGSIZE        = syscall.Errno(0x28)
- 	EMULTIHOP       = syscall.Errno(0x57)
- 	ENAMETOOLONG    = syscall.Errno(0x3f)
-@@ -1860,102 +583,70 @@ const (
- 	ENETDOWN        = syscall.Errno(0x32)
- 	ENETRESET       = syscall.Errno(0x34)
- 	ENETUNREACH     = syscall.Errno(0x33)
--	ENFILE          = syscall.Errno(0x17)
- 	ENOANO          = syscall.Errno(0x69)
- 	ENOBUFS         = syscall.Errno(0x37)
- 	ENOCSI          = syscall.Errno(0x64)
- 	ENODATA         = syscall.Errno(0x6f)
--	ENODEV          = syscall.Errno(0x13)
--	ENOENT          = syscall.Errno(0x2)
--	ENOEXEC         = syscall.Errno(0x8)
- 	ENOKEY          = syscall.Errno(0x80)
- 	ENOLCK          = syscall.Errno(0x4f)
- 	ENOLINK         = syscall.Errno(0x52)
- 	ENOMEDIUM       = syscall.Errno(0x7d)
--	ENOMEM          = syscall.Errno(0xc)
- 	ENOMSG          = syscall.Errno(0x4b)
- 	ENONET          = syscall.Errno(0x50)
- 	ENOPKG          = syscall.Errno(0x71)
- 	ENOPROTOOPT     = syscall.Errno(0x2a)
--	ENOSPC          = syscall.Errno(0x1c)
- 	ENOSR           = syscall.Errno(0x4a)
- 	ENOSTR          = syscall.Errno(0x48)
- 	ENOSYS          = syscall.Errno(0x5a)
--	ENOTBLK         = syscall.Errno(0xf)
- 	ENOTCONN        = syscall.Errno(0x39)
--	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x42)
- 	ENOTNAM         = syscall.Errno(0x76)
- 	ENOTRECOVERABLE = syscall.Errno(0x85)
- 	ENOTSOCK        = syscall.Errno(0x26)
- 	ENOTSUP         = syscall.Errno(0x2d)
--	ENOTTY          = syscall.Errno(0x19)
- 	ENOTUNIQ        = syscall.Errno(0x73)
--	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x2d)
- 	EOVERFLOW       = syscall.Errno(0x5c)
- 	EOWNERDEAD      = syscall.Errno(0x84)
--	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x2e)
--	EPIPE           = syscall.Errno(0x20)
- 	EPROCLIM        = syscall.Errno(0x43)
- 	EPROTO          = syscall.Errno(0x56)
- 	EPROTONOSUPPORT = syscall.Errno(0x2b)
- 	EPROTOTYPE      = syscall.Errno(0x29)
--	ERANGE          = syscall.Errno(0x22)
- 	EREMCHG         = syscall.Errno(0x59)
- 	EREMOTE         = syscall.Errno(0x47)
- 	EREMOTEIO       = syscall.Errno(0x79)
- 	ERESTART        = syscall.Errno(0x74)
- 	ERFKILL         = syscall.Errno(0x86)
--	EROFS           = syscall.Errno(0x1e)
- 	ERREMOTE        = syscall.Errno(0x51)
- 	ESHUTDOWN       = syscall.Errno(0x3a)
- 	ESOCKTNOSUPPORT = syscall.Errno(0x2c)
--	ESPIPE          = syscall.Errno(0x1d)
--	ESRCH           = syscall.Errno(0x3)
- 	ESRMNT          = syscall.Errno(0x54)
- 	ESTALE          = syscall.Errno(0x46)
- 	ESTRPIPE        = syscall.Errno(0x5b)
- 	ETIME           = syscall.Errno(0x49)
- 	ETIMEDOUT       = syscall.Errno(0x3c)
- 	ETOOMANYREFS    = syscall.Errno(0x3b)
--	ETXTBSY         = syscall.Errno(0x1a)
- 	EUCLEAN         = syscall.Errno(0x75)
- 	EUNATCH         = syscall.Errno(0x63)
- 	EUSERS          = syscall.Errno(0x44)
--	EWOULDBLOCK     = syscall.Errno(0xb)
--	EXDEV           = syscall.Errno(0x12)
- 	EXFULL          = syscall.Errno(0x68)
- )
- 
- // Signals
- const (
--	SIGABRT   = syscall.Signal(0x6)
--	SIGALRM   = syscall.Signal(0xe)
- 	SIGBUS    = syscall.Signal(0xa)
- 	SIGCHLD   = syscall.Signal(0x14)
- 	SIGCLD    = syscall.Signal(0x14)
- 	SIGCONT   = syscall.Signal(0x13)
- 	SIGEMT    = syscall.Signal(0x7)
--	SIGFPE    = syscall.Signal(0x8)
--	SIGHUP    = syscall.Signal(0x1)
--	SIGILL    = syscall.Signal(0x4)
--	SIGINT    = syscall.Signal(0x2)
- 	SIGIO     = syscall.Signal(0x17)
--	SIGIOT    = syscall.Signal(0x6)
--	SIGKILL   = syscall.Signal(0x9)
- 	SIGLOST   = syscall.Signal(0x1d)
--	SIGPIPE   = syscall.Signal(0xd)
- 	SIGPOLL   = syscall.Signal(0x17)
- 	SIGPROF   = syscall.Signal(0x1b)
- 	SIGPWR    = syscall.Signal(0x1d)
--	SIGQUIT   = syscall.Signal(0x3)
--	SIGSEGV   = syscall.Signal(0xb)
- 	SIGSTOP   = syscall.Signal(0x11)
- 	SIGSYS    = syscall.Signal(0xc)
--	SIGTERM   = syscall.Signal(0xf)
--	SIGTRAP   = syscall.Signal(0x5)
- 	SIGTSTP   = syscall.Signal(0x12)
- 	SIGTTIN   = syscall.Signal(0x15)
- 	SIGTTOU   = syscall.Signal(0x16)
-@@ -1969,174 +660,182 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "operation not permitted",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "input/output error",
--	6:   "no such device or address",
--	7:   "argument list too long",
--	8:   "exec format error",
--	9:   "bad file descriptor",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "cannot allocate memory",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device or resource busy",
--	17:  "file exists",
--	18:  "invalid cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "too many open files in system",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "numerical argument out of domain",
--	34:  "numerical result out of range",
--	36:  "operation now in progress",
--	37:  "operation already in progress",
--	38:  "socket operation on non-socket",
--	39:  "destination address required",
--	40:  "message too long",
--	41:  "protocol wrong type for socket",
--	42:  "protocol not available",
--	43:  "protocol not supported",
--	44:  "socket type not supported",
--	45:  "operation not supported",
--	46:  "protocol family not supported",
--	47:  "address family not supported by protocol",
--	48:  "address already in use",
--	49:  "cannot assign requested address",
--	50:  "network is down",
--	51:  "network is unreachable",
--	52:  "network dropped connection on reset",
--	53:  "software caused connection abort",
--	54:  "connection reset by peer",
--	55:  "no buffer space available",
--	56:  "transport endpoint is already connected",
--	57:  "transport endpoint is not connected",
--	58:  "cannot send after transport endpoint shutdown",
--	59:  "too many references: cannot splice",
--	60:  "connection timed out",
--	61:  "connection refused",
--	62:  "too many levels of symbolic links",
--	63:  "file name too long",
--	64:  "host is down",
--	65:  "no route to host",
--	66:  "directory not empty",
--	67:  "too many processes",
--	68:  "too many users",
--	69:  "disk quota exceeded",
--	70:  "stale file handle",
--	71:  "object is remote",
--	72:  "device not a stream",
--	73:  "timer expired",
--	74:  "out of streams resources",
--	75:  "no message of desired type",
--	76:  "bad message",
--	77:  "identifier removed",
--	78:  "resource deadlock avoided",
--	79:  "no locks available",
--	80:  "machine is not on the network",
--	81:  "unknown error 81",
--	82:  "link has been severed",
--	83:  "advertise error",
--	84:  "srmount error",
--	85:  "communication error on send",
--	86:  "protocol error",
--	87:  "multihop attempted",
--	88:  "RFS specific error",
--	89:  "remote address changed",
--	90:  "function not implemented",
--	91:  "streams pipe error",
--	92:  "value too large for defined data type",
--	93:  "file descriptor in bad state",
--	94:  "channel number out of range",
--	95:  "level 2 not synchronized",
--	96:  "level 3 halted",
--	97:  "level 3 reset",
--	98:  "link number out of range",
--	99:  "protocol driver not attached",
--	100: "no CSI structure available",
--	101: "level 2 halted",
--	102: "invalid exchange",
--	103: "invalid request descriptor",
--	104: "exchange full",
--	105: "no anode",
--	106: "invalid request code",
--	107: "invalid slot",
--	108: "file locking deadlock error",
--	109: "bad font file format",
--	110: "cannot exec a shared library directly",
--	111: "no data available",
--	112: "accessing a corrupted shared library",
--	113: "package not installed",
--	114: "can not access a needed shared library",
--	115: "name not unique on network",
--	116: "interrupted system call should be restarted",
--	117: "structure needs cleaning",
--	118: "not a XENIX named type file",
--	119: "no XENIX semaphores available",
--	120: "is a named type file",
--	121: "remote I/O error",
--	122: "invalid or incomplete multibyte or wide character",
--	123: "attempting to link in too many shared libraries",
--	124: ".lib section in a.out corrupted",
--	125: "no medium found",
--	126: "wrong medium type",
--	127: "operation canceled",
--	128: "required key not available",
--	129: "key has expired",
--	130: "key has been revoked",
--	131: "key was rejected by service",
--	132: "owner died",
--	133: "state not recoverable",
--	134: "operation not possible due to RF-kill",
--	135: "memory page has hardware error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device or resource busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "invalid cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "numerical result out of range"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "ENOTSUP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "transport endpoint is already connected"},
-+	{57, "ENOTCONN", "transport endpoint is not connected"},
-+	{58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{60, "ETIMEDOUT", "connection timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disk quota exceeded"},
-+	{70, "ESTALE", "stale file handle"},
-+	{71, "EREMOTE", "object is remote"},
-+	{72, "ENOSTR", "device not a stream"},
-+	{73, "ETIME", "timer expired"},
-+	{74, "ENOSR", "out of streams resources"},
-+	{75, "ENOMSG", "no message of desired type"},
-+	{76, "EBADMSG", "bad message"},
-+	{77, "EIDRM", "identifier removed"},
-+	{78, "EDEADLK", "resource deadlock avoided"},
-+	{79, "ENOLCK", "no locks available"},
-+	{80, "ENONET", "machine is not on the network"},
-+	{81, "ERREMOTE", "unknown error 81"},
-+	{82, "ENOLINK", "link has been severed"},
-+	{83, "EADV", "advertise error"},
-+	{84, "ESRMNT", "srmount error"},
-+	{85, "ECOMM", "communication error on send"},
-+	{86, "EPROTO", "protocol error"},
-+	{87, "EMULTIHOP", "multihop attempted"},
-+	{88, "EDOTDOT", "RFS specific error"},
-+	{89, "EREMCHG", "remote address changed"},
-+	{90, "ENOSYS", "function not implemented"},
-+	{91, "ESTRPIPE", "streams pipe error"},
-+	{92, "EOVERFLOW", "value too large for defined data type"},
-+	{93, "EBADFD", "file descriptor in bad state"},
-+	{94, "ECHRNG", "channel number out of range"},
-+	{95, "EL2NSYNC", "level 2 not synchronized"},
-+	{96, "EL3HLT", "level 3 halted"},
-+	{97, "EL3RST", "level 3 reset"},
-+	{98, "ELNRNG", "link number out of range"},
-+	{99, "EUNATCH", "protocol driver not attached"},
-+	{100, "ENOCSI", "no CSI structure available"},
-+	{101, "EL2HLT", "level 2 halted"},
-+	{102, "EBADE", "invalid exchange"},
-+	{103, "EBADR", "invalid request descriptor"},
-+	{104, "EXFULL", "exchange full"},
-+	{105, "ENOANO", "no anode"},
-+	{106, "EBADRQC", "invalid request code"},
-+	{107, "EBADSLT", "invalid slot"},
-+	{108, "EDEADLOCK", "file locking deadlock error"},
-+	{109, "EBFONT", "bad font file format"},
-+	{110, "ELIBEXEC", "cannot exec a shared library directly"},
-+	{111, "ENODATA", "no data available"},
-+	{112, "ELIBBAD", "accessing a corrupted shared library"},
-+	{113, "ENOPKG", "package not installed"},
-+	{114, "ELIBACC", "can not access a needed shared library"},
-+	{115, "ENOTUNIQ", "name not unique on network"},
-+	{116, "ERESTART", "interrupted system call should be restarted"},
-+	{117, "EUCLEAN", "structure needs cleaning"},
-+	{118, "ENOTNAM", "not a XENIX named type file"},
-+	{119, "ENAVAIL", "no XENIX semaphores available"},
-+	{120, "EISNAM", "is a named type file"},
-+	{121, "EREMOTEIO", "remote I/O error"},
-+	{122, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+	{123, "ELIBMAX", "attempting to link in too many shared libraries"},
-+	{124, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{125, "ENOMEDIUM", "no medium found"},
-+	{126, "EMEDIUMTYPE", "wrong medium type"},
-+	{127, "ECANCELED", "operation canceled"},
-+	{128, "ENOKEY", "required key not available"},
-+	{129, "EKEYEXPIRED", "key has expired"},
-+	{130, "EKEYREVOKED", "key has been revoked"},
-+	{131, "EKEYREJECTED", "key was rejected by service"},
-+	{132, "EOWNERDEAD", "owner died"},
-+	{133, "ENOTRECOVERABLE", "state not recoverable"},
-+	{134, "ERFKILL", "operation not possible due to RF-kill"},
-+	{135, "EHWPOISON", "memory page has hardware error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/breakpoint trap",
--	6:  "aborted",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "CPU time limit exceeded",
--	25: "file size limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window changed",
--	29: "resource lost",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/breakpoint trap"},
-+	{6, "SIGABRT", "aborted"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "CPU time limit exceeded"},
-+	{25, "SIGXFSZ", "file size limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window changed"},
-+	{29, "SIGLOST", "power failure"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-index b4338d5f..96b9b8ab 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m32
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,netbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
- 
- package unix
-@@ -159,6 +159,7 @@ const (
- 	CLONE_VFORK                       = 0x4000
- 	CLONE_VM                          = 0x100
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -169,6 +170,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	CTL_QUERY                         = -0x2
-@@ -547,6 +550,10 @@ const (
- 	EV_ONESHOT                        = 0x10
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
-+	EXTATTR_CMD_START                 = 0x1
-+	EXTATTR_CMD_STOP                  = 0x2
-+	EXTATTR_NAMESPACE_SYSTEM          = 0x2
-+	EXTATTR_NAMESPACE_USER            = 0x1
- 	EXTB                              = 0x9600
- 	EXTPROC                           = 0x800
- 	FD_CLOEXEC                        = 0x1
-@@ -581,6 +588,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -970,6 +978,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -1008,6 +1020,43 @@ const (
- 	MAP_WIRED                         = 0x800
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_BASIC_FLAGS                   = 0xe782807f
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DISCARD                       = 0x800000
-+	MNT_EXKERB                        = 0x800
-+	MNT_EXNORESPORT                   = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXPUBLIC                      = 0x10000000
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_EXTATTR                       = 0x1000000
-+	MNT_FORCE                         = 0x80000
-+	MNT_GETARGS                       = 0x400000
-+	MNT_IGNORE                        = 0x100000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_LOG                           = 0x2000000
-+	MNT_NOATIME                       = 0x4000000
-+	MNT_NOCOREDUMP                    = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NODEVMTIME                    = 0x40000000
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_OP_FLAGS                      = 0x4d0000
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELATIME                      = 0x20000
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x80000000
-+	MNT_SYMPERM                       = 0x20000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UNION                         = 0x20
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0xff90ffff
-+	MNT_WAIT                          = 0x1
- 	MSG_BCAST                         = 0x100
- 	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CONTROLMBUF                   = 0x2000000
-@@ -1036,6 +1085,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_OIFLIST                    = 0x4
- 	NET_RT_OOIFLIST                   = 0x3
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1101,7 +1151,10 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-@@ -1576,137 +1629,145 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large or too small",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol option not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "illegal byte sequence",
--	86: "not supported",
--	87: "operation Canceled",
--	88: "bad or Corrupt message",
--	89: "no message available",
--	90: "no STREAM resources",
--	91: "not a STREAM",
--	92: "STREAM ioctl timeout",
--	93: "attribute not found",
--	94: "multihop attempted",
--	95: "link has been severed",
--	96: "protocol error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large or too small"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol option not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "connection timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EILSEQ", "illegal byte sequence"},
-+	{86, "ENOTSUP", "not supported"},
-+	{87, "ECANCELED", "operation Canceled"},
-+	{88, "EBADMSG", "bad or Corrupt message"},
-+	{89, "ENODATA", "no message available"},
-+	{90, "ENOSR", "no STREAM resources"},
-+	{91, "ENOSTR", "not a STREAM"},
-+	{92, "ETIME", "STREAM ioctl timeout"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EMULTIHOP", "multihop attempted"},
-+	{95, "ENOLINK", "link has been severed"},
-+	{96, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "power fail/restart",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-index 4994437b..ed522a84 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,netbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -159,6 +159,7 @@ const (
- 	CLONE_VFORK                       = 0x4000
- 	CLONE_VM                          = 0x100
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -169,6 +170,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	CTL_QUERY                         = -0x2
-@@ -537,6 +540,10 @@ const (
- 	EV_ONESHOT                        = 0x10
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
-+	EXTATTR_CMD_START                 = 0x1
-+	EXTATTR_CMD_STOP                  = 0x2
-+	EXTATTR_NAMESPACE_SYSTEM          = 0x2
-+	EXTATTR_NAMESPACE_USER            = 0x1
- 	EXTB                              = 0x9600
- 	EXTPROC                           = 0x800
- 	FD_CLOEXEC                        = 0x1
-@@ -571,6 +578,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -960,6 +968,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -998,6 +1010,43 @@ const (
- 	MAP_WIRED                         = 0x800
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_BASIC_FLAGS                   = 0xe782807f
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DISCARD                       = 0x800000
-+	MNT_EXKERB                        = 0x800
-+	MNT_EXNORESPORT                   = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXPUBLIC                      = 0x10000000
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_EXTATTR                       = 0x1000000
-+	MNT_FORCE                         = 0x80000
-+	MNT_GETARGS                       = 0x400000
-+	MNT_IGNORE                        = 0x100000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_LOG                           = 0x2000000
-+	MNT_NOATIME                       = 0x4000000
-+	MNT_NOCOREDUMP                    = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NODEVMTIME                    = 0x40000000
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_OP_FLAGS                      = 0x4d0000
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELATIME                      = 0x20000
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x80000000
-+	MNT_SYMPERM                       = 0x20000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UNION                         = 0x20
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0xff90ffff
-+	MNT_WAIT                          = 0x1
- 	MSG_BCAST                         = 0x100
- 	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CONTROLMBUF                   = 0x2000000
-@@ -1026,6 +1075,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_OIFLIST                    = 0x4
- 	NET_RT_OOIFLIST                   = 0x3
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1091,7 +1141,10 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-@@ -1566,137 +1619,145 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large or too small",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol option not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "illegal byte sequence",
--	86: "not supported",
--	87: "operation Canceled",
--	88: "bad or Corrupt message",
--	89: "no message available",
--	90: "no STREAM resources",
--	91: "not a STREAM",
--	92: "STREAM ioctl timeout",
--	93: "attribute not found",
--	94: "multihop attempted",
--	95: "link has been severed",
--	96: "protocol error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large or too small"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol option not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "connection timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EILSEQ", "illegal byte sequence"},
-+	{86, "ENOTSUP", "not supported"},
-+	{87, "ECANCELED", "operation Canceled"},
-+	{88, "EBADMSG", "bad or Corrupt message"},
-+	{89, "ENODATA", "no message available"},
-+	{90, "ENOSR", "no STREAM resources"},
-+	{91, "ENOSTR", "not a STREAM"},
-+	{92, "ETIME", "STREAM ioctl timeout"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EMULTIHOP", "multihop attempted"},
-+	{95, "ENOLINK", "link has been severed"},
-+	{96, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "power fail/restart",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-index 206c75f0..c8d36fe9 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -marm
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,netbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -marm _const.go
- 
- package unix
-@@ -151,6 +151,7 @@ const (
- 	CFLUSH                            = 0xf
- 	CLOCAL                            = 0x8000
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -161,6 +162,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	CTL_QUERY                         = -0x2
-@@ -529,6 +532,10 @@ const (
- 	EV_ONESHOT                        = 0x10
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
-+	EXTATTR_CMD_START                 = 0x1
-+	EXTATTR_CMD_STOP                  = 0x2
-+	EXTATTR_NAMESPACE_SYSTEM          = 0x2
-+	EXTATTR_NAMESPACE_USER            = 0x1
- 	EXTB                              = 0x9600
- 	EXTPROC                           = 0x800
- 	FD_CLOEXEC                        = 0x1
-@@ -563,6 +570,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -952,6 +960,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -988,6 +1000,43 @@ const (
- 	MAP_STACK                         = 0x2000
- 	MAP_TRYFIXED                      = 0x400
- 	MAP_WIRED                         = 0x800
-+	MNT_ASYNC                         = 0x40
-+	MNT_BASIC_FLAGS                   = 0xe782807f
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DISCARD                       = 0x800000
-+	MNT_EXKERB                        = 0x800
-+	MNT_EXNORESPORT                   = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXPUBLIC                      = 0x10000000
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_EXTATTR                       = 0x1000000
-+	MNT_FORCE                         = 0x80000
-+	MNT_GETARGS                       = 0x400000
-+	MNT_IGNORE                        = 0x100000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_LOG                           = 0x2000000
-+	MNT_NOATIME                       = 0x4000000
-+	MNT_NOCOREDUMP                    = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NODEVMTIME                    = 0x40000000
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_OP_FLAGS                      = 0x4d0000
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELATIME                      = 0x20000
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x80000000
-+	MNT_SYMPERM                       = 0x20000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UNION                         = 0x20
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0xff90ffff
-+	MNT_WAIT                          = 0x1
- 	MSG_BCAST                         = 0x100
- 	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CONTROLMBUF                   = 0x2000000
-@@ -1016,6 +1065,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_OIFLIST                    = 0x4
- 	NET_RT_OOIFLIST                   = 0x3
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1081,7 +1131,10 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-@@ -1555,137 +1608,145 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large or too small",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol option not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "illegal byte sequence",
--	86: "not supported",
--	87: "operation Canceled",
--	88: "bad or Corrupt message",
--	89: "no message available",
--	90: "no STREAM resources",
--	91: "not a STREAM",
--	92: "STREAM ioctl timeout",
--	93: "attribute not found",
--	94: "multihop attempted",
--	95: "link has been severed",
--	96: "protocol error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large or too small"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol option not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "connection timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EILSEQ", "illegal byte sequence"},
-+	{86, "ENOTSUP", "not supported"},
-+	{87, "ECANCELED", "operation Canceled"},
-+	{88, "EBADMSG", "bad or Corrupt message"},
-+	{89, "ENODATA", "no message available"},
-+	{90, "ENOSR", "no STREAM resources"},
-+	{91, "ENOSTR", "not a STREAM"},
-+	{92, "ETIME", "STREAM ioctl timeout"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EMULTIHOP", "multihop attempted"},
-+	{95, "ENOLINK", "link has been severed"},
-+	{96, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "power fail/restart",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-similarity index 89%
-copy from vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-index 4994437b..f1c146a7 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,netbsd
-+// +build arm64,netbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -159,6 +159,7 @@ const (
- 	CLONE_VFORK                       = 0x4000
- 	CLONE_VM                          = 0x100
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -169,6 +170,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	CTL_QUERY                         = -0x2
-@@ -537,6 +540,10 @@ const (
- 	EV_ONESHOT                        = 0x10
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
-+	EXTATTR_CMD_START                 = 0x1
-+	EXTATTR_CMD_STOP                  = 0x2
-+	EXTATTR_NAMESPACE_SYSTEM          = 0x2
-+	EXTATTR_NAMESPACE_USER            = 0x1
- 	EXTB                              = 0x9600
- 	EXTPROC                           = 0x800
- 	FD_CLOEXEC                        = 0x1
-@@ -571,6 +578,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -960,6 +968,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
- 	LOCK_SH                           = 0x1
-@@ -998,6 +1010,43 @@ const (
- 	MAP_WIRED                         = 0x800
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_BASIC_FLAGS                   = 0xe782807f
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DISCARD                       = 0x800000
-+	MNT_EXKERB                        = 0x800
-+	MNT_EXNORESPORT                   = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXPUBLIC                      = 0x10000000
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_EXTATTR                       = 0x1000000
-+	MNT_FORCE                         = 0x80000
-+	MNT_GETARGS                       = 0x400000
-+	MNT_IGNORE                        = 0x100000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_LOG                           = 0x2000000
-+	MNT_NOATIME                       = 0x4000000
-+	MNT_NOCOREDUMP                    = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NODEVMTIME                    = 0x40000000
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_OP_FLAGS                      = 0x4d0000
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELATIME                      = 0x20000
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x80000000
-+	MNT_SYMPERM                       = 0x20000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UNION                         = 0x20
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0xff90ffff
-+	MNT_WAIT                          = 0x1
- 	MSG_BCAST                         = 0x100
- 	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CONTROLMBUF                   = 0x2000000
-@@ -1026,6 +1075,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_OIFLIST                    = 0x4
- 	NET_RT_OOIFLIST                   = 0x3
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1091,7 +1141,10 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-@@ -1566,137 +1619,145 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large or too small",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol option not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "identifier removed",
--	83: "no message of desired type",
--	84: "value too large to be stored in data type",
--	85: "illegal byte sequence",
--	86: "not supported",
--	87: "operation Canceled",
--	88: "bad or Corrupt message",
--	89: "no message available",
--	90: "no STREAM resources",
--	91: "not a STREAM",
--	92: "STREAM ioctl timeout",
--	93: "attribute not found",
--	94: "multihop attempted",
--	95: "link has been severed",
--	96: "protocol error",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large or too small"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol option not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "connection timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disc quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIDRM", "identifier removed"},
-+	{83, "ENOMSG", "no message of desired type"},
-+	{84, "EOVERFLOW", "value too large to be stored in data type"},
-+	{85, "EILSEQ", "illegal byte sequence"},
-+	{86, "ENOTSUP", "not supported"},
-+	{87, "ECANCELED", "operation Canceled"},
-+	{88, "EBADMSG", "bad or Corrupt message"},
-+	{89, "ENODATA", "no message available"},
-+	{90, "ENOSR", "no STREAM resources"},
-+	{91, "ENOSTR", "not a STREAM"},
-+	{92, "ETIME", "STREAM ioctl timeout"},
-+	{93, "ENOATTR", "attribute not found"},
-+	{94, "EMULTIHOP", "multihop attempted"},
-+	{95, "ENOLINK", "link has been severed"},
-+	{96, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "power fail/restart",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGIOT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "stopped (signal)"},
-+	{18, "SIGTSTP", "stopped"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-index 3322e998..5402bd55 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m32
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,openbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
- 
- package unix
-@@ -147,6 +147,7 @@ const (
- 	CFLUSH                            = 0xf
- 	CLOCAL                            = 0x8000
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -157,6 +158,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DIOCOSFPFLUSH                     = 0x2000444e
-@@ -442,6 +445,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -860,6 +864,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LCNT_OVERLOAD_FLUSH               = 0x6
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
-@@ -873,14 +881,15 @@ const (
- 	MADV_SPACEAVAIL                   = 0x5
- 	MADV_WILLNEED                     = 0x3
- 	MAP_ANON                          = 0x1000
--	MAP_COPY                          = 0x4
-+	MAP_ANONYMOUS                     = 0x1000
-+	MAP_CONCEAL                       = 0x8000
-+	MAP_COPY                          = 0x2
- 	MAP_FILE                          = 0x0
- 	MAP_FIXED                         = 0x10
--	MAP_FLAGMASK                      = 0x1ff7
--	MAP_HASSEMAPHORE                  = 0x200
--	MAP_INHERIT                       = 0x80
-+	MAP_FLAGMASK                      = 0xfff7
-+	MAP_HASSEMAPHORE                  = 0x0
-+	MAP_INHERIT                       = 0x0
- 	MAP_INHERIT_COPY                  = 0x1
--	MAP_INHERIT_DONATE_COPY           = 0x3
- 	MAP_INHERIT_NONE                  = 0x2
- 	MAP_INHERIT_SHARE                 = 0x0
- 	MAP_NOEXTEND                      = 0x100
-@@ -888,9 +897,36 @@ const (
- 	MAP_PRIVATE                       = 0x2
- 	MAP_RENAME                        = 0x20
- 	MAP_SHARED                        = 0x1
--	MAP_TRYFIXED                      = 0x400
-+	MAP_STACK                         = 0x4000
-+	MAP_TRYFIXED                      = 0x0
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DELEXPORT                     = 0x20000
-+	MNT_DOOMED                        = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_FORCE                         = 0x80000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_NOATIME                       = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x4000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0x400ffff
-+	MNT_WAIT                          = 0x1
-+	MNT_WANTRDWR                      = 0x2000000
-+	MNT_WXALLOWED                     = 0x800
- 	MSG_BCAST                         = 0x100
- 	MSG_CTRUNC                        = 0x20
- 	MSG_DONTROUTE                     = 0x4
-@@ -912,6 +948,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_STATS                      = 0x4
- 	NET_RT_TABLE                      = 0x5
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1210,6 +1247,34 @@ const (
- 	SO_TIMESTAMP                      = 0x800
- 	SO_TYPE                           = 0x1008
- 	SO_USELOOPBACK                    = 0x40
-+	S_BLKSIZE                         = 0x200
-+	S_IEXEC                           = 0x40
-+	S_IFBLK                           = 0x6000
-+	S_IFCHR                           = 0x2000
-+	S_IFDIR                           = 0x4000
-+	S_IFIFO                           = 0x1000
-+	S_IFLNK                           = 0xa000
-+	S_IFMT                            = 0xf000
-+	S_IFREG                           = 0x8000
-+	S_IFSOCK                          = 0xc000
-+	S_IREAD                           = 0x100
-+	S_IRGRP                           = 0x20
-+	S_IROTH                           = 0x4
-+	S_IRUSR                           = 0x100
-+	S_IRWXG                           = 0x38
-+	S_IRWXO                           = 0x7
-+	S_IRWXU                           = 0x1c0
-+	S_ISGID                           = 0x400
-+	S_ISTXT                           = 0x200
-+	S_ISUID                           = 0x800
-+	S_ISVTX                           = 0x200
-+	S_IWGRP                           = 0x10
-+	S_IWOTH                           = 0x2
-+	S_IWRITE                          = 0x80
-+	S_IWUSR                           = 0x80
-+	S_IXGRP                           = 0x8
-+	S_IXOTH                           = 0x1
-+	S_IXUSR                           = 0x40
- 	TCIFLUSH                          = 0x1
- 	TCIOFLUSH                         = 0x3
- 	TCOFLUSH                          = 0x2
-@@ -1453,132 +1518,140 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "IPsec processing failure",
--	83: "attribute not found",
--	84: "illegal byte sequence",
--	85: "no medium found",
--	86: "wrong medium type",
--	87: "value too large to be stored in data type",
--	88: "operation canceled",
--	89: "identifier removed",
--	90: "no message of desired type",
--	91: "not supported",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disk quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC program not available"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIPSEC", "IPsec processing failure"},
-+	{83, "ENOATTR", "attribute not found"},
-+	{84, "EILSEQ", "illegal byte sequence"},
-+	{85, "ENOMEDIUM", "no medium found"},
-+	{86, "EMEDIUMTYPE", "wrong medium type"},
-+	{87, "EOVERFLOW", "value too large to be stored in data type"},
-+	{88, "ECANCELED", "operation canceled"},
-+	{89, "EIDRM", "identifier removed"},
-+	{90, "ENOMSG", "no message of desired type"},
-+	{91, "ELAST", "not supported"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "thread AST",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-index 1758ecca..ffaf2d2f 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,openbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -45,6 +45,7 @@ const (
- 	AF_SNA                            = 0xb
- 	AF_UNIX                           = 0x1
- 	AF_UNSPEC                         = 0x0
-+	ALTWERASE                         = 0x200
- 	ARPHRD_ETHER                      = 0x1
- 	ARPHRD_FRELAY                     = 0xf
- 	ARPHRD_IEEE1394                   = 0x18
-@@ -146,7 +147,14 @@ const (
- 	BRKINT                            = 0x2
- 	CFLUSH                            = 0xf
- 	CLOCAL                            = 0x8000
-+	CLOCK_BOOTTIME                    = 0x6
-+	CLOCK_MONOTONIC                   = 0x3
-+	CLOCK_PROCESS_CPUTIME_ID          = 0x2
-+	CLOCK_REALTIME                    = 0x0
-+	CLOCK_THREAD_CPUTIME_ID           = 0x4
-+	CLOCK_UPTIME                      = 0x5
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -157,6 +165,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DIOCOSFPFLUSH                     = 0x2000444e
-@@ -175,6 +185,7 @@ const (
- 	DLT_LOOP                          = 0xc
- 	DLT_MPLS                          = 0xdb
- 	DLT_NULL                          = 0x0
-+	DLT_OPENFLOW                      = 0x10b
- 	DLT_PFLOG                         = 0x75
- 	DLT_PFSYNC                        = 0x12
- 	DLT_PPP                           = 0x9
-@@ -185,6 +196,23 @@ const (
- 	DLT_RAW                           = 0xe
- 	DLT_SLIP                          = 0x8
- 	DLT_SLIP_BSDOS                    = 0xf
-+	DLT_USBPCAP                       = 0xf9
-+	DLT_USER0                         = 0x93
-+	DLT_USER1                         = 0x94
-+	DLT_USER10                        = 0x9d
-+	DLT_USER11                        = 0x9e
-+	DLT_USER12                        = 0x9f
-+	DLT_USER13                        = 0xa0
-+	DLT_USER14                        = 0xa1
-+	DLT_USER15                        = 0xa2
-+	DLT_USER2                         = 0x95
-+	DLT_USER3                         = 0x96
-+	DLT_USER4                         = 0x97
-+	DLT_USER5                         = 0x98
-+	DLT_USER6                         = 0x99
-+	DLT_USER7                         = 0x9a
-+	DLT_USER8                         = 0x9b
-+	DLT_USER9                         = 0x9c
- 	DT_BLK                            = 0x6
- 	DT_CHR                            = 0x2
- 	DT_DIR                            = 0x4
-@@ -398,27 +426,38 @@ const (
- 	ETHER_CRC_POLY_LE                 = 0xedb88320
- 	ETHER_HDR_LEN                     = 0xe
- 	ETHER_MAX_DIX_LEN                 = 0x600
-+	ETHER_MAX_HARDMTU_LEN             = 0xff9b
- 	ETHER_MAX_LEN                     = 0x5ee
- 	ETHER_MIN_LEN                     = 0x40
- 	ETHER_TYPE_LEN                    = 0x2
- 	ETHER_VLAN_ENCAP_LEN              = 0x4
- 	EVFILT_AIO                        = -0x3
-+	EVFILT_DEVICE                     = -0x8
- 	EVFILT_PROC                       = -0x5
- 	EVFILT_READ                       = -0x1
- 	EVFILT_SIGNAL                     = -0x6
--	EVFILT_SYSCOUNT                   = 0x7
-+	EVFILT_SYSCOUNT                   = 0x8
- 	EVFILT_TIMER                      = -0x7
- 	EVFILT_VNODE                      = -0x4
- 	EVFILT_WRITE                      = -0x2
-+	EVL_ENCAPLEN                      = 0x4
-+	EVL_PRIO_BITS                     = 0xd
-+	EVL_PRIO_MAX                      = 0x7
-+	EVL_VLID_MASK                     = 0xfff
-+	EVL_VLID_MAX                      = 0xffe
-+	EVL_VLID_MIN                      = 0x1
-+	EVL_VLID_NULL                     = 0x0
- 	EV_ADD                            = 0x1
- 	EV_CLEAR                          = 0x20
- 	EV_DELETE                         = 0x2
- 	EV_DISABLE                        = 0x8
-+	EV_DISPATCH                       = 0x80
- 	EV_ENABLE                         = 0x4
- 	EV_EOF                            = 0x8000
- 	EV_ERROR                          = 0x4000
- 	EV_FLAG1                          = 0x2000
- 	EV_ONESHOT                        = 0x10
-+	EV_RECEIPT                        = 0x40
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
- 	EXTB                              = 0x9600
-@@ -432,6 +471,7 @@ const (
- 	F_GETFL                           = 0x3
- 	F_GETLK                           = 0x7
- 	F_GETOWN                          = 0x5
-+	F_ISATTY                          = 0xb
- 	F_OK                              = 0x0
- 	F_RDLCK                           = 0x1
- 	F_SETFD                           = 0x2
-@@ -442,13 +482,13 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
- 	IEXTEN                            = 0x400
- 	IFAN_ARRIVAL                      = 0x0
- 	IFAN_DEPARTURE                    = 0x1
--	IFA_ROUTE                         = 0x1
- 	IFF_ALLMULTI                      = 0x200
- 	IFF_BROADCAST                     = 0x2
- 	IFF_CANTCHANGE                    = 0x8e52
-@@ -459,12 +499,12 @@ const (
- 	IFF_LOOPBACK                      = 0x8
- 	IFF_MULTICAST                     = 0x8000
- 	IFF_NOARP                         = 0x80
--	IFF_NOTRAILERS                    = 0x20
- 	IFF_OACTIVE                       = 0x400
- 	IFF_POINTOPOINT                   = 0x10
- 	IFF_PROMISC                       = 0x100
- 	IFF_RUNNING                       = 0x40
- 	IFF_SIMPLEX                       = 0x800
-+	IFF_STATICARP                     = 0x20
- 	IFF_UP                            = 0x1
- 	IFNAMSIZ                          = 0x10
- 	IFT_1822                          = 0x2
-@@ -593,6 +633,7 @@ const (
- 	IFT_LINEGROUP                     = 0xd2
- 	IFT_LOCALTALK                     = 0x2a
- 	IFT_LOOP                          = 0x18
-+	IFT_MBIM                          = 0xfa
- 	IFT_MEDIAMAILOVERIP               = 0x8b
- 	IFT_MFSIGLINK                     = 0xa7
- 	IFT_MIOX25                        = 0x26
-@@ -717,8 +758,6 @@ const (
- 	IPPROTO_AH                        = 0x33
- 	IPPROTO_CARP                      = 0x70
- 	IPPROTO_DIVERT                    = 0x102
--	IPPROTO_DIVERT_INIT               = 0x2
--	IPPROTO_DIVERT_RESP               = 0x1
- 	IPPROTO_DONE                      = 0x101
- 	IPPROTO_DSTOPTS                   = 0x3c
- 	IPPROTO_EGP                       = 0x8
-@@ -775,6 +814,7 @@ const (
- 	IPV6_LEAVE_GROUP                  = 0xd
- 	IPV6_MAXHLIM                      = 0xff
- 	IPV6_MAXPACKET                    = 0xffff
-+	IPV6_MINHOPCOUNT                  = 0x41
- 	IPV6_MMTU                         = 0x500
- 	IPV6_MULTICAST_HOPS               = 0xa
- 	IPV6_MULTICAST_IF                 = 0x9
-@@ -814,12 +854,12 @@ const (
- 	IP_DEFAULT_MULTICAST_LOOP         = 0x1
- 	IP_DEFAULT_MULTICAST_TTL          = 0x1
- 	IP_DF                             = 0x4000
--	IP_DIVERTFL                       = 0x1022
- 	IP_DROP_MEMBERSHIP                = 0xd
- 	IP_ESP_NETWORK_LEVEL              = 0x16
- 	IP_ESP_TRANS_LEVEL                = 0x15
- 	IP_HDRINCL                        = 0x2
- 	IP_IPCOMP_LEVEL                   = 0x1d
-+	IP_IPDEFTTL                       = 0x25
- 	IP_IPSECFLOWINFO                  = 0x24
- 	IP_IPSEC_LOCAL_AUTH               = 0x1b
- 	IP_IPSEC_LOCAL_CRED               = 0x19
-@@ -853,13 +893,19 @@ const (
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
- 	IP_RTABLE                         = 0x1021
-+	IP_SENDSRCADDR                    = 0x7
- 	IP_TOS                            = 0x3
- 	IP_TTL                            = 0x4
- 	ISIG                              = 0x80
- 	ISTRIP                            = 0x20
-+	IUCLC                             = 0x1000
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LCNT_OVERLOAD_FLUSH               = 0x6
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
-@@ -873,25 +919,57 @@ const (
- 	MADV_SPACEAVAIL                   = 0x5
- 	MADV_WILLNEED                     = 0x3
- 	MAP_ANON                          = 0x1000
--	MAP_COPY                          = 0x4
-+	MAP_ANONYMOUS                     = 0x1000
-+	MAP_CONCEAL                       = 0x8000
-+	MAP_COPY                          = 0x2
- 	MAP_FILE                          = 0x0
- 	MAP_FIXED                         = 0x10
--	MAP_FLAGMASK                      = 0x1ff7
--	MAP_HASSEMAPHORE                  = 0x200
--	MAP_INHERIT                       = 0x80
-+	MAP_FLAGMASK                      = 0xfff7
-+	MAP_HASSEMAPHORE                  = 0x0
-+	MAP_INHERIT                       = 0x0
- 	MAP_INHERIT_COPY                  = 0x1
--	MAP_INHERIT_DONATE_COPY           = 0x3
- 	MAP_INHERIT_NONE                  = 0x2
- 	MAP_INHERIT_SHARE                 = 0x0
--	MAP_NOEXTEND                      = 0x100
--	MAP_NORESERVE                     = 0x40
-+	MAP_INHERIT_ZERO                  = 0x3
-+	MAP_NOEXTEND                      = 0x0
-+	MAP_NORESERVE                     = 0x0
- 	MAP_PRIVATE                       = 0x2
--	MAP_RENAME                        = 0x20
-+	MAP_RENAME                        = 0x0
- 	MAP_SHARED                        = 0x1
--	MAP_TRYFIXED                      = 0x400
-+	MAP_STACK                         = 0x4000
-+	MAP_TRYFIXED                      = 0x0
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DELEXPORT                     = 0x20000
-+	MNT_DOOMED                        = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_FORCE                         = 0x80000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_NOATIME                       = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOPERM                        = 0x20
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x4000000
-+	MNT_STALLED                       = 0x100000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0x400ffff
-+	MNT_WAIT                          = 0x1
-+	MNT_WANTRDWR                      = 0x2000000
-+	MNT_WXALLOWED                     = 0x800
- 	MSG_BCAST                         = 0x100
-+	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CTRUNC                        = 0x20
- 	MSG_DONTROUTE                     = 0x4
- 	MSG_DONTWAIT                      = 0x80
-@@ -909,11 +987,15 @@ const (
- 	NET_RT_DUMP                       = 0x1
- 	NET_RT_FLAGS                      = 0x2
- 	NET_RT_IFLIST                     = 0x3
--	NET_RT_MAXID                      = 0x6
-+	NET_RT_IFNAMES                    = 0x6
-+	NET_RT_MAXID                      = 0x7
- 	NET_RT_STATS                      = 0x4
- 	NET_RT_TABLE                      = 0x5
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
-+	NOKERNINFO                        = 0x2000000
- 	NOTE_ATTRIB                       = 0x8
-+	NOTE_CHANGE                       = 0x1
- 	NOTE_CHILD                        = 0x4
- 	NOTE_DELETE                       = 0x1
- 	NOTE_EOF                          = 0x2
-@@ -932,11 +1014,13 @@ const (
- 	NOTE_TRUNCATE                     = 0x80
- 	NOTE_WRITE                        = 0x2
- 	OCRNL                             = 0x10
-+	OLCUC                             = 0x20
- 	ONLCR                             = 0x2
- 	ONLRET                            = 0x80
- 	ONOCR                             = 0x40
- 	ONOEOT                            = 0x8
- 	OPOST                             = 0x1
-+	OXTABS                            = 0x4
- 	O_ACCMODE                         = 0x3
- 	O_APPEND                          = 0x8
- 	O_ASYNC                           = 0x40
-@@ -974,23 +1058,32 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-+	RTAX_BFD                          = 0xb
- 	RTAX_BRD                          = 0x7
-+	RTAX_DNS                          = 0xc
- 	RTAX_DST                          = 0x0
- 	RTAX_GATEWAY                      = 0x1
- 	RTAX_GENMASK                      = 0x3
- 	RTAX_IFA                          = 0x5
- 	RTAX_IFP                          = 0x4
- 	RTAX_LABEL                        = 0xa
--	RTAX_MAX                          = 0xb
-+	RTAX_MAX                          = 0xf
- 	RTAX_NETMASK                      = 0x2
-+	RTAX_SEARCH                       = 0xe
- 	RTAX_SRC                          = 0x8
- 	RTAX_SRCMASK                      = 0x9
-+	RTAX_STATIC                       = 0xd
- 	RTA_AUTHOR                        = 0x40
-+	RTA_BFD                           = 0x800
- 	RTA_BRD                           = 0x80
-+	RTA_DNS                           = 0x1000
- 	RTA_DST                           = 0x1
- 	RTA_GATEWAY                       = 0x2
- 	RTA_GENMASK                       = 0x8
-@@ -998,34 +1091,39 @@ const (
- 	RTA_IFP                           = 0x10
- 	RTA_LABEL                         = 0x400
- 	RTA_NETMASK                       = 0x4
-+	RTA_SEARCH                        = 0x4000
- 	RTA_SRC                           = 0x100
- 	RTA_SRCMASK                       = 0x200
-+	RTA_STATIC                        = 0x2000
- 	RTF_ANNOUNCE                      = 0x4000
-+	RTF_BFD                           = 0x1000000
- 	RTF_BLACKHOLE                     = 0x1000
-+	RTF_BROADCAST                     = 0x400000
-+	RTF_CACHED                        = 0x20000
- 	RTF_CLONED                        = 0x10000
- 	RTF_CLONING                       = 0x100
-+	RTF_CONNECTED                     = 0x800000
- 	RTF_DONE                          = 0x40
- 	RTF_DYNAMIC                       = 0x10
--	RTF_FMASK                         = 0x10f808
-+	RTF_FMASK                         = 0x110fc08
- 	RTF_GATEWAY                       = 0x2
- 	RTF_HOST                          = 0x4
- 	RTF_LLINFO                        = 0x400
--	RTF_MASK                          = 0x80
-+	RTF_LOCAL                         = 0x200000
- 	RTF_MODIFIED                      = 0x20
- 	RTF_MPATH                         = 0x40000
- 	RTF_MPLS                          = 0x100000
-+	RTF_MULTICAST                     = 0x200
- 	RTF_PERMANENT_ARP                 = 0x2000
- 	RTF_PROTO1                        = 0x8000
- 	RTF_PROTO2                        = 0x4000
- 	RTF_PROTO3                        = 0x2000
- 	RTF_REJECT                        = 0x8
--	RTF_SOURCE                        = 0x20000
- 	RTF_STATIC                        = 0x800
--	RTF_TUNNEL                        = 0x100000
- 	RTF_UP                            = 0x1
- 	RTF_USETRAILERS                   = 0x8000
--	RTF_XRESOLVE                      = 0x200
- 	RTM_ADD                           = 0x1
-+	RTM_BFD                           = 0x12
- 	RTM_CHANGE                        = 0x3
- 	RTM_DELADDR                       = 0xd
- 	RTM_DELETE                        = 0x2
-@@ -1033,11 +1131,13 @@ const (
- 	RTM_GET                           = 0x4
- 	RTM_IFANNOUNCE                    = 0xf
- 	RTM_IFINFO                        = 0xe
-+	RTM_INVALIDATE                    = 0x11
- 	RTM_LOCK                          = 0x8
- 	RTM_LOSING                        = 0x5
- 	RTM_MAXSIZE                       = 0x800
- 	RTM_MISS                          = 0x7
- 	RTM_NEWADDR                       = 0xc
-+	RTM_PROPOSAL                      = 0x13
- 	RTM_REDIRECT                      = 0x6
- 	RTM_RESOLVE                       = 0xb
- 	RTM_RTTUNIT                       = 0xf4240
-@@ -1050,6 +1150,8 @@ const (
- 	RTV_RTTVAR                        = 0x80
- 	RTV_SPIPE                         = 0x10
- 	RTV_SSTHRESH                      = 0x20
-+	RT_TABLEID_BITS                   = 0x8
-+	RT_TABLEID_MASK                   = 0xff
- 	RT_TABLEID_MAX                    = 0xff
- 	RUSAGE_CHILDREN                   = -0x1
- 	RUSAGE_SELF                       = 0x0
-@@ -1062,55 +1164,55 @@ const (
- 	SIOCADDMULTI                      = 0x80206931
- 	SIOCAIFADDR                       = 0x8040691a
- 	SIOCAIFGROUP                      = 0x80286987
--	SIOCALIFADDR                      = 0x8218691c
- 	SIOCATMARK                        = 0x40047307
--	SIOCBRDGADD                       = 0x8058693c
--	SIOCBRDGADDS                      = 0x80586941
--	SIOCBRDGARL                       = 0x806e694d
-+	SIOCBRDGADD                       = 0x8060693c
-+	SIOCBRDGADDL                      = 0x80606949
-+	SIOCBRDGADDS                      = 0x80606941
-+	SIOCBRDGARL                       = 0x808c694d
- 	SIOCBRDGDADDR                     = 0x81286947
--	SIOCBRDGDEL                       = 0x8058693d
--	SIOCBRDGDELS                      = 0x80586942
--	SIOCBRDGFLUSH                     = 0x80586948
--	SIOCBRDGFRL                       = 0x806e694e
--	SIOCBRDGGCACHE                    = 0xc0146941
--	SIOCBRDGGFD                       = 0xc0146952
--	SIOCBRDGGHT                       = 0xc0146951
--	SIOCBRDGGIFFLGS                   = 0xc058693e
--	SIOCBRDGGMA                       = 0xc0146953
-+	SIOCBRDGDEL                       = 0x8060693d
-+	SIOCBRDGDELS                      = 0x80606942
-+	SIOCBRDGFLUSH                     = 0x80606948
-+	SIOCBRDGFRL                       = 0x808c694e
-+	SIOCBRDGGCACHE                    = 0xc0186941
-+	SIOCBRDGGFD                       = 0xc0186952
-+	SIOCBRDGGHT                       = 0xc0186951
-+	SIOCBRDGGIFFLGS                   = 0xc060693e
-+	SIOCBRDGGMA                       = 0xc0186953
- 	SIOCBRDGGPARAM                    = 0xc0406958
--	SIOCBRDGGPRI                      = 0xc0146950
-+	SIOCBRDGGPRI                      = 0xc0186950
- 	SIOCBRDGGRL                       = 0xc030694f
--	SIOCBRDGGSIFS                     = 0xc058693c
--	SIOCBRDGGTO                       = 0xc0146946
--	SIOCBRDGIFS                       = 0xc0586942
-+	SIOCBRDGGTO                       = 0xc0186946
-+	SIOCBRDGIFS                       = 0xc0606942
- 	SIOCBRDGRTS                       = 0xc0206943
- 	SIOCBRDGSADDR                     = 0xc1286944
--	SIOCBRDGSCACHE                    = 0x80146940
--	SIOCBRDGSFD                       = 0x80146952
--	SIOCBRDGSHT                       = 0x80146951
--	SIOCBRDGSIFCOST                   = 0x80586955
--	SIOCBRDGSIFFLGS                   = 0x8058693f
--	SIOCBRDGSIFPRIO                   = 0x80586954
--	SIOCBRDGSMA                       = 0x80146953
--	SIOCBRDGSPRI                      = 0x80146950
--	SIOCBRDGSPROTO                    = 0x8014695a
--	SIOCBRDGSTO                       = 0x80146945
--	SIOCBRDGSTXHC                     = 0x80146959
-+	SIOCBRDGSCACHE                    = 0x80186940
-+	SIOCBRDGSFD                       = 0x80186952
-+	SIOCBRDGSHT                       = 0x80186951
-+	SIOCBRDGSIFCOST                   = 0x80606955
-+	SIOCBRDGSIFFLGS                   = 0x8060693f
-+	SIOCBRDGSIFPRIO                   = 0x80606954
-+	SIOCBRDGSIFPROT                   = 0x8060694a
-+	SIOCBRDGSMA                       = 0x80186953
-+	SIOCBRDGSPRI                      = 0x80186950
-+	SIOCBRDGSPROTO                    = 0x8018695a
-+	SIOCBRDGSTO                       = 0x80186945
-+	SIOCBRDGSTXHC                     = 0x80186959
- 	SIOCDELMULTI                      = 0x80206932
- 	SIOCDIFADDR                       = 0x80206919
- 	SIOCDIFGROUP                      = 0x80286989
-+	SIOCDIFPARENT                     = 0x802069b4
- 	SIOCDIFPHYADDR                    = 0x80206949
--	SIOCDLIFADDR                      = 0x8218691e
-+	SIOCDVNETID                       = 0x802069af
- 	SIOCGETKALIVE                     = 0xc01869a4
- 	SIOCGETLABEL                      = 0x8020699a
-+	SIOCGETMPWCFG                     = 0xc02069ae
- 	SIOCGETPFLOW                      = 0xc02069fe
- 	SIOCGETPFSYNC                     = 0xc02069f8
- 	SIOCGETSGCNT                      = 0xc0207534
- 	SIOCGETVIFCNT                     = 0xc0287533
- 	SIOCGETVLAN                       = 0xc0206990
--	SIOCGHIWAT                        = 0x40047301
- 	SIOCGIFADDR                       = 0xc0206921
--	SIOCGIFASYNCMAP                   = 0xc020697c
- 	SIOCGIFBRDADDR                    = 0xc0206923
- 	SIOCGIFCONF                       = 0xc0106924
- 	SIOCGIFDATA                       = 0xc020691b
-@@ -1122,37 +1224,41 @@ const (
- 	SIOCGIFGMEMB                      = 0xc028698a
- 	SIOCGIFGROUP                      = 0xc0286988
- 	SIOCGIFHARDMTU                    = 0xc02069a5
--	SIOCGIFMEDIA                      = 0xc0306936
-+	SIOCGIFLLPRIO                     = 0xc02069b6
-+	SIOCGIFMEDIA                      = 0xc0406938
- 	SIOCGIFMETRIC                     = 0xc0206917
- 	SIOCGIFMTU                        = 0xc020697e
- 	SIOCGIFNETMASK                    = 0xc0206925
--	SIOCGIFPDSTADDR                   = 0xc0206948
-+	SIOCGIFPAIR                       = 0xc02069b1
-+	SIOCGIFPARENT                     = 0xc02069b3
- 	SIOCGIFPRIORITY                   = 0xc020699c
--	SIOCGIFPSRCADDR                   = 0xc0206947
- 	SIOCGIFRDOMAIN                    = 0xc02069a0
- 	SIOCGIFRTLABEL                    = 0xc0206983
--	SIOCGIFTIMESLOT                   = 0xc0206986
-+	SIOCGIFRXR                        = 0x802069aa
- 	SIOCGIFXFLAGS                     = 0xc020699e
--	SIOCGLIFADDR                      = 0xc218691d
- 	SIOCGLIFPHYADDR                   = 0xc218694b
-+	SIOCGLIFPHYDF                     = 0xc02069c2
- 	SIOCGLIFPHYRTABLE                 = 0xc02069a2
- 	SIOCGLIFPHYTTL                    = 0xc02069a9
--	SIOCGLOWAT                        = 0x40047303
- 	SIOCGPGRP                         = 0x40047309
- 	SIOCGSPPPPARAMS                   = 0xc0206994
-+	SIOCGUMBINFO                      = 0xc02069be
-+	SIOCGUMBPARAM                     = 0xc02069c0
- 	SIOCGVH                           = 0xc02069f6
-+	SIOCGVNETFLOWID                   = 0xc02069c4
- 	SIOCGVNETID                       = 0xc02069a7
-+	SIOCIFAFATTACH                    = 0x801169ab
-+	SIOCIFAFDETACH                    = 0x801169ac
- 	SIOCIFCREATE                      = 0x8020697a
- 	SIOCIFDESTROY                     = 0x80206979
- 	SIOCIFGCLONERS                    = 0xc0106978
- 	SIOCSETKALIVE                     = 0x801869a3
- 	SIOCSETLABEL                      = 0x80206999
-+	SIOCSETMPWCFG                     = 0x802069ad
- 	SIOCSETPFLOW                      = 0x802069fd
- 	SIOCSETPFSYNC                     = 0x802069f7
- 	SIOCSETVLAN                       = 0x8020698f
--	SIOCSHIWAT                        = 0x80047300
- 	SIOCSIFADDR                       = 0x8020690c
--	SIOCSIFASYNCMAP                   = 0x8020697d
- 	SIOCSIFBRDADDR                    = 0x80206913
- 	SIOCSIFDESCR                      = 0x80206980
- 	SIOCSIFDSTADDR                    = 0x8020690e
-@@ -1160,25 +1266,36 @@ const (
- 	SIOCSIFGATTR                      = 0x8028698c
- 	SIOCSIFGENERIC                    = 0x80206939
- 	SIOCSIFLLADDR                     = 0x8020691f
--	SIOCSIFMEDIA                      = 0xc0206935
-+	SIOCSIFLLPRIO                     = 0x802069b5
-+	SIOCSIFMEDIA                      = 0xc0206937
- 	SIOCSIFMETRIC                     = 0x80206918
- 	SIOCSIFMTU                        = 0x8020697f
- 	SIOCSIFNETMASK                    = 0x80206916
--	SIOCSIFPHYADDR                    = 0x80406946
-+	SIOCSIFPAIR                       = 0x802069b0
-+	SIOCSIFPARENT                     = 0x802069b2
- 	SIOCSIFPRIORITY                   = 0x8020699b
- 	SIOCSIFRDOMAIN                    = 0x8020699f
- 	SIOCSIFRTLABEL                    = 0x80206982
--	SIOCSIFTIMESLOT                   = 0x80206985
- 	SIOCSIFXFLAGS                     = 0x8020699d
- 	SIOCSLIFPHYADDR                   = 0x8218694a
-+	SIOCSLIFPHYDF                     = 0x802069c1
- 	SIOCSLIFPHYRTABLE                 = 0x802069a1
- 	SIOCSLIFPHYTTL                    = 0x802069a8
--	SIOCSLOWAT                        = 0x80047302
- 	SIOCSPGRP                         = 0x80047308
- 	SIOCSSPPPPARAMS                   = 0x80206993
-+	SIOCSUMBPARAM                     = 0x802069bf
- 	SIOCSVH                           = 0xc02069f5
-+	SIOCSVNETFLOWID                   = 0x802069c3
- 	SIOCSVNETID                       = 0x802069a6
-+	SIOCSWGDPID                       = 0xc018695b
-+	SIOCSWGMAXFLOW                    = 0xc0186960
-+	SIOCSWGMAXGROUP                   = 0xc018695d
-+	SIOCSWSDPID                       = 0x8018695c
-+	SIOCSWSPORTNO                     = 0xc060695f
-+	SOCK_CLOEXEC                      = 0x8000
- 	SOCK_DGRAM                        = 0x2
-+	SOCK_DNS                          = 0x1000
-+	SOCK_NONBLOCK                     = 0x4000
- 	SOCK_RAW                          = 0x3
- 	SOCK_RDM                          = 0x4
- 	SOCK_SEQPACKET                    = 0x5
-@@ -1209,9 +1326,42 @@ const (
- 	SO_TIMESTAMP                      = 0x800
- 	SO_TYPE                           = 0x1008
- 	SO_USELOOPBACK                    = 0x40
-+	SO_ZEROIZE                        = 0x2000
-+	S_BLKSIZE                         = 0x200
-+	S_IEXEC                           = 0x40
-+	S_IFBLK                           = 0x6000
-+	S_IFCHR                           = 0x2000
-+	S_IFDIR                           = 0x4000
-+	S_IFIFO                           = 0x1000
-+	S_IFLNK                           = 0xa000
-+	S_IFMT                            = 0xf000
-+	S_IFREG                           = 0x8000
-+	S_IFSOCK                          = 0xc000
-+	S_IREAD                           = 0x100
-+	S_IRGRP                           = 0x20
-+	S_IROTH                           = 0x4
-+	S_IRUSR                           = 0x100
-+	S_IRWXG                           = 0x38
-+	S_IRWXO                           = 0x7
-+	S_IRWXU                           = 0x1c0
-+	S_ISGID                           = 0x400
-+	S_ISTXT                           = 0x200
-+	S_ISUID                           = 0x800
-+	S_ISVTX                           = 0x200
-+	S_IWGRP                           = 0x10
-+	S_IWOTH                           = 0x2
-+	S_IWRITE                          = 0x80
-+	S_IWUSR                           = 0x80
-+	S_IXGRP                           = 0x8
-+	S_IXOTH                           = 0x1
-+	S_IXUSR                           = 0x40
- 	TCIFLUSH                          = 0x1
-+	TCIOFF                            = 0x3
- 	TCIOFLUSH                         = 0x3
-+	TCION                             = 0x4
- 	TCOFLUSH                          = 0x2
-+	TCOOFF                            = 0x1
-+	TCOON                             = 0x2
- 	TCP_MAXBURST                      = 0x4
- 	TCP_MAXSEG                        = 0x2
- 	TCP_MAXWIN                        = 0xffff
-@@ -1221,11 +1371,12 @@ const (
- 	TCP_MSS                           = 0x200
- 	TCP_NODELAY                       = 0x1
- 	TCP_NOPUSH                        = 0x10
--	TCP_NSTATES                       = 0xb
- 	TCP_SACK_ENABLE                   = 0x8
- 	TCSAFLUSH                         = 0x2
- 	TIOCCBRK                          = 0x2000747a
- 	TIOCCDTR                          = 0x20007478
-+	TIOCCHKVERAUTH                    = 0x2000741e
-+	TIOCCLRVERAUTH                    = 0x2000741d
- 	TIOCCONS                          = 0x80047462
- 	TIOCDRAIN                         = 0x2000745e
- 	TIOCEXCL                          = 0x2000740d
-@@ -1280,17 +1431,22 @@ const (
- 	TIOCSETAF                         = 0x802c7416
- 	TIOCSETAW                         = 0x802c7415
- 	TIOCSETD                          = 0x8004741b
-+	TIOCSETVERAUTH                    = 0x8004741c
- 	TIOCSFLAGS                        = 0x8004745c
- 	TIOCSIG                           = 0x8004745f
- 	TIOCSPGRP                         = 0x80047476
- 	TIOCSTART                         = 0x2000746e
--	TIOCSTAT                          = 0x80047465
-+	TIOCSTAT                          = 0x20007465
- 	TIOCSTI                           = 0x80017472
- 	TIOCSTOP                          = 0x2000746f
- 	TIOCSTSTAMP                       = 0x8008745a
- 	TIOCSWINSZ                        = 0x80087467
- 	TIOCUCNTL                         = 0x80047466
-+	TIOCUCNTL_CBRK                    = 0x7a
-+	TIOCUCNTL_SBRK                    = 0x7b
- 	TOSTOP                            = 0x400000
-+	UTIME_NOW                         = -0x2
-+	UTIME_OMIT                        = -0x1
- 	VDISCARD                          = 0xf
- 	VDSUSP                            = 0xb
- 	VEOF                              = 0x0
-@@ -1301,6 +1457,18 @@ const (
- 	VKILL                             = 0x5
- 	VLNEXT                            = 0xe
- 	VMIN                              = 0x10
-+	VM_ANONMIN                        = 0x7
-+	VM_LOADAVG                        = 0x2
-+	VM_MAXID                          = 0xc
-+	VM_MAXSLP                         = 0xa
-+	VM_METER                          = 0x1
-+	VM_NKMEMPAGES                     = 0x6
-+	VM_PSSTRINGS                      = 0x3
-+	VM_SWAPENCRYPT                    = 0x5
-+	VM_USPACE                         = 0xb
-+	VM_UVMEXP                         = 0x4
-+	VM_VNODEMIN                       = 0x9
-+	VM_VTEXTMIN                       = 0x8
- 	VQUIT                             = 0x9
- 	VREPRINT                          = 0x6
- 	VSTART                            = 0xc
-@@ -1313,8 +1481,8 @@ const (
- 	WCONTINUED                        = 0x8
- 	WCOREFLAG                         = 0x80
- 	WNOHANG                           = 0x1
--	WSTOPPED                          = 0x7f
- 	WUNTRACED                         = 0x2
-+	XCASE                             = 0x1000000
- )
- 
- // Errors
-@@ -1328,6 +1496,7 @@ const (
- 	EALREADY        = syscall.Errno(0x25)
- 	EAUTH           = syscall.Errno(0x50)
- 	EBADF           = syscall.Errno(0x9)
-+	EBADMSG         = syscall.Errno(0x5c)
- 	EBADRPC         = syscall.Errno(0x48)
- 	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x58)
-@@ -1354,7 +1523,7 @@ const (
- 	EIPSEC          = syscall.Errno(0x52)
- 	EISCONN         = syscall.Errno(0x38)
- 	EISDIR          = syscall.Errno(0x15)
--	ELAST           = syscall.Errno(0x5b)
-+	ELAST           = syscall.Errno(0x5f)
- 	ELOOP           = syscall.Errno(0x3e)
- 	EMEDIUMTYPE     = syscall.Errno(0x56)
- 	EMFILE          = syscall.Errno(0x18)
-@@ -1382,12 +1551,14 @@ const (
- 	ENOTCONN        = syscall.Errno(0x39)
- 	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x42)
-+	ENOTRECOVERABLE = syscall.Errno(0x5d)
- 	ENOTSOCK        = syscall.Errno(0x26)
- 	ENOTSUP         = syscall.Errno(0x5b)
- 	ENOTTY          = syscall.Errno(0x19)
- 	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x2d)
- 	EOVERFLOW       = syscall.Errno(0x57)
-+	EOWNERDEAD      = syscall.Errno(0x5e)
- 	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x2e)
- 	EPIPE           = syscall.Errno(0x20)
-@@ -1395,6 +1566,7 @@ const (
- 	EPROCUNAVAIL    = syscall.Errno(0x4c)
- 	EPROGMISMATCH   = syscall.Errno(0x4b)
- 	EPROGUNAVAIL    = syscall.Errno(0x4a)
-+	EPROTO          = syscall.Errno(0x5f)
- 	EPROTONOSUPPORT = syscall.Errno(0x2b)
- 	EPROTOTYPE      = syscall.Errno(0x29)
- 	ERANGE          = syscall.Errno(0x22)
-@@ -1452,132 +1624,144 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "IPsec processing failure",
--	83: "attribute not found",
--	84: "illegal byte sequence",
--	85: "no medium found",
--	86: "wrong medium type",
--	87: "value too large to be stored in data type",
--	88: "operation canceled",
--	89: "identifier removed",
--	90: "no message of desired type",
--	91: "not supported",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disk quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC program not available"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIPSEC", "IPsec processing failure"},
-+	{83, "ENOATTR", "attribute not found"},
-+	{84, "EILSEQ", "illegal byte sequence"},
-+	{85, "ENOMEDIUM", "no medium found"},
-+	{86, "EMEDIUMTYPE", "wrong medium type"},
-+	{87, "EOVERFLOW", "value too large to be stored in data type"},
-+	{88, "ECANCELED", "operation canceled"},
-+	{89, "EIDRM", "identifier removed"},
-+	{90, "ENOMSG", "no message of desired type"},
-+	{91, "ENOTSUP", "not supported"},
-+	{92, "EBADMSG", "bad message"},
-+	{93, "ENOTRECOVERABLE", "state not recoverable"},
-+	{94, "EOWNERDEAD", "previous owner died"},
-+	{95, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "thread AST",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-index 3ed0b260..7aa796a6 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-@@ -1,11 +1,11 @@
- // mkerrors.sh
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
--
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs -- _const.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,openbsd
- 
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- _const.go
-+
- package unix
- 
- import "syscall"
-@@ -147,6 +147,7 @@ const (
- 	CFLUSH                            = 0xf
- 	CLOCAL                            = 0x8000
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -157,6 +158,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DIOCOSFPFLUSH                     = 0x2000444e
-@@ -441,6 +444,7 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
-@@ -859,6 +863,10 @@ const (
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LCNT_OVERLOAD_FLUSH               = 0x6
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
-@@ -873,10 +881,11 @@ const (
- 	MADV_WILLNEED                     = 0x3
- 	MAP_ANON                          = 0x1000
- 	MAP_ANONYMOUS                     = 0x1000
-+	MAP_CONCEAL                       = 0x8000
- 	MAP_COPY                          = 0x2
- 	MAP_FILE                          = 0x0
- 	MAP_FIXED                         = 0x10
--	MAP_FLAGMASK                      = 0x3ff7
-+	MAP_FLAGMASK                      = 0xfff7
- 	MAP_HASSEMAPHORE                  = 0x0
- 	MAP_INHERIT                       = 0x0
- 	MAP_INHERIT_COPY                  = 0x1
-@@ -888,9 +897,36 @@ const (
- 	MAP_PRIVATE                       = 0x2
- 	MAP_RENAME                        = 0x0
- 	MAP_SHARED                        = 0x1
-+	MAP_STACK                         = 0x4000
- 	MAP_TRYFIXED                      = 0x0
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DELEXPORT                     = 0x20000
-+	MNT_DOOMED                        = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_FORCE                         = 0x80000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_NOATIME                       = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x4000000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0x400ffff
-+	MNT_WAIT                          = 0x1
-+	MNT_WANTRDWR                      = 0x2000000
-+	MNT_WXALLOWED                     = 0x800
- 	MSG_BCAST                         = 0x100
- 	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CTRUNC                        = 0x20
-@@ -913,6 +949,7 @@ const (
- 	NET_RT_MAXID                      = 0x6
- 	NET_RT_STATS                      = 0x4
- 	NET_RT_TABLE                      = 0x5
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
- 	NOTE_ATTRIB                       = 0x8
- 	NOTE_CHILD                        = 0x4
-@@ -1213,6 +1250,34 @@ const (
- 	SO_TIMESTAMP                      = 0x800
- 	SO_TYPE                           = 0x1008
- 	SO_USELOOPBACK                    = 0x40
-+	S_BLKSIZE                         = 0x200
-+	S_IEXEC                           = 0x40
-+	S_IFBLK                           = 0x6000
-+	S_IFCHR                           = 0x2000
-+	S_IFDIR                           = 0x4000
-+	S_IFIFO                           = 0x1000
-+	S_IFLNK                           = 0xa000
-+	S_IFMT                            = 0xf000
-+	S_IFREG                           = 0x8000
-+	S_IFSOCK                          = 0xc000
-+	S_IREAD                           = 0x100
-+	S_IRGRP                           = 0x20
-+	S_IROTH                           = 0x4
-+	S_IRUSR                           = 0x100
-+	S_IRWXG                           = 0x38
-+	S_IRWXO                           = 0x7
-+	S_IRWXU                           = 0x1c0
-+	S_ISGID                           = 0x400
-+	S_ISTXT                           = 0x200
-+	S_ISUID                           = 0x800
-+	S_ISVTX                           = 0x200
-+	S_IWGRP                           = 0x10
-+	S_IWOTH                           = 0x2
-+	S_IWRITE                          = 0x80
-+	S_IWUSR                           = 0x80
-+	S_IXGRP                           = 0x8
-+	S_IXOTH                           = 0x1
-+	S_IXUSR                           = 0x40
- 	TCIFLUSH                          = 0x1
- 	TCIOFLUSH                         = 0x3
- 	TCOFLUSH                          = 0x2
-@@ -1455,132 +1520,140 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "IPsec processing failure",
--	83: "attribute not found",
--	84: "illegal byte sequence",
--	85: "no medium found",
--	86: "wrong medium type",
--	87: "value too large to be stored in data type",
--	88: "operation canceled",
--	89: "identifier removed",
--	90: "no message of desired type",
--	91: "not supported",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disk quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC program not available"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIPSEC", "IPsec processing failure"},
-+	{83, "ENOATTR", "attribute not found"},
-+	{84, "EILSEQ", "illegal byte sequence"},
-+	{85, "ENOMEDIUM", "no medium found"},
-+	{86, "EMEDIUMTYPE", "wrong medium type"},
-+	{87, "EOVERFLOW", "value too large to be stored in data type"},
-+	{88, "ECANCELED", "operation canceled"},
-+	{89, "EIDRM", "identifier removed"},
-+	{90, "ENOMSG", "no message of desired type"},
-+	{91, "ELAST", "not supported"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "thread AST",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-similarity index 76%
-copy from vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-index 1758ecca..1792d3f1 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,openbsd
-+// +build arm64,openbsd
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -45,6 +45,7 @@ const (
- 	AF_SNA                            = 0xb
- 	AF_UNIX                           = 0x1
- 	AF_UNSPEC                         = 0x0
-+	ALTWERASE                         = 0x200
- 	ARPHRD_ETHER                      = 0x1
- 	ARPHRD_FRELAY                     = 0xf
- 	ARPHRD_IEEE1394                   = 0x18
-@@ -107,6 +108,9 @@ const (
- 	BPF_DIRECTION_IN                  = 0x1
- 	BPF_DIRECTION_OUT                 = 0x2
- 	BPF_DIV                           = 0x30
-+	BPF_FILDROP_CAPTURE               = 0x1
-+	BPF_FILDROP_DROP                  = 0x2
-+	BPF_FILDROP_PASS                  = 0x0
- 	BPF_H                             = 0x8
- 	BPF_IMM                           = 0x0
- 	BPF_IND                           = 0x40
-@@ -146,7 +150,14 @@ const (
- 	BRKINT                            = 0x2
- 	CFLUSH                            = 0xf
- 	CLOCAL                            = 0x8000
-+	CLOCK_BOOTTIME                    = 0x6
-+	CLOCK_MONOTONIC                   = 0x3
-+	CLOCK_PROCESS_CPUTIME_ID          = 0x2
-+	CLOCK_REALTIME                    = 0x0
-+	CLOCK_THREAD_CPUTIME_ID           = 0x4
-+	CLOCK_UPTIME                      = 0x5
- 	CREAD                             = 0x800
-+	CRTSCTS                           = 0x10000
- 	CS5                               = 0x0
- 	CS6                               = 0x100
- 	CS7                               = 0x200
-@@ -157,6 +168,8 @@ const (
- 	CSTOP                             = 0x13
- 	CSTOPB                            = 0x400
- 	CSUSP                             = 0x1a
-+	CTL_HW                            = 0x6
-+	CTL_KERN                          = 0x1
- 	CTL_MAXNAME                       = 0xc
- 	CTL_NET                           = 0x4
- 	DIOCOSFPFLUSH                     = 0x2000444e
-@@ -175,6 +188,7 @@ const (
- 	DLT_LOOP                          = 0xc
- 	DLT_MPLS                          = 0xdb
- 	DLT_NULL                          = 0x0
-+	DLT_OPENFLOW                      = 0x10b
- 	DLT_PFLOG                         = 0x75
- 	DLT_PFSYNC                        = 0x12
- 	DLT_PPP                           = 0x9
-@@ -185,6 +199,23 @@ const (
- 	DLT_RAW                           = 0xe
- 	DLT_SLIP                          = 0x8
- 	DLT_SLIP_BSDOS                    = 0xf
-+	DLT_USBPCAP                       = 0xf9
-+	DLT_USER0                         = 0x93
-+	DLT_USER1                         = 0x94
-+	DLT_USER10                        = 0x9d
-+	DLT_USER11                        = 0x9e
-+	DLT_USER12                        = 0x9f
-+	DLT_USER13                        = 0xa0
-+	DLT_USER14                        = 0xa1
-+	DLT_USER15                        = 0xa2
-+	DLT_USER2                         = 0x95
-+	DLT_USER3                         = 0x96
-+	DLT_USER4                         = 0x97
-+	DLT_USER5                         = 0x98
-+	DLT_USER6                         = 0x99
-+	DLT_USER7                         = 0x9a
-+	DLT_USER8                         = 0x9b
-+	DLT_USER9                         = 0x9c
- 	DT_BLK                            = 0x6
- 	DT_CHR                            = 0x2
- 	DT_DIR                            = 0x4
-@@ -324,6 +355,7 @@ const (
- 	ETHERTYPE_OS9NET                  = 0x7009
- 	ETHERTYPE_PACER                   = 0x80c6
- 	ETHERTYPE_PAE                     = 0x888e
-+	ETHERTYPE_PBB                     = 0x88e7
- 	ETHERTYPE_PCS                     = 0x4242
- 	ETHERTYPE_PLANNING                = 0x8044
- 	ETHERTYPE_PPP                     = 0x880b
-@@ -398,27 +430,38 @@ const (
- 	ETHER_CRC_POLY_LE                 = 0xedb88320
- 	ETHER_HDR_LEN                     = 0xe
- 	ETHER_MAX_DIX_LEN                 = 0x600
-+	ETHER_MAX_HARDMTU_LEN             = 0xff9b
- 	ETHER_MAX_LEN                     = 0x5ee
- 	ETHER_MIN_LEN                     = 0x40
- 	ETHER_TYPE_LEN                    = 0x2
- 	ETHER_VLAN_ENCAP_LEN              = 0x4
- 	EVFILT_AIO                        = -0x3
-+	EVFILT_DEVICE                     = -0x8
- 	EVFILT_PROC                       = -0x5
- 	EVFILT_READ                       = -0x1
- 	EVFILT_SIGNAL                     = -0x6
--	EVFILT_SYSCOUNT                   = 0x7
-+	EVFILT_SYSCOUNT                   = 0x8
- 	EVFILT_TIMER                      = -0x7
- 	EVFILT_VNODE                      = -0x4
- 	EVFILT_WRITE                      = -0x2
-+	EVL_ENCAPLEN                      = 0x4
-+	EVL_PRIO_BITS                     = 0xd
-+	EVL_PRIO_MAX                      = 0x7
-+	EVL_VLID_MASK                     = 0xfff
-+	EVL_VLID_MAX                      = 0xffe
-+	EVL_VLID_MIN                      = 0x1
-+	EVL_VLID_NULL                     = 0x0
- 	EV_ADD                            = 0x1
- 	EV_CLEAR                          = 0x20
- 	EV_DELETE                         = 0x2
- 	EV_DISABLE                        = 0x8
-+	EV_DISPATCH                       = 0x80
- 	EV_ENABLE                         = 0x4
- 	EV_EOF                            = 0x8000
- 	EV_ERROR                          = 0x4000
- 	EV_FLAG1                          = 0x2000
- 	EV_ONESHOT                        = 0x10
-+	EV_RECEIPT                        = 0x40
- 	EV_SYSFLAGS                       = 0xf000
- 	EXTA                              = 0x4b00
- 	EXTB                              = 0x9600
-@@ -432,6 +475,7 @@ const (
- 	F_GETFL                           = 0x3
- 	F_GETLK                           = 0x7
- 	F_GETOWN                          = 0x5
-+	F_ISATTY                          = 0xb
- 	F_OK                              = 0x0
- 	F_RDLCK                           = 0x1
- 	F_SETFD                           = 0x2
-@@ -442,13 +486,13 @@ const (
- 	F_UNLCK                           = 0x2
- 	F_WRLCK                           = 0x3
- 	HUPCL                             = 0x4000
-+	HW_MACHINE                        = 0x1
- 	ICANON                            = 0x100
- 	ICMP6_FILTER                      = 0x12
- 	ICRNL                             = 0x100
- 	IEXTEN                            = 0x400
- 	IFAN_ARRIVAL                      = 0x0
- 	IFAN_DEPARTURE                    = 0x1
--	IFA_ROUTE                         = 0x1
- 	IFF_ALLMULTI                      = 0x200
- 	IFF_BROADCAST                     = 0x2
- 	IFF_CANTCHANGE                    = 0x8e52
-@@ -459,12 +503,12 @@ const (
- 	IFF_LOOPBACK                      = 0x8
- 	IFF_MULTICAST                     = 0x8000
- 	IFF_NOARP                         = 0x80
--	IFF_NOTRAILERS                    = 0x20
- 	IFF_OACTIVE                       = 0x400
- 	IFF_POINTOPOINT                   = 0x10
- 	IFF_PROMISC                       = 0x100
- 	IFF_RUNNING                       = 0x40
- 	IFF_SIMPLEX                       = 0x800
-+	IFF_STATICARP                     = 0x20
- 	IFF_UP                            = 0x1
- 	IFNAMSIZ                          = 0x10
- 	IFT_1822                          = 0x2
-@@ -593,6 +637,7 @@ const (
- 	IFT_LINEGROUP                     = 0xd2
- 	IFT_LOCALTALK                     = 0x2a
- 	IFT_LOOP                          = 0x18
-+	IFT_MBIM                          = 0xfa
- 	IFT_MEDIAMAILOVERIP               = 0x8b
- 	IFT_MFSIGLINK                     = 0xa7
- 	IFT_MIOX25                        = 0x26
-@@ -717,8 +762,6 @@ const (
- 	IPPROTO_AH                        = 0x33
- 	IPPROTO_CARP                      = 0x70
- 	IPPROTO_DIVERT                    = 0x102
--	IPPROTO_DIVERT_INIT               = 0x2
--	IPPROTO_DIVERT_RESP               = 0x1
- 	IPPROTO_DONE                      = 0x101
- 	IPPROTO_DSTOPTS                   = 0x3c
- 	IPPROTO_EGP                       = 0x8
-@@ -775,6 +818,7 @@ const (
- 	IPV6_LEAVE_GROUP                  = 0xd
- 	IPV6_MAXHLIM                      = 0xff
- 	IPV6_MAXPACKET                    = 0xffff
-+	IPV6_MINHOPCOUNT                  = 0x41
- 	IPV6_MMTU                         = 0x500
- 	IPV6_MULTICAST_HOPS               = 0xa
- 	IPV6_MULTICAST_IF                 = 0x9
-@@ -814,12 +858,12 @@ const (
- 	IP_DEFAULT_MULTICAST_LOOP         = 0x1
- 	IP_DEFAULT_MULTICAST_TTL          = 0x1
- 	IP_DF                             = 0x4000
--	IP_DIVERTFL                       = 0x1022
- 	IP_DROP_MEMBERSHIP                = 0xd
- 	IP_ESP_NETWORK_LEVEL              = 0x16
- 	IP_ESP_TRANS_LEVEL                = 0x15
- 	IP_HDRINCL                        = 0x2
- 	IP_IPCOMP_LEVEL                   = 0x1d
-+	IP_IPDEFTTL                       = 0x25
- 	IP_IPSECFLOWINFO                  = 0x24
- 	IP_IPSEC_LOCAL_AUTH               = 0x1b
- 	IP_IPSEC_LOCAL_CRED               = 0x19
-@@ -853,13 +897,19 @@ const (
- 	IP_RETOPTS                        = 0x8
- 	IP_RF                             = 0x8000
- 	IP_RTABLE                         = 0x1021
-+	IP_SENDSRCADDR                    = 0x7
- 	IP_TOS                            = 0x3
- 	IP_TTL                            = 0x4
- 	ISIG                              = 0x80
- 	ISTRIP                            = 0x20
-+	IUCLC                             = 0x1000
- 	IXANY                             = 0x800
- 	IXOFF                             = 0x400
- 	IXON                              = 0x200
-+	KERN_HOSTNAME                     = 0xa
-+	KERN_OSRELEASE                    = 0x2
-+	KERN_OSTYPE                       = 0x1
-+	KERN_VERSION                      = 0x4
- 	LCNT_OVERLOAD_FLUSH               = 0x6
- 	LOCK_EX                           = 0x2
- 	LOCK_NB                           = 0x4
-@@ -873,25 +923,58 @@ const (
- 	MADV_SPACEAVAIL                   = 0x5
- 	MADV_WILLNEED                     = 0x3
- 	MAP_ANON                          = 0x1000
--	MAP_COPY                          = 0x4
-+	MAP_ANONYMOUS                     = 0x1000
-+	MAP_CONCEAL                       = 0x8000
-+	MAP_COPY                          = 0x2
- 	MAP_FILE                          = 0x0
- 	MAP_FIXED                         = 0x10
--	MAP_FLAGMASK                      = 0x1ff7
--	MAP_HASSEMAPHORE                  = 0x200
--	MAP_INHERIT                       = 0x80
-+	MAP_FLAGMASK                      = 0xfff7
-+	MAP_HASSEMAPHORE                  = 0x0
-+	MAP_INHERIT                       = 0x0
- 	MAP_INHERIT_COPY                  = 0x1
--	MAP_INHERIT_DONATE_COPY           = 0x3
- 	MAP_INHERIT_NONE                  = 0x2
- 	MAP_INHERIT_SHARE                 = 0x0
--	MAP_NOEXTEND                      = 0x100
--	MAP_NORESERVE                     = 0x40
-+	MAP_INHERIT_ZERO                  = 0x3
-+	MAP_NOEXTEND                      = 0x0
-+	MAP_NORESERVE                     = 0x0
- 	MAP_PRIVATE                       = 0x2
--	MAP_RENAME                        = 0x20
-+	MAP_RENAME                        = 0x0
- 	MAP_SHARED                        = 0x1
--	MAP_TRYFIXED                      = 0x400
-+	MAP_STACK                         = 0x4000
-+	MAP_TRYFIXED                      = 0x0
- 	MCL_CURRENT                       = 0x1
- 	MCL_FUTURE                        = 0x2
-+	MNT_ASYNC                         = 0x40
-+	MNT_DEFEXPORTED                   = 0x200
-+	MNT_DELEXPORT                     = 0x20000
-+	MNT_DOOMED                        = 0x8000000
-+	MNT_EXPORTANON                    = 0x400
-+	MNT_EXPORTED                      = 0x100
-+	MNT_EXRDONLY                      = 0x80
-+	MNT_FORCE                         = 0x80000
-+	MNT_LAZY                          = 0x3
-+	MNT_LOCAL                         = 0x1000
-+	MNT_NOATIME                       = 0x8000
-+	MNT_NODEV                         = 0x10
-+	MNT_NOEXEC                        = 0x4
-+	MNT_NOPERM                        = 0x20
-+	MNT_NOSUID                        = 0x8
-+	MNT_NOWAIT                        = 0x2
-+	MNT_QUOTA                         = 0x2000
-+	MNT_RDONLY                        = 0x1
-+	MNT_RELOAD                        = 0x40000
-+	MNT_ROOTFS                        = 0x4000
-+	MNT_SOFTDEP                       = 0x4000000
-+	MNT_STALLED                       = 0x100000
-+	MNT_SWAPPABLE                     = 0x200000
-+	MNT_SYNCHRONOUS                   = 0x2
-+	MNT_UPDATE                        = 0x10000
-+	MNT_VISFLAGMASK                   = 0x400ffff
-+	MNT_WAIT                          = 0x1
-+	MNT_WANTRDWR                      = 0x2000000
-+	MNT_WXALLOWED                     = 0x800
- 	MSG_BCAST                         = 0x100
-+	MSG_CMSG_CLOEXEC                  = 0x800
- 	MSG_CTRUNC                        = 0x20
- 	MSG_DONTROUTE                     = 0x4
- 	MSG_DONTWAIT                      = 0x80
-@@ -909,11 +992,15 @@ const (
- 	NET_RT_DUMP                       = 0x1
- 	NET_RT_FLAGS                      = 0x2
- 	NET_RT_IFLIST                     = 0x3
--	NET_RT_MAXID                      = 0x6
-+	NET_RT_IFNAMES                    = 0x6
-+	NET_RT_MAXID                      = 0x7
- 	NET_RT_STATS                      = 0x4
- 	NET_RT_TABLE                      = 0x5
-+	NFDBITS                           = 0x20
- 	NOFLSH                            = 0x80000000
-+	NOKERNINFO                        = 0x2000000
- 	NOTE_ATTRIB                       = 0x8
-+	NOTE_CHANGE                       = 0x1
- 	NOTE_CHILD                        = 0x4
- 	NOTE_DELETE                       = 0x1
- 	NOTE_EOF                          = 0x2
-@@ -932,11 +1019,13 @@ const (
- 	NOTE_TRUNCATE                     = 0x80
- 	NOTE_WRITE                        = 0x2
- 	OCRNL                             = 0x10
-+	OLCUC                             = 0x20
- 	ONLCR                             = 0x2
- 	ONLRET                            = 0x80
- 	ONOCR                             = 0x40
- 	ONOEOT                            = 0x8
- 	OPOST                             = 0x1
-+	OXTABS                            = 0x4
- 	O_ACCMODE                         = 0x3
- 	O_APPEND                          = 0x8
- 	O_ASYNC                           = 0x40
-@@ -974,23 +1063,32 @@ const (
- 	RLIMIT_CPU                        = 0x0
- 	RLIMIT_DATA                       = 0x2
- 	RLIMIT_FSIZE                      = 0x1
-+	RLIMIT_MEMLOCK                    = 0x6
- 	RLIMIT_NOFILE                     = 0x8
-+	RLIMIT_NPROC                      = 0x7
-+	RLIMIT_RSS                        = 0x5
- 	RLIMIT_STACK                      = 0x3
- 	RLIM_INFINITY                     = 0x7fffffffffffffff
- 	RTAX_AUTHOR                       = 0x6
-+	RTAX_BFD                          = 0xb
- 	RTAX_BRD                          = 0x7
-+	RTAX_DNS                          = 0xc
- 	RTAX_DST                          = 0x0
- 	RTAX_GATEWAY                      = 0x1
- 	RTAX_GENMASK                      = 0x3
- 	RTAX_IFA                          = 0x5
- 	RTAX_IFP                          = 0x4
- 	RTAX_LABEL                        = 0xa
--	RTAX_MAX                          = 0xb
-+	RTAX_MAX                          = 0xf
- 	RTAX_NETMASK                      = 0x2
-+	RTAX_SEARCH                       = 0xe
- 	RTAX_SRC                          = 0x8
- 	RTAX_SRCMASK                      = 0x9
-+	RTAX_STATIC                       = 0xd
- 	RTA_AUTHOR                        = 0x40
-+	RTA_BFD                           = 0x800
- 	RTA_BRD                           = 0x80
-+	RTA_DNS                           = 0x1000
- 	RTA_DST                           = 0x1
- 	RTA_GATEWAY                       = 0x2
- 	RTA_GENMASK                       = 0x8
-@@ -998,46 +1096,54 @@ const (
- 	RTA_IFP                           = 0x10
- 	RTA_LABEL                         = 0x400
- 	RTA_NETMASK                       = 0x4
-+	RTA_SEARCH                        = 0x4000
- 	RTA_SRC                           = 0x100
- 	RTA_SRCMASK                       = 0x200
-+	RTA_STATIC                        = 0x2000
- 	RTF_ANNOUNCE                      = 0x4000
-+	RTF_BFD                           = 0x1000000
- 	RTF_BLACKHOLE                     = 0x1000
-+	RTF_BROADCAST                     = 0x400000
-+	RTF_CACHED                        = 0x20000
- 	RTF_CLONED                        = 0x10000
- 	RTF_CLONING                       = 0x100
-+	RTF_CONNECTED                     = 0x800000
- 	RTF_DONE                          = 0x40
- 	RTF_DYNAMIC                       = 0x10
--	RTF_FMASK                         = 0x10f808
-+	RTF_FMASK                         = 0x110fc08
- 	RTF_GATEWAY                       = 0x2
- 	RTF_HOST                          = 0x4
- 	RTF_LLINFO                        = 0x400
--	RTF_MASK                          = 0x80
-+	RTF_LOCAL                         = 0x200000
- 	RTF_MODIFIED                      = 0x20
- 	RTF_MPATH                         = 0x40000
- 	RTF_MPLS                          = 0x100000
-+	RTF_MULTICAST                     = 0x200
- 	RTF_PERMANENT_ARP                 = 0x2000
- 	RTF_PROTO1                        = 0x8000
- 	RTF_PROTO2                        = 0x4000
- 	RTF_PROTO3                        = 0x2000
- 	RTF_REJECT                        = 0x8
--	RTF_SOURCE                        = 0x20000
- 	RTF_STATIC                        = 0x800
--	RTF_TUNNEL                        = 0x100000
- 	RTF_UP                            = 0x1
- 	RTF_USETRAILERS                   = 0x8000
--	RTF_XRESOLVE                      = 0x200
-+	RTM_80211INFO                     = 0x15
- 	RTM_ADD                           = 0x1
-+	RTM_BFD                           = 0x12
- 	RTM_CHANGE                        = 0x3
-+	RTM_CHGADDRATTR                   = 0x14
- 	RTM_DELADDR                       = 0xd
- 	RTM_DELETE                        = 0x2
- 	RTM_DESYNC                        = 0x10
- 	RTM_GET                           = 0x4
- 	RTM_IFANNOUNCE                    = 0xf
- 	RTM_IFINFO                        = 0xe
--	RTM_LOCK                          = 0x8
-+	RTM_INVALIDATE                    = 0x11
- 	RTM_LOSING                        = 0x5
- 	RTM_MAXSIZE                       = 0x800
- 	RTM_MISS                          = 0x7
- 	RTM_NEWADDR                       = 0xc
-+	RTM_PROPOSAL                      = 0x13
- 	RTM_REDIRECT                      = 0x6
- 	RTM_RESOLVE                       = 0xb
- 	RTM_RTTUNIT                       = 0xf4240
-@@ -1050,6 +1156,8 @@ const (
- 	RTV_RTTVAR                        = 0x80
- 	RTV_SPIPE                         = 0x10
- 	RTV_SSTHRESH                      = 0x20
-+	RT_TABLEID_BITS                   = 0x8
-+	RT_TABLEID_MASK                   = 0xff
- 	RT_TABLEID_MAX                    = 0xff
- 	RUSAGE_CHILDREN                   = -0x1
- 	RUSAGE_SELF                       = 0x0
-@@ -1062,55 +1170,57 @@ const (
- 	SIOCADDMULTI                      = 0x80206931
- 	SIOCAIFADDR                       = 0x8040691a
- 	SIOCAIFGROUP                      = 0x80286987
--	SIOCALIFADDR                      = 0x8218691c
- 	SIOCATMARK                        = 0x40047307
--	SIOCBRDGADD                       = 0x8058693c
--	SIOCBRDGADDS                      = 0x80586941
--	SIOCBRDGARL                       = 0x806e694d
-+	SIOCBRDGADD                       = 0x8060693c
-+	SIOCBRDGADDL                      = 0x80606949
-+	SIOCBRDGADDS                      = 0x80606941
-+	SIOCBRDGARL                       = 0x808c694d
- 	SIOCBRDGDADDR                     = 0x81286947
--	SIOCBRDGDEL                       = 0x8058693d
--	SIOCBRDGDELS                      = 0x80586942
--	SIOCBRDGFLUSH                     = 0x80586948
--	SIOCBRDGFRL                       = 0x806e694e
--	SIOCBRDGGCACHE                    = 0xc0146941
--	SIOCBRDGGFD                       = 0xc0146952
--	SIOCBRDGGHT                       = 0xc0146951
--	SIOCBRDGGIFFLGS                   = 0xc058693e
--	SIOCBRDGGMA                       = 0xc0146953
-+	SIOCBRDGDEL                       = 0x8060693d
-+	SIOCBRDGDELS                      = 0x80606942
-+	SIOCBRDGFLUSH                     = 0x80606948
-+	SIOCBRDGFRL                       = 0x808c694e
-+	SIOCBRDGGCACHE                    = 0xc0186941
-+	SIOCBRDGGFD                       = 0xc0186952
-+	SIOCBRDGGHT                       = 0xc0186951
-+	SIOCBRDGGIFFLGS                   = 0xc060693e
-+	SIOCBRDGGMA                       = 0xc0186953
- 	SIOCBRDGGPARAM                    = 0xc0406958
--	SIOCBRDGGPRI                      = 0xc0146950
-+	SIOCBRDGGPRI                      = 0xc0186950
- 	SIOCBRDGGRL                       = 0xc030694f
--	SIOCBRDGGSIFS                     = 0xc058693c
--	SIOCBRDGGTO                       = 0xc0146946
--	SIOCBRDGIFS                       = 0xc0586942
-+	SIOCBRDGGTO                       = 0xc0186946
-+	SIOCBRDGIFS                       = 0xc0606942
- 	SIOCBRDGRTS                       = 0xc0206943
- 	SIOCBRDGSADDR                     = 0xc1286944
--	SIOCBRDGSCACHE                    = 0x80146940
--	SIOCBRDGSFD                       = 0x80146952
--	SIOCBRDGSHT                       = 0x80146951
--	SIOCBRDGSIFCOST                   = 0x80586955
--	SIOCBRDGSIFFLGS                   = 0x8058693f
--	SIOCBRDGSIFPRIO                   = 0x80586954
--	SIOCBRDGSMA                       = 0x80146953
--	SIOCBRDGSPRI                      = 0x80146950
--	SIOCBRDGSPROTO                    = 0x8014695a
--	SIOCBRDGSTO                       = 0x80146945
--	SIOCBRDGSTXHC                     = 0x80146959
-+	SIOCBRDGSCACHE                    = 0x80186940
-+	SIOCBRDGSFD                       = 0x80186952
-+	SIOCBRDGSHT                       = 0x80186951
-+	SIOCBRDGSIFCOST                   = 0x80606955
-+	SIOCBRDGSIFFLGS                   = 0x8060693f
-+	SIOCBRDGSIFPRIO                   = 0x80606954
-+	SIOCBRDGSIFPROT                   = 0x8060694a
-+	SIOCBRDGSMA                       = 0x80186953
-+	SIOCBRDGSPRI                      = 0x80186950
-+	SIOCBRDGSPROTO                    = 0x8018695a
-+	SIOCBRDGSTO                       = 0x80186945
-+	SIOCBRDGSTXHC                     = 0x80186959
-+	SIOCDELLABEL                      = 0x80206997
- 	SIOCDELMULTI                      = 0x80206932
- 	SIOCDIFADDR                       = 0x80206919
- 	SIOCDIFGROUP                      = 0x80286989
-+	SIOCDIFPARENT                     = 0x802069b4
- 	SIOCDIFPHYADDR                    = 0x80206949
--	SIOCDLIFADDR                      = 0x8218691e
-+	SIOCDPWE3NEIGHBOR                 = 0x802069de
-+	SIOCDVNETID                       = 0x802069af
- 	SIOCGETKALIVE                     = 0xc01869a4
- 	SIOCGETLABEL                      = 0x8020699a
-+	SIOCGETMPWCFG                     = 0xc02069ae
- 	SIOCGETPFLOW                      = 0xc02069fe
- 	SIOCGETPFSYNC                     = 0xc02069f8
- 	SIOCGETSGCNT                      = 0xc0207534
- 	SIOCGETVIFCNT                     = 0xc0287533
- 	SIOCGETVLAN                       = 0xc0206990
--	SIOCGHIWAT                        = 0x40047301
- 	SIOCGIFADDR                       = 0xc0206921
--	SIOCGIFASYNCMAP                   = 0xc020697c
- 	SIOCGIFBRDADDR                    = 0xc0206923
- 	SIOCGIFCONF                       = 0xc0106924
- 	SIOCGIFDATA                       = 0xc020691b
-@@ -1119,40 +1229,52 @@ const (
- 	SIOCGIFFLAGS                      = 0xc0206911
- 	SIOCGIFGATTR                      = 0xc028698b
- 	SIOCGIFGENERIC                    = 0xc020693a
-+	SIOCGIFGLIST                      = 0xc028698d
- 	SIOCGIFGMEMB                      = 0xc028698a
- 	SIOCGIFGROUP                      = 0xc0286988
- 	SIOCGIFHARDMTU                    = 0xc02069a5
--	SIOCGIFMEDIA                      = 0xc0306936
-+	SIOCGIFLLPRIO                     = 0xc02069b6
-+	SIOCGIFMEDIA                      = 0xc0406938
- 	SIOCGIFMETRIC                     = 0xc0206917
- 	SIOCGIFMTU                        = 0xc020697e
- 	SIOCGIFNETMASK                    = 0xc0206925
--	SIOCGIFPDSTADDR                   = 0xc0206948
-+	SIOCGIFPAIR                       = 0xc02069b1
-+	SIOCGIFPARENT                     = 0xc02069b3
- 	SIOCGIFPRIORITY                   = 0xc020699c
--	SIOCGIFPSRCADDR                   = 0xc0206947
- 	SIOCGIFRDOMAIN                    = 0xc02069a0
- 	SIOCGIFRTLABEL                    = 0xc0206983
--	SIOCGIFTIMESLOT                   = 0xc0206986
-+	SIOCGIFRXR                        = 0x802069aa
-+	SIOCGIFSFFPAGE                    = 0xc1126939
- 	SIOCGIFXFLAGS                     = 0xc020699e
--	SIOCGLIFADDR                      = 0xc218691d
- 	SIOCGLIFPHYADDR                   = 0xc218694b
-+	SIOCGLIFPHYDF                     = 0xc02069c2
-+	SIOCGLIFPHYECN                    = 0xc02069c8
- 	SIOCGLIFPHYRTABLE                 = 0xc02069a2
- 	SIOCGLIFPHYTTL                    = 0xc02069a9
--	SIOCGLOWAT                        = 0x40047303
- 	SIOCGPGRP                         = 0x40047309
-+	SIOCGPWE3                         = 0xc0206998
-+	SIOCGPWE3CTRLWORD                 = 0xc02069dc
-+	SIOCGPWE3FAT                      = 0xc02069dd
-+	SIOCGPWE3NEIGHBOR                 = 0xc21869de
- 	SIOCGSPPPPARAMS                   = 0xc0206994
-+	SIOCGTXHPRIO                      = 0xc02069c6
-+	SIOCGUMBINFO                      = 0xc02069be
-+	SIOCGUMBPARAM                     = 0xc02069c0
- 	SIOCGVH                           = 0xc02069f6
-+	SIOCGVNETFLOWID                   = 0xc02069c4
- 	SIOCGVNETID                       = 0xc02069a7
-+	SIOCIFAFATTACH                    = 0x801169ab
-+	SIOCIFAFDETACH                    = 0x801169ac
- 	SIOCIFCREATE                      = 0x8020697a
- 	SIOCIFDESTROY                     = 0x80206979
- 	SIOCIFGCLONERS                    = 0xc0106978
- 	SIOCSETKALIVE                     = 0x801869a3
- 	SIOCSETLABEL                      = 0x80206999
-+	SIOCSETMPWCFG                     = 0x802069ad
- 	SIOCSETPFLOW                      = 0x802069fd
- 	SIOCSETPFSYNC                     = 0x802069f7
- 	SIOCSETVLAN                       = 0x8020698f
--	SIOCSHIWAT                        = 0x80047300
- 	SIOCSIFADDR                       = 0x8020690c
--	SIOCSIFASYNCMAP                   = 0x8020697d
- 	SIOCSIFBRDADDR                    = 0x80206913
- 	SIOCSIFDESCR                      = 0x80206980
- 	SIOCSIFDSTADDR                    = 0x8020690e
-@@ -1160,25 +1282,41 @@ const (
- 	SIOCSIFGATTR                      = 0x8028698c
- 	SIOCSIFGENERIC                    = 0x80206939
- 	SIOCSIFLLADDR                     = 0x8020691f
--	SIOCSIFMEDIA                      = 0xc0206935
-+	SIOCSIFLLPRIO                     = 0x802069b5
-+	SIOCSIFMEDIA                      = 0xc0206937
- 	SIOCSIFMETRIC                     = 0x80206918
- 	SIOCSIFMTU                        = 0x8020697f
- 	SIOCSIFNETMASK                    = 0x80206916
--	SIOCSIFPHYADDR                    = 0x80406946
-+	SIOCSIFPAIR                       = 0x802069b0
-+	SIOCSIFPARENT                     = 0x802069b2
- 	SIOCSIFPRIORITY                   = 0x8020699b
- 	SIOCSIFRDOMAIN                    = 0x8020699f
- 	SIOCSIFRTLABEL                    = 0x80206982
--	SIOCSIFTIMESLOT                   = 0x80206985
- 	SIOCSIFXFLAGS                     = 0x8020699d
- 	SIOCSLIFPHYADDR                   = 0x8218694a
-+	SIOCSLIFPHYDF                     = 0x802069c1
-+	SIOCSLIFPHYECN                    = 0x802069c7
- 	SIOCSLIFPHYRTABLE                 = 0x802069a1
- 	SIOCSLIFPHYTTL                    = 0x802069a8
--	SIOCSLOWAT                        = 0x80047302
- 	SIOCSPGRP                         = 0x80047308
-+	SIOCSPWE3CTRLWORD                 = 0x802069dc
-+	SIOCSPWE3FAT                      = 0x802069dd
-+	SIOCSPWE3NEIGHBOR                 = 0x821869de
- 	SIOCSSPPPPARAMS                   = 0x80206993
-+	SIOCSTXHPRIO                      = 0x802069c5
-+	SIOCSUMBPARAM                     = 0x802069bf
- 	SIOCSVH                           = 0xc02069f5
-+	SIOCSVNETFLOWID                   = 0x802069c3
- 	SIOCSVNETID                       = 0x802069a6
-+	SIOCSWGDPID                       = 0xc018695b
-+	SIOCSWGMAXFLOW                    = 0xc0186960
-+	SIOCSWGMAXGROUP                   = 0xc018695d
-+	SIOCSWSDPID                       = 0x8018695c
-+	SIOCSWSPORTNO                     = 0xc060695f
-+	SOCK_CLOEXEC                      = 0x8000
- 	SOCK_DGRAM                        = 0x2
-+	SOCK_DNS                          = 0x1000
-+	SOCK_NONBLOCK                     = 0x4000
- 	SOCK_RAW                          = 0x3
- 	SOCK_RDM                          = 0x4
- 	SOCK_SEQPACKET                    = 0x5
-@@ -1209,9 +1347,42 @@ const (
- 	SO_TIMESTAMP                      = 0x800
- 	SO_TYPE                           = 0x1008
- 	SO_USELOOPBACK                    = 0x40
-+	SO_ZEROIZE                        = 0x2000
-+	S_BLKSIZE                         = 0x200
-+	S_IEXEC                           = 0x40
-+	S_IFBLK                           = 0x6000
-+	S_IFCHR                           = 0x2000
-+	S_IFDIR                           = 0x4000
-+	S_IFIFO                           = 0x1000
-+	S_IFLNK                           = 0xa000
-+	S_IFMT                            = 0xf000
-+	S_IFREG                           = 0x8000
-+	S_IFSOCK                          = 0xc000
-+	S_IREAD                           = 0x100
-+	S_IRGRP                           = 0x20
-+	S_IROTH                           = 0x4
-+	S_IRUSR                           = 0x100
-+	S_IRWXG                           = 0x38
-+	S_IRWXO                           = 0x7
-+	S_IRWXU                           = 0x1c0
-+	S_ISGID                           = 0x400
-+	S_ISTXT                           = 0x200
-+	S_ISUID                           = 0x800
-+	S_ISVTX                           = 0x200
-+	S_IWGRP                           = 0x10
-+	S_IWOTH                           = 0x2
-+	S_IWRITE                          = 0x80
-+	S_IWUSR                           = 0x80
-+	S_IXGRP                           = 0x8
-+	S_IXOTH                           = 0x1
-+	S_IXUSR                           = 0x40
- 	TCIFLUSH                          = 0x1
-+	TCIOFF                            = 0x3
- 	TCIOFLUSH                         = 0x3
-+	TCION                             = 0x4
- 	TCOFLUSH                          = 0x2
-+	TCOOFF                            = 0x1
-+	TCOON                             = 0x2
- 	TCP_MAXBURST                      = 0x4
- 	TCP_MAXSEG                        = 0x2
- 	TCP_MAXWIN                        = 0xffff
-@@ -1221,11 +1392,14 @@ const (
- 	TCP_MSS                           = 0x200
- 	TCP_NODELAY                       = 0x1
- 	TCP_NOPUSH                        = 0x10
--	TCP_NSTATES                       = 0xb
- 	TCP_SACK_ENABLE                   = 0x8
- 	TCSAFLUSH                         = 0x2
-+	TIMER_ABSTIME                     = 0x1
-+	TIMER_RELTIME                     = 0x0
- 	TIOCCBRK                          = 0x2000747a
- 	TIOCCDTR                          = 0x20007478
-+	TIOCCHKVERAUTH                    = 0x2000741e
-+	TIOCCLRVERAUTH                    = 0x2000741d
- 	TIOCCONS                          = 0x80047462
- 	TIOCDRAIN                         = 0x2000745e
- 	TIOCEXCL                          = 0x2000740d
-@@ -1280,17 +1454,21 @@ const (
- 	TIOCSETAF                         = 0x802c7416
- 	TIOCSETAW                         = 0x802c7415
- 	TIOCSETD                          = 0x8004741b
-+	TIOCSETVERAUTH                    = 0x8004741c
- 	TIOCSFLAGS                        = 0x8004745c
- 	TIOCSIG                           = 0x8004745f
- 	TIOCSPGRP                         = 0x80047476
- 	TIOCSTART                         = 0x2000746e
--	TIOCSTAT                          = 0x80047465
--	TIOCSTI                           = 0x80017472
-+	TIOCSTAT                          = 0x20007465
- 	TIOCSTOP                          = 0x2000746f
- 	TIOCSTSTAMP                       = 0x8008745a
- 	TIOCSWINSZ                        = 0x80087467
- 	TIOCUCNTL                         = 0x80047466
-+	TIOCUCNTL_CBRK                    = 0x7a
-+	TIOCUCNTL_SBRK                    = 0x7b
- 	TOSTOP                            = 0x400000
-+	UTIME_NOW                         = -0x2
-+	UTIME_OMIT                        = -0x1
- 	VDISCARD                          = 0xf
- 	VDSUSP                            = 0xb
- 	VEOF                              = 0x0
-@@ -1301,6 +1479,19 @@ const (
- 	VKILL                             = 0x5
- 	VLNEXT                            = 0xe
- 	VMIN                              = 0x10
-+	VM_ANONMIN                        = 0x7
-+	VM_LOADAVG                        = 0x2
-+	VM_MALLOC_CONF                    = 0xc
-+	VM_MAXID                          = 0xd
-+	VM_MAXSLP                         = 0xa
-+	VM_METER                          = 0x1
-+	VM_NKMEMPAGES                     = 0x6
-+	VM_PSSTRINGS                      = 0x3
-+	VM_SWAPENCRYPT                    = 0x5
-+	VM_USPACE                         = 0xb
-+	VM_UVMEXP                         = 0x4
-+	VM_VNODEMIN                       = 0x9
-+	VM_VTEXTMIN                       = 0x8
- 	VQUIT                             = 0x9
- 	VREPRINT                          = 0x6
- 	VSTART                            = 0xc
-@@ -1313,8 +1504,8 @@ const (
- 	WCONTINUED                        = 0x8
- 	WCOREFLAG                         = 0x80
- 	WNOHANG                           = 0x1
--	WSTOPPED                          = 0x7f
- 	WUNTRACED                         = 0x2
-+	XCASE                             = 0x1000000
- )
- 
- // Errors
-@@ -1328,6 +1519,7 @@ const (
- 	EALREADY        = syscall.Errno(0x25)
- 	EAUTH           = syscall.Errno(0x50)
- 	EBADF           = syscall.Errno(0x9)
-+	EBADMSG         = syscall.Errno(0x5c)
- 	EBADRPC         = syscall.Errno(0x48)
- 	EBUSY           = syscall.Errno(0x10)
- 	ECANCELED       = syscall.Errno(0x58)
-@@ -1354,7 +1546,7 @@ const (
- 	EIPSEC          = syscall.Errno(0x52)
- 	EISCONN         = syscall.Errno(0x38)
- 	EISDIR          = syscall.Errno(0x15)
--	ELAST           = syscall.Errno(0x5b)
-+	ELAST           = syscall.Errno(0x5f)
- 	ELOOP           = syscall.Errno(0x3e)
- 	EMEDIUMTYPE     = syscall.Errno(0x56)
- 	EMFILE          = syscall.Errno(0x18)
-@@ -1382,12 +1574,14 @@ const (
- 	ENOTCONN        = syscall.Errno(0x39)
- 	ENOTDIR         = syscall.Errno(0x14)
- 	ENOTEMPTY       = syscall.Errno(0x42)
-+	ENOTRECOVERABLE = syscall.Errno(0x5d)
- 	ENOTSOCK        = syscall.Errno(0x26)
- 	ENOTSUP         = syscall.Errno(0x5b)
- 	ENOTTY          = syscall.Errno(0x19)
- 	ENXIO           = syscall.Errno(0x6)
- 	EOPNOTSUPP      = syscall.Errno(0x2d)
- 	EOVERFLOW       = syscall.Errno(0x57)
-+	EOWNERDEAD      = syscall.Errno(0x5e)
- 	EPERM           = syscall.Errno(0x1)
- 	EPFNOSUPPORT    = syscall.Errno(0x2e)
- 	EPIPE           = syscall.Errno(0x20)
-@@ -1395,6 +1589,7 @@ const (
- 	EPROCUNAVAIL    = syscall.Errno(0x4c)
- 	EPROGMISMATCH   = syscall.Errno(0x4b)
- 	EPROGUNAVAIL    = syscall.Errno(0x4a)
-+	EPROTO          = syscall.Errno(0x5f)
- 	EPROTONOSUPPORT = syscall.Errno(0x2b)
- 	EPROTOTYPE      = syscall.Errno(0x29)
- 	ERANGE          = syscall.Errno(0x22)
-@@ -1452,132 +1647,144 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:  "operation not permitted",
--	2:  "no such file or directory",
--	3:  "no such process",
--	4:  "interrupted system call",
--	5:  "input/output error",
--	6:  "device not configured",
--	7:  "argument list too long",
--	8:  "exec format error",
--	9:  "bad file descriptor",
--	10: "no child processes",
--	11: "resource deadlock avoided",
--	12: "cannot allocate memory",
--	13: "permission denied",
--	14: "bad address",
--	15: "block device required",
--	16: "device busy",
--	17: "file exists",
--	18: "cross-device link",
--	19: "operation not supported by device",
--	20: "not a directory",
--	21: "is a directory",
--	22: "invalid argument",
--	23: "too many open files in system",
--	24: "too many open files",
--	25: "inappropriate ioctl for device",
--	26: "text file busy",
--	27: "file too large",
--	28: "no space left on device",
--	29: "illegal seek",
--	30: "read-only file system",
--	31: "too many links",
--	32: "broken pipe",
--	33: "numerical argument out of domain",
--	34: "result too large",
--	35: "resource temporarily unavailable",
--	36: "operation now in progress",
--	37: "operation already in progress",
--	38: "socket operation on non-socket",
--	39: "destination address required",
--	40: "message too long",
--	41: "protocol wrong type for socket",
--	42: "protocol not available",
--	43: "protocol not supported",
--	44: "socket type not supported",
--	45: "operation not supported",
--	46: "protocol family not supported",
--	47: "address family not supported by protocol family",
--	48: "address already in use",
--	49: "can't assign requested address",
--	50: "network is down",
--	51: "network is unreachable",
--	52: "network dropped connection on reset",
--	53: "software caused connection abort",
--	54: "connection reset by peer",
--	55: "no buffer space available",
--	56: "socket is already connected",
--	57: "socket is not connected",
--	58: "can't send after socket shutdown",
--	59: "too many references: can't splice",
--	60: "connection timed out",
--	61: "connection refused",
--	62: "too many levels of symbolic links",
--	63: "file name too long",
--	64: "host is down",
--	65: "no route to host",
--	66: "directory not empty",
--	67: "too many processes",
--	68: "too many users",
--	69: "disc quota exceeded",
--	70: "stale NFS file handle",
--	71: "too many levels of remote in path",
--	72: "RPC struct is bad",
--	73: "RPC version wrong",
--	74: "RPC prog. not avail",
--	75: "program version wrong",
--	76: "bad procedure for program",
--	77: "no locks available",
--	78: "function not implemented",
--	79: "inappropriate file type or format",
--	80: "authentication error",
--	81: "need authenticator",
--	82: "IPsec processing failure",
--	83: "attribute not found",
--	84: "illegal byte sequence",
--	85: "no medium found",
--	86: "wrong medium type",
--	87: "value too large to be stored in data type",
--	88: "operation canceled",
--	89: "identifier removed",
--	90: "no message of desired type",
--	91: "not supported",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "operation not permitted"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "input/output error"},
-+	{6, "ENXIO", "device not configured"},
-+	{7, "E2BIG", "argument list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file descriptor"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EDEADLK", "resource deadlock avoided"},
-+	{12, "ENOMEM", "cannot allocate memory"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "operation not supported by device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "too many open files in system"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "numerical argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "EAGAIN", "resource temporarily unavailable"},
-+	{36, "EINPROGRESS", "operation now in progress"},
-+	{37, "EALREADY", "operation already in progress"},
-+	{38, "ENOTSOCK", "socket operation on non-socket"},
-+	{39, "EDESTADDRREQ", "destination address required"},
-+	{40, "EMSGSIZE", "message too long"},
-+	{41, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{42, "ENOPROTOOPT", "protocol not available"},
-+	{43, "EPROTONOSUPPORT", "protocol not supported"},
-+	{44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{45, "EOPNOTSUPP", "operation not supported"},
-+	{46, "EPFNOSUPPORT", "protocol family not supported"},
-+	{47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{48, "EADDRINUSE", "address already in use"},
-+	{49, "EADDRNOTAVAIL", "can't assign requested address"},
-+	{50, "ENETDOWN", "network is down"},
-+	{51, "ENETUNREACH", "network is unreachable"},
-+	{52, "ENETRESET", "network dropped connection on reset"},
-+	{53, "ECONNABORTED", "software caused connection abort"},
-+	{54, "ECONNRESET", "connection reset by peer"},
-+	{55, "ENOBUFS", "no buffer space available"},
-+	{56, "EISCONN", "socket is already connected"},
-+	{57, "ENOTCONN", "socket is not connected"},
-+	{58, "ESHUTDOWN", "can't send after socket shutdown"},
-+	{59, "ETOOMANYREFS", "too many references: can't splice"},
-+	{60, "ETIMEDOUT", "operation timed out"},
-+	{61, "ECONNREFUSED", "connection refused"},
-+	{62, "ELOOP", "too many levels of symbolic links"},
-+	{63, "ENAMETOOLONG", "file name too long"},
-+	{64, "EHOSTDOWN", "host is down"},
-+	{65, "EHOSTUNREACH", "no route to host"},
-+	{66, "ENOTEMPTY", "directory not empty"},
-+	{67, "EPROCLIM", "too many processes"},
-+	{68, "EUSERS", "too many users"},
-+	{69, "EDQUOT", "disk quota exceeded"},
-+	{70, "ESTALE", "stale NFS file handle"},
-+	{71, "EREMOTE", "too many levels of remote in path"},
-+	{72, "EBADRPC", "RPC struct is bad"},
-+	{73, "ERPCMISMATCH", "RPC version wrong"},
-+	{74, "EPROGUNAVAIL", "RPC program not available"},
-+	{75, "EPROGMISMATCH", "program version wrong"},
-+	{76, "EPROCUNAVAIL", "bad procedure for program"},
-+	{77, "ENOLCK", "no locks available"},
-+	{78, "ENOSYS", "function not implemented"},
-+	{79, "EFTYPE", "inappropriate file type or format"},
-+	{80, "EAUTH", "authentication error"},
-+	{81, "ENEEDAUTH", "need authenticator"},
-+	{82, "EIPSEC", "IPsec processing failure"},
-+	{83, "ENOATTR", "attribute not found"},
-+	{84, "EILSEQ", "illegal byte sequence"},
-+	{85, "ENOMEDIUM", "no medium found"},
-+	{86, "EMEDIUMTYPE", "wrong medium type"},
-+	{87, "EOVERFLOW", "value too large to be stored in data type"},
-+	{88, "ECANCELED", "operation canceled"},
-+	{89, "EIDRM", "identifier removed"},
-+	{90, "ENOMSG", "no message of desired type"},
-+	{91, "ENOTSUP", "not supported"},
-+	{92, "EBADMSG", "bad message"},
-+	{93, "ENOTRECOVERABLE", "state not recoverable"},
-+	{94, "EOWNERDEAD", "previous owner died"},
-+	{95, "ELAST", "protocol error"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal instruction",
--	5:  "trace/BPT trap",
--	6:  "abort trap",
--	7:  "EMT trap",
--	8:  "floating point exception",
--	9:  "killed",
--	10: "bus error",
--	11: "segmentation fault",
--	12: "bad system call",
--	13: "broken pipe",
--	14: "alarm clock",
--	15: "terminated",
--	16: "urgent I/O condition",
--	17: "stopped (signal)",
--	18: "stopped",
--	19: "continued",
--	20: "child exited",
--	21: "stopped (tty input)",
--	22: "stopped (tty output)",
--	23: "I/O possible",
--	24: "cputime limit exceeded",
--	25: "filesize limit exceeded",
--	26: "virtual timer expired",
--	27: "profiling timer expired",
--	28: "window size changes",
--	29: "information request",
--	30: "user defined signal 1",
--	31: "user defined signal 2",
--	32: "thread AST",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal instruction"},
-+	{5, "SIGTRAP", "trace/BPT trap"},
-+	{6, "SIGABRT", "abort trap"},
-+	{7, "SIGEMT", "EMT trap"},
-+	{8, "SIGFPE", "floating point exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus error"},
-+	{11, "SIGSEGV", "segmentation fault"},
-+	{12, "SIGSYS", "bad system call"},
-+	{13, "SIGPIPE", "broken pipe"},
-+	{14, "SIGALRM", "alarm clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGURG", "urgent I/O condition"},
-+	{17, "SIGSTOP", "suspended (signal)"},
-+	{18, "SIGTSTP", "suspended"},
-+	{19, "SIGCONT", "continued"},
-+	{20, "SIGCHLD", "child exited"},
-+	{21, "SIGTTIN", "stopped (tty input)"},
-+	{22, "SIGTTOU", "stopped (tty output)"},
-+	{23, "SIGIO", "I/O possible"},
-+	{24, "SIGXCPU", "cputime limit exceeded"},
-+	{25, "SIGXFSZ", "filesize limit exceeded"},
-+	{26, "SIGVTALRM", "virtual timer expired"},
-+	{27, "SIGPROF", "profiling timer expired"},
-+	{28, "SIGWINCH", "window size changes"},
-+	{29, "SIGINFO", "information request"},
-+	{30, "SIGUSR1", "user defined signal 1"},
-+	{31, "SIGUSR2", "user defined signal 2"},
-+	{32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-index 81e83d78..46e054cc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-@@ -3,7 +3,7 @@
- 
- // +build amd64,solaris
- 
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
- 
- package unix
-@@ -664,6 +664,9 @@ const (
- 	MS_OLDSYNC                    = 0x0
- 	MS_SYNC                       = 0x4
- 	M_FLUSH                       = 0x86
-+	NAME_MAX                      = 0xff
-+	NEWDEV                        = 0x1
-+	NFDBITS                       = 0x40
- 	NL0                           = 0x0
- 	NL1                           = 0x100
- 	NLDLY                         = 0x100
-@@ -672,6 +675,9 @@ const (
- 	OFDEL                         = 0x80
- 	OFILL                         = 0x40
- 	OLCUC                         = 0x2
-+	OLDDEV                        = 0x0
-+	ONBITSMAJOR                   = 0x7
-+	ONBITSMINOR                   = 0x8
- 	ONLCR                         = 0x4
- 	ONLRET                        = 0x20
- 	ONOCR                         = 0x10
-@@ -991,6 +997,39 @@ const (
- 	SO_USELOOPBACK                = 0x40
- 	SO_VRRP                       = 0x1017
- 	SO_WROFF                      = 0x2
-+	S_ENFMT                       = 0x400
-+	S_IAMB                        = 0x1ff
-+	S_IEXEC                       = 0x40
-+	S_IFBLK                       = 0x6000
-+	S_IFCHR                       = 0x2000
-+	S_IFDIR                       = 0x4000
-+	S_IFDOOR                      = 0xd000
-+	S_IFIFO                       = 0x1000
-+	S_IFLNK                       = 0xa000
-+	S_IFMT                        = 0xf000
-+	S_IFNAM                       = 0x5000
-+	S_IFPORT                      = 0xe000
-+	S_IFREG                       = 0x8000
-+	S_IFSOCK                      = 0xc000
-+	S_INSEM                       = 0x1
-+	S_INSHD                       = 0x2
-+	S_IREAD                       = 0x100
-+	S_IRGRP                       = 0x20
-+	S_IROTH                       = 0x4
-+	S_IRUSR                       = 0x100
-+	S_IRWXG                       = 0x38
-+	S_IRWXO                       = 0x7
-+	S_IRWXU                       = 0x1c0
-+	S_ISGID                       = 0x400
-+	S_ISUID                       = 0x800
-+	S_ISVTX                       = 0x200
-+	S_IWGRP                       = 0x10
-+	S_IWOTH                       = 0x2
-+	S_IWRITE                      = 0x80
-+	S_IWUSR                       = 0x80
-+	S_IXGRP                       = 0x8
-+	S_IXOTH                       = 0x1
-+	S_IXUSR                       = 0x40
- 	TAB0                          = 0x0
- 	TAB1                          = 0x800
- 	TAB2                          = 0x1000
-@@ -1097,6 +1136,8 @@ const (
- 	TIOCSTOP                      = 0x746f
- 	TIOCSWINSZ                    = 0x5467
- 	TOSTOP                        = 0x100
-+	UTIME_NOW                     = -0x1
-+	UTIME_OMIT                    = -0x2
- 	VCEOF                         = 0x8
- 	VCEOL                         = 0x9
- 	VDISCARD                      = 0xd
-@@ -1105,6 +1146,7 @@ const (
- 	VEOL                          = 0x5
- 	VEOL2                         = 0x6
- 	VERASE                        = 0x2
-+	VERASE2                       = 0x11
- 	VINTR                         = 0x0
- 	VKILL                         = 0x3
- 	VLNEXT                        = 0xf
-@@ -1313,171 +1355,179 @@ const (
- )
- 
- // Error table
--var errors = [...]string{
--	1:   "not owner",
--	2:   "no such file or directory",
--	3:   "no such process",
--	4:   "interrupted system call",
--	5:   "I/O error",
--	6:   "no such device or address",
--	7:   "arg list too long",
--	8:   "exec format error",
--	9:   "bad file number",
--	10:  "no child processes",
--	11:  "resource temporarily unavailable",
--	12:  "not enough space",
--	13:  "permission denied",
--	14:  "bad address",
--	15:  "block device required",
--	16:  "device busy",
--	17:  "file exists",
--	18:  "cross-device link",
--	19:  "no such device",
--	20:  "not a directory",
--	21:  "is a directory",
--	22:  "invalid argument",
--	23:  "file table overflow",
--	24:  "too many open files",
--	25:  "inappropriate ioctl for device",
--	26:  "text file busy",
--	27:  "file too large",
--	28:  "no space left on device",
--	29:  "illegal seek",
--	30:  "read-only file system",
--	31:  "too many links",
--	32:  "broken pipe",
--	33:  "argument out of domain",
--	34:  "result too large",
--	35:  "no message of desired type",
--	36:  "identifier removed",
--	37:  "channel number out of range",
--	38:  "level 2 not synchronized",
--	39:  "level 3 halted",
--	40:  "level 3 reset",
--	41:  "link number out of range",
--	42:  "protocol driver not attached",
--	43:  "no CSI structure available",
--	44:  "level 2 halted",
--	45:  "deadlock situation detected/avoided",
--	46:  "no record locks available",
--	47:  "operation canceled",
--	48:  "operation not supported",
--	49:  "disc quota exceeded",
--	50:  "bad exchange descriptor",
--	51:  "bad request descriptor",
--	52:  "message tables full",
--	53:  "anode table overflow",
--	54:  "bad request code",
--	55:  "invalid slot",
--	56:  "file locking deadlock",
--	57:  "bad font file format",
--	58:  "owner of the lock died",
--	59:  "lock is not recoverable",
--	60:  "not a stream device",
--	61:  "no data available",
--	62:  "timer expired",
--	63:  "out of stream resources",
--	64:  "machine is not on the network",
--	65:  "package not installed",
--	66:  "object is remote",
--	67:  "link has been severed",
--	68:  "advertise error",
--	69:  "srmount error",
--	70:  "communication error on send",
--	71:  "protocol error",
--	72:  "locked lock was unmapped ",
--	73:  "facility is not active",
--	74:  "multihop attempted",
--	77:  "not a data message",
--	78:  "file name too long",
--	79:  "value too large for defined data type",
--	80:  "name not unique on network",
--	81:  "file descriptor in bad state",
--	82:  "remote address changed",
--	83:  "can not access a needed shared library",
--	84:  "accessing a corrupted shared library",
--	85:  ".lib section in a.out corrupted",
--	86:  "attempting to link in more shared libraries than system limit",
--	87:  "can not exec a shared library directly",
--	88:  "illegal byte sequence",
--	89:  "operation not applicable",
--	90:  "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS",
--	91:  "error 91",
--	92:  "error 92",
--	93:  "directory not empty",
--	94:  "too many users",
--	95:  "socket operation on non-socket",
--	96:  "destination address required",
--	97:  "message too long",
--	98:  "protocol wrong type for socket",
--	99:  "option not supported by protocol",
--	120: "protocol not supported",
--	121: "socket type not supported",
--	122: "operation not supported on transport endpoint",
--	123: "protocol family not supported",
--	124: "address family not supported by protocol family",
--	125: "address already in use",
--	126: "cannot assign requested address",
--	127: "network is down",
--	128: "network is unreachable",
--	129: "network dropped connection because of reset",
--	130: "software caused connection abort",
--	131: "connection reset by peer",
--	132: "no buffer space available",
--	133: "transport endpoint is already connected",
--	134: "transport endpoint is not connected",
--	143: "cannot send after socket shutdown",
--	144: "too many references: cannot splice",
--	145: "connection timed out",
--	146: "connection refused",
--	147: "host is down",
--	148: "no route to host",
--	149: "operation already in progress",
--	150: "operation now in progress",
--	151: "stale NFS file handle",
-+var errorList = [...]struct {
-+	num  syscall.Errno
-+	name string
-+	desc string
-+}{
-+	{1, "EPERM", "not owner"},
-+	{2, "ENOENT", "no such file or directory"},
-+	{3, "ESRCH", "no such process"},
-+	{4, "EINTR", "interrupted system call"},
-+	{5, "EIO", "I/O error"},
-+	{6, "ENXIO", "no such device or address"},
-+	{7, "E2BIG", "arg list too long"},
-+	{8, "ENOEXEC", "exec format error"},
-+	{9, "EBADF", "bad file number"},
-+	{10, "ECHILD", "no child processes"},
-+	{11, "EAGAIN", "resource temporarily unavailable"},
-+	{12, "ENOMEM", "not enough space"},
-+	{13, "EACCES", "permission denied"},
-+	{14, "EFAULT", "bad address"},
-+	{15, "ENOTBLK", "block device required"},
-+	{16, "EBUSY", "device busy"},
-+	{17, "EEXIST", "file exists"},
-+	{18, "EXDEV", "cross-device link"},
-+	{19, "ENODEV", "no such device"},
-+	{20, "ENOTDIR", "not a directory"},
-+	{21, "EISDIR", "is a directory"},
-+	{22, "EINVAL", "invalid argument"},
-+	{23, "ENFILE", "file table overflow"},
-+	{24, "EMFILE", "too many open files"},
-+	{25, "ENOTTY", "inappropriate ioctl for device"},
-+	{26, "ETXTBSY", "text file busy"},
-+	{27, "EFBIG", "file too large"},
-+	{28, "ENOSPC", "no space left on device"},
-+	{29, "ESPIPE", "illegal seek"},
-+	{30, "EROFS", "read-only file system"},
-+	{31, "EMLINK", "too many links"},
-+	{32, "EPIPE", "broken pipe"},
-+	{33, "EDOM", "argument out of domain"},
-+	{34, "ERANGE", "result too large"},
-+	{35, "ENOMSG", "no message of desired type"},
-+	{36, "EIDRM", "identifier removed"},
-+	{37, "ECHRNG", "channel number out of range"},
-+	{38, "EL2NSYNC", "level 2 not synchronized"},
-+	{39, "EL3HLT", "level 3 halted"},
-+	{40, "EL3RST", "level 3 reset"},
-+	{41, "ELNRNG", "link number out of range"},
-+	{42, "EUNATCH", "protocol driver not attached"},
-+	{43, "ENOCSI", "no CSI structure available"},
-+	{44, "EL2HLT", "level 2 halted"},
-+	{45, "EDEADLK", "deadlock situation detected/avoided"},
-+	{46, "ENOLCK", "no record locks available"},
-+	{47, "ECANCELED", "operation canceled"},
-+	{48, "ENOTSUP", "operation not supported"},
-+	{49, "EDQUOT", "disc quota exceeded"},
-+	{50, "EBADE", "bad exchange descriptor"},
-+	{51, "EBADR", "bad request descriptor"},
-+	{52, "EXFULL", "message tables full"},
-+	{53, "ENOANO", "anode table overflow"},
-+	{54, "EBADRQC", "bad request code"},
-+	{55, "EBADSLT", "invalid slot"},
-+	{56, "EDEADLOCK", "file locking deadlock"},
-+	{57, "EBFONT", "bad font file format"},
-+	{58, "EOWNERDEAD", "owner of the lock died"},
-+	{59, "ENOTRECOVERABLE", "lock is not recoverable"},
-+	{60, "ENOSTR", "not a stream device"},
-+	{61, "ENODATA", "no data available"},
-+	{62, "ETIME", "timer expired"},
-+	{63, "ENOSR", "out of stream resources"},
-+	{64, "ENONET", "machine is not on the network"},
-+	{65, "ENOPKG", "package not installed"},
-+	{66, "EREMOTE", "object is remote"},
-+	{67, "ENOLINK", "link has been severed"},
-+	{68, "EADV", "advertise error"},
-+	{69, "ESRMNT", "srmount error"},
-+	{70, "ECOMM", "communication error on send"},
-+	{71, "EPROTO", "protocol error"},
-+	{72, "ELOCKUNMAPPED", "locked lock was unmapped "},
-+	{73, "ENOTACTIVE", "facility is not active"},
-+	{74, "EMULTIHOP", "multihop attempted"},
-+	{77, "EBADMSG", "not a data message"},
-+	{78, "ENAMETOOLONG", "file name too long"},
-+	{79, "EOVERFLOW", "value too large for defined data type"},
-+	{80, "ENOTUNIQ", "name not unique on network"},
-+	{81, "EBADFD", "file descriptor in bad state"},
-+	{82, "EREMCHG", "remote address changed"},
-+	{83, "ELIBACC", "can not access a needed shared library"},
-+	{84, "ELIBBAD", "accessing a corrupted shared library"},
-+	{85, "ELIBSCN", ".lib section in a.out corrupted"},
-+	{86, "ELIBMAX", "attempting to link in more shared libraries than system limit"},
-+	{87, "ELIBEXEC", "can not exec a shared library directly"},
-+	{88, "EILSEQ", "illegal byte sequence"},
-+	{89, "ENOSYS", "operation not applicable"},
-+	{90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"},
-+	{91, "ERESTART", "error 91"},
-+	{92, "ESTRPIPE", "error 92"},
-+	{93, "ENOTEMPTY", "directory not empty"},
-+	{94, "EUSERS", "too many users"},
-+	{95, "ENOTSOCK", "socket operation on non-socket"},
-+	{96, "EDESTADDRREQ", "destination address required"},
-+	{97, "EMSGSIZE", "message too long"},
-+	{98, "EPROTOTYPE", "protocol wrong type for socket"},
-+	{99, "ENOPROTOOPT", "option not supported by protocol"},
-+	{120, "EPROTONOSUPPORT", "protocol not supported"},
-+	{121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+	{122, "EOPNOTSUPP", "operation not supported on transport endpoint"},
-+	{123, "EPFNOSUPPORT", "protocol family not supported"},
-+	{124, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+	{125, "EADDRINUSE", "address already in use"},
-+	{126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+	{127, "ENETDOWN", "network is down"},
-+	{128, "ENETUNREACH", "network is unreachable"},
-+	{129, "ENETRESET", "network dropped connection because of reset"},
-+	{130, "ECONNABORTED", "software caused connection abort"},
-+	{131, "ECONNRESET", "connection reset by peer"},
-+	{132, "ENOBUFS", "no buffer space available"},
-+	{133, "EISCONN", "transport endpoint is already connected"},
-+	{134, "ENOTCONN", "transport endpoint is not connected"},
-+	{143, "ESHUTDOWN", "cannot send after socket shutdown"},
-+	{144, "ETOOMANYREFS", "too many references: cannot splice"},
-+	{145, "ETIMEDOUT", "connection timed out"},
-+	{146, "ECONNREFUSED", "connection refused"},
-+	{147, "EHOSTDOWN", "host is down"},
-+	{148, "EHOSTUNREACH", "no route to host"},
-+	{149, "EALREADY", "operation already in progress"},
-+	{150, "EINPROGRESS", "operation now in progress"},
-+	{151, "ESTALE", "stale NFS file handle"},
- }
- 
- // Signal table
--var signals = [...]string{
--	1:  "hangup",
--	2:  "interrupt",
--	3:  "quit",
--	4:  "illegal Instruction",
--	5:  "trace/Breakpoint Trap",
--	6:  "abort",
--	7:  "emulation Trap",
--	8:  "arithmetic Exception",
--	9:  "killed",
--	10: "bus Error",
--	11: "segmentation Fault",
--	12: "bad System Call",
--	13: "broken Pipe",
--	14: "alarm Clock",
--	15: "terminated",
--	16: "user Signal 1",
--	17: "user Signal 2",
--	18: "child Status Changed",
--	19: "power-Fail/Restart",
--	20: "window Size Change",
--	21: "urgent Socket Condition",
--	22: "pollable Event",
--	23: "stopped (signal)",
--	24: "stopped (user)",
--	25: "continued",
--	26: "stopped (tty input)",
--	27: "stopped (tty output)",
--	28: "virtual Timer Expired",
--	29: "profiling Timer Expired",
--	30: "cpu Limit Exceeded",
--	31: "file Size Limit Exceeded",
--	32: "no runnable lwp",
--	33: "inter-lwp signal",
--	34: "checkpoint Freeze",
--	35: "checkpoint Thaw",
--	36: "thread Cancellation",
--	37: "resource Lost",
--	38: "resource Control Exceeded",
--	39: "reserved for JVM 1",
--	40: "reserved for JVM 2",
--	41: "information Request",
-+var signalList = [...]struct {
-+	num  syscall.Signal
-+	name string
-+	desc string
-+}{
-+	{1, "SIGHUP", "hangup"},
-+	{2, "SIGINT", "interrupt"},
-+	{3, "SIGQUIT", "quit"},
-+	{4, "SIGILL", "illegal Instruction"},
-+	{5, "SIGTRAP", "trace/Breakpoint Trap"},
-+	{6, "SIGABRT", "abort"},
-+	{7, "SIGEMT", "emulation Trap"},
-+	{8, "SIGFPE", "arithmetic Exception"},
-+	{9, "SIGKILL", "killed"},
-+	{10, "SIGBUS", "bus Error"},
-+	{11, "SIGSEGV", "segmentation Fault"},
-+	{12, "SIGSYS", "bad System Call"},
-+	{13, "SIGPIPE", "broken Pipe"},
-+	{14, "SIGALRM", "alarm Clock"},
-+	{15, "SIGTERM", "terminated"},
-+	{16, "SIGUSR1", "user Signal 1"},
-+	{17, "SIGUSR2", "user Signal 2"},
-+	{18, "SIGCHLD", "child Status Changed"},
-+	{19, "SIGPWR", "power-Fail/Restart"},
-+	{20, "SIGWINCH", "window Size Change"},
-+	{21, "SIGURG", "urgent Socket Condition"},
-+	{22, "SIGIO", "pollable Event"},
-+	{23, "SIGSTOP", "stopped (signal)"},
-+	{24, "SIGTSTP", "stopped (user)"},
-+	{25, "SIGCONT", "continued"},
-+	{26, "SIGTTIN", "stopped (tty input)"},
-+	{27, "SIGTTOU", "stopped (tty output)"},
-+	{28, "SIGVTALRM", "virtual Timer Expired"},
-+	{29, "SIGPROF", "profiling Timer Expired"},
-+	{30, "SIGXCPU", "cpu Limit Exceeded"},
-+	{31, "SIGXFSZ", "file Size Limit Exceeded"},
-+	{32, "SIGWAITING", "no runnable lwp"},
-+	{33, "SIGLWP", "inter-lwp signal"},
-+	{34, "SIGFREEZE", "checkpoint Freeze"},
-+	{35, "SIGTHAW", "checkpoint Thaw"},
-+	{36, "SIGCANCEL", "thread Cancellation"},
-+	{37, "SIGLOST", "resource Lost"},
-+	{38, "SIGXRES", "resource Control Exceeded"},
-+	{39, "SIGJVM1", "reserved for JVM 1"},
-+	{40, "SIGJVM2", "reserved for JVM 2"},
-+	{41, "SIGINFO", "information Request"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
-new file mode 100644
-index 00000000..89c5920e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
-@@ -0,0 +1,41 @@
-+// Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build arm arm64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsArm is the registers used by arm binaries.
-+type PtraceRegsArm struct {
-+	Uregs [18]uint32
-+}
-+
-+// PtraceGetRegsArm fetches the registers used by arm binaries.
-+func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsArm sets the registers used by arm binaries.
-+func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsArm64 is the registers used by arm64 binaries.
-+type PtraceRegsArm64 struct {
-+	Regs   [31]uint64
-+	Sp     uint64
-+	Pc     uint64
-+	Pstate uint64
-+}
-+
-+// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.
-+func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsArm64 sets the registers used by arm64 binaries.
-+func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
-new file mode 100644
-index 00000000..6cb6d688
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
-@@ -0,0 +1,17 @@
-+// Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT.
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.
-+func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {
-+	iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}
-+	return ptrace(PTRACE_GETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec)))
-+}
-+
-+// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.
-+func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {
-+	iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}
-+	return ptrace(PTRACE_SETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
-new file mode 100644
-index 00000000..24b841ee
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
-@@ -0,0 +1,50 @@
-+// Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build mips mips64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsMips is the registers used by mips binaries.
-+type PtraceRegsMips struct {
-+	Regs     [32]uint64
-+	Lo       uint64
-+	Hi       uint64
-+	Epc      uint64
-+	Badvaddr uint64
-+	Status   uint64
-+	Cause    uint64
-+}
-+
-+// PtraceGetRegsMips fetches the registers used by mips binaries.
-+func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips sets the registers used by mips binaries.
-+func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsMips64 is the registers used by mips64 binaries.
-+type PtraceRegsMips64 struct {
-+	Regs     [32]uint64
-+	Lo       uint64
-+	Hi       uint64
-+	Epc      uint64
-+	Badvaddr uint64
-+	Status   uint64
-+	Cause    uint64
-+}
-+
-+// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
-+func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips64 sets the registers used by mips64 binaries.
-+func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
-new file mode 100644
-index 00000000..47b04895
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
-@@ -0,0 +1,50 @@
-+// Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT.
-+
-+// +build linux
-+// +build mipsle mips64le
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsMipsle is the registers used by mipsle binaries.
-+type PtraceRegsMipsle struct {
-+	Regs     [32]uint64
-+	Lo       uint64
-+	Hi       uint64
-+	Epc      uint64
-+	Badvaddr uint64
-+	Status   uint64
-+	Cause    uint64
-+}
-+
-+// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.
-+func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMipsle sets the registers used by mipsle binaries.
-+func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsMips64le is the registers used by mips64le binaries.
-+type PtraceRegsMips64le struct {
-+	Regs     [32]uint64
-+	Lo       uint64
-+	Hi       uint64
-+	Epc      uint64
-+	Badvaddr uint64
-+	Status   uint64
-+	Cause    uint64
-+}
-+
-+// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.
-+func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips64le sets the registers used by mips64le binaries.
-+func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
-new file mode 100644
-index 00000000..ea5d9cb5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
-@@ -0,0 +1,80 @@
-+// Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build 386 amd64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegs386 is the registers used by 386 binaries.
-+type PtraceRegs386 struct {
-+	Ebx      int32
-+	Ecx      int32
-+	Edx      int32
-+	Esi      int32
-+	Edi      int32
-+	Ebp      int32
-+	Eax      int32
-+	Xds      int32
-+	Xes      int32
-+	Xfs      int32
-+	Xgs      int32
-+	Orig_eax int32
-+	Eip      int32
-+	Xcs      int32
-+	Eflags   int32
-+	Esp      int32
-+	Xss      int32
-+}
-+
-+// PtraceGetRegs386 fetches the registers used by 386 binaries.
-+func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegs386 sets the registers used by 386 binaries.
-+func PtraceSetRegs386(pid int, regs *PtraceRegs386) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsAmd64 is the registers used by amd64 binaries.
-+type PtraceRegsAmd64 struct {
-+	R15      uint64
-+	R14      uint64
-+	R13      uint64
-+	R12      uint64
-+	Rbp      uint64
-+	Rbx      uint64
-+	R11      uint64
-+	R10      uint64
-+	R9       uint64
-+	R8       uint64
-+	Rax      uint64
-+	Rcx      uint64
-+	Rdx      uint64
-+	Rsi      uint64
-+	Rdi      uint64
-+	Orig_rax uint64
-+	Rip      uint64
-+	Cs       uint64
-+	Eflags   uint64
-+	Rsp      uint64
-+	Ss       uint64
-+	Fs_base  uint64
-+	Gs_base  uint64
-+	Ds       uint64
-+	Es       uint64
-+	Fs       uint64
-+	Gs       uint64
-+}
-+
-+// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.
-+func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {
-+	return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.
-+func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {
-+	return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
-new file mode 100644
-index 00000000..ed657ff1
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
-@@ -0,0 +1,1484 @@
-+// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc
-+
-+package unix
-+
-+/*
-+#include <stdint.h>
-+#include <stddef.h>
-+int utimes(uintptr_t, uintptr_t);
-+int utimensat(int, uintptr_t, uintptr_t, int);
-+int getcwd(uintptr_t, size_t);
-+int accept(int, uintptr_t, uintptr_t);
-+int getdirent(int, uintptr_t, size_t);
-+int wait4(int, uintptr_t, int, uintptr_t);
-+int ioctl(int, int, uintptr_t);
-+int fcntl(uintptr_t, int, uintptr_t);
-+int acct(uintptr_t);
-+int chdir(uintptr_t);
-+int chroot(uintptr_t);
-+int close(int);
-+int dup(int);
-+void exit(int);
-+int faccessat(int, uintptr_t, unsigned int, int);
-+int fchdir(int);
-+int fchmod(int, unsigned int);
-+int fchmodat(int, uintptr_t, unsigned int, int);
-+int fchownat(int, uintptr_t, int, int, int);
-+int fdatasync(int);
-+int fsync(int);
-+int getpgid(int);
-+int getpgrp();
-+int getpid();
-+int getppid();
-+int getpriority(int, int);
-+int getrusage(int, uintptr_t);
-+int getsid(int);
-+int kill(int, int);
-+int syslog(int, uintptr_t, size_t);
-+int mkdir(int, uintptr_t, unsigned int);
-+int mkdirat(int, uintptr_t, unsigned int);
-+int mkfifo(uintptr_t, unsigned int);
-+int mknod(uintptr_t, unsigned int, int);
-+int mknodat(int, uintptr_t, unsigned int, int);
-+int nanosleep(uintptr_t, uintptr_t);
-+int open64(uintptr_t, int, unsigned int);
-+int openat(int, uintptr_t, int, unsigned int);
-+int read(int, uintptr_t, size_t);
-+int readlink(uintptr_t, uintptr_t, size_t);
-+int renameat(int, uintptr_t, int, uintptr_t);
-+int setdomainname(uintptr_t, size_t);
-+int sethostname(uintptr_t, size_t);
-+int setpgid(int, int);
-+int setsid();
-+int settimeofday(uintptr_t);
-+int setuid(int);
-+int setgid(int);
-+int setpriority(int, int, int);
-+int statx(int, uintptr_t, int, int, uintptr_t);
-+int sync();
-+uintptr_t times(uintptr_t);
-+int umask(int);
-+int uname(uintptr_t);
-+int unlink(uintptr_t);
-+int unlinkat(int, uintptr_t, int);
-+int ustat(int, uintptr_t);
-+int write(int, uintptr_t, size_t);
-+int dup2(int, int);
-+int posix_fadvise64(int, long long, long long, int);
-+int fchown(int, int, int);
-+int fstat(int, uintptr_t);
-+int fstatat(int, uintptr_t, uintptr_t, int);
-+int fstatfs(int, uintptr_t);
-+int ftruncate(int, long long);
-+int getegid();
-+int geteuid();
-+int getgid();
-+int getuid();
-+int lchown(uintptr_t, int, int);
-+int listen(int, int);
-+int lstat(uintptr_t, uintptr_t);
-+int pause();
-+int pread64(int, uintptr_t, size_t, long long);
-+int pwrite64(int, uintptr_t, size_t, long long);
-+#define c_select select
-+int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int setregid(int, int);
-+int setreuid(int, int);
-+int shutdown(int, int);
-+long long splice(int, uintptr_t, int, uintptr_t, int, int);
-+int stat(uintptr_t, uintptr_t);
-+int statfs(uintptr_t, uintptr_t);
-+int truncate(uintptr_t, long long);
-+int bind(int, uintptr_t, uintptr_t);
-+int connect(int, uintptr_t, uintptr_t);
-+int getgroups(int, uintptr_t);
-+int setgroups(int, uintptr_t);
-+int getsockopt(int, int, int, uintptr_t, uintptr_t);
-+int setsockopt(int, int, int, uintptr_t, uintptr_t);
-+int socket(int, int, int);
-+int socketpair(int, int, int, uintptr_t);
-+int getpeername(int, uintptr_t, uintptr_t);
-+int getsockname(int, uintptr_t, uintptr_t);
-+int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int nrecvmsg(int, uintptr_t, int);
-+int nsendmsg(int, uintptr_t, int);
-+int munmap(uintptr_t, uintptr_t);
-+int madvise(uintptr_t, size_t, int);
-+int mprotect(uintptr_t, size_t, int);
-+int mlock(uintptr_t, size_t);
-+int mlockall(int);
-+int msync(uintptr_t, size_t, int);
-+int munlock(uintptr_t, size_t);
-+int munlockall();
-+int pipe(uintptr_t);
-+int poll(uintptr_t, int, int);
-+int gettimeofday(uintptr_t, uintptr_t);
-+int time(uintptr_t);
-+int utime(uintptr_t, uintptr_t);
-+unsigned long long getsystemcfg(int);
-+int umount(uintptr_t);
-+int getrlimit64(int, uintptr_t);
-+int setrlimit64(int, uintptr_t);
-+long long lseek64(int, long long, int);
-+uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);
-+
-+*/
-+import "C"
-+import (
-+	"unsafe"
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getcwd(buf []byte) (err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	var _p1 int
-+	_p1 = len(buf)
-+	r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-+	r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+	fd = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getdirent(fd int, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	var _p1 int
-+	_p1 = len(buf)
-+	r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {
-+	r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))
-+	wpid = Pid_t(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {
-+	r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
-+	r = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {
-+	r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
-+	val = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Acct(path string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.acct(C.uintptr_t(_p0))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Chdir(path string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.chdir(C.uintptr_t(_p0))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Chroot(path string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.chroot(C.uintptr_t(_p0))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Close(fd int) (err error) {
-+	r0, er := C.close(C.int(fd))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Dup(oldfd int) (fd int, err error) {
-+	r0, er := C.dup(C.int(oldfd))
-+	fd = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Exit(code int) {
-+	C.exit(C.int(code))
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchdir(fd int) (err error) {
-+	r0, er := C.fchdir(C.int(fd))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchmod(fd int, mode uint32) (err error) {
-+	r0, er := C.fchmod(C.int(fd), C.uint(mode))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fdatasync(fd int) (err error) {
-+	r0, er := C.fdatasync(C.int(fd))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fsync(fd int) (err error) {
-+	r0, er := C.fsync(C.int(fd))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpgid(pid int) (pgid int, err error) {
-+	r0, er := C.getpgid(C.int(pid))
-+	pgid = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpgrp() (pid int) {
-+	r0, _ := C.getpgrp()
-+	pid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpid() (pid int) {
-+	r0, _ := C.getpid()
-+	pid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getppid() (ppid int) {
-+	r0, _ := C.getppid()
-+	ppid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpriority(which int, who int) (prio int, err error) {
-+	r0, er := C.getpriority(C.int(which), C.int(who))
-+	prio = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrusage(who int, rusage *Rusage) (err error) {
-+	r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsid(pid int) (sid int, err error) {
-+	r0, er := C.getsid(C.int(pid))
-+	sid = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Kill(pid int, sig Signal) (err error) {
-+	r0, er := C.kill(C.int(pid), C.int(sig))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Klogctl(typ int, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	var _p1 int
-+	_p1 = len(buf)
-+	r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkdir(dirfd int, path string, mode uint32) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkfifo(path string, mode uint32) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mknod(path string, mode uint32, dev int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+	r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Open(path string, mode int, perm uint32) (fd int, err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))
-+	fd = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))
-+	fd = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func read(fd int, p []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Readlink(path string, buf []byte) (n int, err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	var _p1 *byte
-+	if len(buf) > 0 {
-+		_p1 = &buf[0]
-+	}
-+	var _p2 int
-+	_p2 = len(buf)
-+	r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))
-+	_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))
-+	r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setdomainname(p []byte) (err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Sethostname(p []byte) (err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setpgid(pid int, pgid int) (err error) {
-+	r0, er := C.setpgid(C.int(pid), C.int(pgid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setsid() (pid int, err error) {
-+	r0, er := C.setsid()
-+	pid = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Settimeofday(tv *Timeval) (err error) {
-+	r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setuid(uid int) (err error) {
-+	r0, er := C.setuid(C.int(uid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setgid(uid int) (err error) {
-+	r0, er := C.setgid(C.int(uid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setpriority(which int, who int, prio int) (err error) {
-+	r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Sync() {
-+	C.sync()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Times(tms *Tms) (ticks uintptr, err error) {
-+	r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))
-+	ticks = uintptr(r0)
-+	if uintptr(r0) == ^uintptr(0) && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Umask(mask int) (oldmask int) {
-+	r0, _ := C.umask(C.int(mask))
-+	oldmask = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Uname(buf *Utsname) (err error) {
-+	r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Unlink(path string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.unlink(C.uintptr_t(_p0))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func write(fd int, p []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readlen(fd int, p *byte, np int) (n int, err error) {
-+	r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func writelen(fd int, p *byte, np int) (n int, err error) {
-+	r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Dup2(oldfd int, newfd int) (err error) {
-+	r0, er := C.dup2(C.int(oldfd), C.int(newfd))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstat(fd int, stat *Stat_t) (err error) {
-+	r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+	r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ftruncate(fd int, length int64) (err error) {
-+	r0, er := C.ftruncate(C.int(fd), C.longlong(length))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getegid() (egid int) {
-+	r0, _ := C.getegid()
-+	egid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+	r0, _ := C.geteuid()
-+	euid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+	r0, _ := C.getgid()
-+	gid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+	r0, _ := C.getuid()
-+	uid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lchown(path string, uid int, gid int) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Listen(s int, n int) (err error) {
-+	r0, er := C.listen(C.int(s), C.int(n))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func lstat(path string, stat *Stat_t) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pause() (err error) {
-+	r0, er := C.pause()
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setregid(rgid int, egid int) (err error) {
-+	r0, er := C.setregid(C.int(rgid), C.int(egid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setreuid(ruid int, euid int) (err error) {
-+	r0, er := C.setreuid(C.int(ruid), C.int(euid))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Shutdown(fd int, how int) (err error) {
-+	r0, er := C.shutdown(C.int(fd), C.int(how))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+	r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))
-+	n = int64(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func stat(path string, statptr *Stat_t) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, buf *Statfs_t) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Truncate(path string, length int64) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+	r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))
-+	nn = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setgroups(n int, list *_Gid_t) (err error) {
-+	r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+	r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+	r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+	r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))
-+	fd = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+	r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	var _p1 int
-+	_p1 = len(p)
-+	r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	var _p1 int
-+	_p1 = len(buf)
-+	r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func munmap(addr uintptr, length uintptr) (err error) {
-+	r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Madvise(b []byte, advice int) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	var _p1 int
-+	_p1 = len(b)
-+	r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mprotect(b []byte, prot int) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	var _p1 int
-+	_p1 = len(b)
-+	r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mlock(b []byte) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	var _p1 int
-+	_p1 = len(b)
-+	r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mlockall(flags int) (err error) {
-+	r0, er := C.mlockall(C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Msync(b []byte, flags int) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	var _p1 int
-+	_p1 = len(b)
-+	r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Munlock(b []byte) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	var _p1 int
-+	_p1 = len(b)
-+	r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Munlockall() (err error) {
-+	r0, er := C.munlockall()
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pipe(p *[2]_C_int) (err error) {
-+	r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))
-+	n = int(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func gettimeofday(tv *Timeval, tzp *Timezone) (err error) {
-+	r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Time(t *Time_t) (tt Time_t, err error) {
-+	r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))
-+	tt = Time_t(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Utime(path string, buf *Utimbuf) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+	r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsystemcfg(label int) (n uint64) {
-+	r0, _ := C.getsystemcfg(C.int(label))
-+	n = uint64(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func umount(target string) (err error) {
-+	_p0 := uintptr(unsafe.Pointer(C.CString(target)))
-+	r0, er := C.umount(C.uintptr_t(_p0))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+	r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+	r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))
-+	off = int64(r0)
-+	if r0 == -1 && er != nil {
-+		err = er
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+	r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))
-+	xaddr = uintptr(r0)
-+	if uintptr(r0) == ^uintptr(0) && er != nil {
-+		err = er
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-similarity index 57%
-copy from vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-index 7b6c2c87..664b293b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-@@ -1,22 +1,23 @@
--// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build netbsd,amd64
-+// +build aix,ppc64
- 
- package unix
- 
- import (
--	"syscall"
- 	"unsafe"
- )
- 
--var _ syscall.Errno
--
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
--	n = int(r0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -25,8 +26,13 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func setgroups(ngid int, gid *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -35,9 +41,12 @@ func setgroups(ngid int, gid *_Gid_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
-+func getcwd(buf []byte) (err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -47,7 +56,7 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -57,8 +66,13 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+func getdirent(fd int, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -67,8 +81,9 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {
-+	r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))
-+	wpid = Pid_t(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -77,9 +92,8 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func socket(domain int, typ int, proto int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
--	fd = int(r0)
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, e1 := callioctl(fd, int(req), arg)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -88,8 +102,9 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
--	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {
-+	r0, e1 := callfcntl(fd, cmd, uintptr(arg))
-+	r = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -98,8 +113,8 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {
-+	_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -108,8 +123,9 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr)
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))
-+	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -118,8 +134,13 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+func Acct(path string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -128,8 +149,13 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Shutdown(s int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+func Chdir(path string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -138,8 +164,13 @@ func Shutdown(s int, how int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
--	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+func Chroot(path string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -148,15 +179,8 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
--	n = int(r0)
-+func Close(fd int) (err error) {
-+	_, e1 := callclose(fd)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -165,14 +189,9 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+func Dup(oldfd int) (fd int, err error) {
-+	r0, e1 := calldup(oldfd)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -181,9 +200,20 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
--	n = int(r0)
-+func Exit(code int) {
-+	callexit(code)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -192,9 +222,8 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
--	n = int(r0)
-+func Fchdir(fd int) (err error) {
-+	_, e1 := callfchdir(fd)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -203,9 +232,8 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
--	n = int(r0)
-+func Fchmod(fd int, mode uint32) (err error) {
-+	_, e1 := callfchmod(fd, mode)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -214,14 +242,13 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -230,13 +257,13 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func utimes(path string, timeval *[2]Timeval) (err error) {
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -245,8 +272,8 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func futimes(fd int, timeval *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+func Fdatasync(fd int) (err error) {
-+	_, e1 := callfdatasync(fd)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -255,9 +282,8 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func Fsync(fd int) (err error) {
-+	_, e1 := callfsync(fd)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -266,14 +292,9 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Madvise(b []byte, behav int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+func Getpgid(pid int) (pgid int, err error) {
-+	r0, e1 := callgetpgid(pid)
-+	pgid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -282,56 +303,33 @@ func Madvise(b []byte, behav int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
-+func Getpgrp() (pid int) {
-+	r0, _ := callgetpgrp()
-+	pid = int(r0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
-+func Getpid() (pid int) {
-+	r0, _ := callgetpid()
-+	pid = int(r0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
-+func Getppid() (ppid int) {
-+	r0, _ := callgetppid()
-+	ppid = int(r0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Getpriority(which int, who int) (prio int, err error) {
-+	r0, e1 := callgetpriority(which, who)
-+	prio = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -340,14 +338,8 @@ func Msync(b []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func Getrusage(who int, rusage *Rusage) (err error) {
-+	_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -356,8 +348,9 @@ func Munlock(b []byte) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Getsid(pid int) (sid int, err error) {
-+	r0, e1 := callgetsid(pid)
-+	sid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +359,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (fd1 int, fd2 int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	fd1 = int(r0)
--	fd2 = int(r1)
-+func Kill(pid int, sig Signal) (err error) {
-+	_, e1 := callkill(pid, int(sig))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -378,14 +369,12 @@ func pipe() (fd1 int, fd2 int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
-+func Klogctl(typ int, buf []byte) (n int, err error) {
-+	var _p0 *byte
- 	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
-+		_p0 = &buf[0]
- 	}
--	r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+	r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -395,13 +384,13 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Access(path string, mode uint32) (err error) {
-+func Mkdir(dirfd int, path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -410,8 +399,13 @@ func Access(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -420,13 +414,13 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Chdir(path string) (err error) {
-+func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -435,13 +429,13 @@ func Chdir(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Chflags(path string, flags int) (err error) {
-+func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -450,13 +444,13 @@ func Chflags(path string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Chmod(path string, mode uint32) (err error) {
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -465,13 +459,8 @@ func Chmod(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Chown(path string, uid int, gid int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+	_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -480,13 +469,14 @@ func Chown(path string, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Chroot(path string) (err error) {
-+func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -495,8 +485,14 @@ func Chroot(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -505,9 +501,13 @@ func Close(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup(fd int) (nfd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
--	nfd = int(r0)
-+func read(fd int, p []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -516,8 +516,18 @@ func Dup(fd int) (nfd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(from int, to int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+func Readlink(path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	if len(buf) > 0 {
-+		_p1 = &buf[0]
-+	}
-+	r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -526,15 +536,32 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Exit(code int) {
--	Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+func Setdomainname(p []byte) (err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -543,8 +570,12 @@ func Fchdir(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchflags(fd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+func Sethostname(p []byte) (err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -553,8 +584,8 @@ func Fchflags(fd int, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+func Setpgid(pid int, pgid int) (err error) {
-+	_, e1 := callsetpgid(pid, pgid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -563,8 +594,9 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+func Setsid() (pid int, err error) {
-+	r0, e1 := callsetsid()
-+	pid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -573,8 +605,8 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+func Settimeofday(tv *Timeval) (err error) {
-+	_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -583,9 +615,8 @@ func Flock(fd int, how int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fpathconf(fd int, name int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
--	val = int(r0)
-+func Setuid(uid int) (err error) {
-+	_, e1 := callsetuid(uid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -594,8 +625,8 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Setgid(uid int) (err error) {
-+	_, e1 := callsetgid(uid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -604,8 +635,8 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Setpriority(which int, who int, prio int) (err error) {
-+	_, e1 := callsetpriority(which, who, prio)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -614,8 +645,13 @@ func Fsync(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -624,33 +660,34 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
--	egid = int(r0)
-+func Sync() {
-+	callsync()
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Geteuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
--	uid = int(r0)
-+func Times(tms *Tms) (ticks uintptr, err error) {
-+	r0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))
-+	ticks = uintptr(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
--	gid = int(r0)
-+func Umask(mask int) (oldmask int) {
-+	r0, _ := callumask(mask)
-+	oldmask = int(r0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
-+func Uname(buf *Utsname) (err error) {
-+	_, e1 := calluname(uintptr(unsafe.Pointer(buf)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -659,33 +696,53 @@ func Getpgid(pid int) (pgid int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getpgrp() (pgrp int) {
--	r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
--	pgrp = int(r0)
-+func Unlink(path string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
-+func write(fd int, p []byte) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -694,8 +751,9 @@ func Getpriority(which int, who int) (prio int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+func readlen(fd int, p *byte, np int) (n int, err error) {
-+	r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -704,8 +762,9 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+func writelen(fd int, p *byte, np int) (n int, err error) {
-+	r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -714,9 +773,8 @@ func Getrusage(who int, rusage *Rusage) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, e1 := calldup2(oldfd, newfd)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -725,8 +783,8 @@ func Getsid(pid int) (sid int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Gettimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, e1 := callposix_fadvise64(fd, offset, length, advice)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -735,24 +793,33 @@ func Gettimeofday(tv *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
--	uid = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, e1 := callfchown(fd, uid, gid)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Issetugid() (tainted bool) {
--	r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
--	tainted = bool(r0 != 0)
-+func fstat(fd int, stat *Stat_t) (err error) {
-+	_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Kill(pid int, signum syscall.Signal) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
-+func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -761,9 +828,8 @@ func Kill(pid int, signum syscall.Signal) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Kqueue() (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
--	fd = int(r0)
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+	_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -772,13 +838,8 @@ func Kqueue() (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lchown(path string, uid int, gid int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+func Ftruncate(fd int, length int64) (err error) {
-+	_, e1 := callftruncate(fd, length)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -787,18 +848,45 @@ func Lchown(path string, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Link(path string, link string) (err error) {
-+func Getegid() (egid int) {
-+	r0, _ := callgetegid()
-+	egid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+	r0, _ := callgeteuid()
-+	euid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+	r0, _ := callgetgid()
-+	gid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+	r0, _ := callgetuid()
-+	uid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lchown(path string, uid int, gid int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(link)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -807,8 +895,8 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Listen(s int, backlog int) (err error) {
--	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+func Listen(s int, n int) (err error) {
-+	_, e1 := calllisten(s, n)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -817,13 +905,13 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -832,13 +920,8 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mkdir(path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+func Pause() (err error) {
-+	_, e1 := callpause()
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -847,13 +930,13 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mkfifo(path string, mode uint32) (err error) {
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+	if len(p) > 0 {
-+		_p0 = &p[0]
- 	}
--	_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -862,13 +945,13 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+	if len(p) > 0 {
-+		_p0 = &p[0]
- 	}
--	_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+	r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -877,8 +960,9 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -887,14 +971,9 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Open(path string, mode int, perm uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
--	fd = int(r0)
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -903,14 +982,8 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pathconf(path string, name int) (val int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
--	val = int(r0)
-+func Setregid(rgid int, egid int) (err error) {
-+	_, e1 := callsetregid(rgid, egid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -919,15 +992,8 @@ func Pathconf(path string, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pread(fd int, p []byte, offset int64) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
--	n = int(r0)
-+func Setreuid(ruid int, euid int) (err error) {
-+	_, e1 := callsetreuid(ruid, euid)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -936,15 +1002,8 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
--	n = int(r0)
-+func Shutdown(fd int, how int) (err error) {
-+	_, e1 := callshutdown(fd, how)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -953,15 +1012,9 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+	r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)
-+	n = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -970,20 +1023,13 @@ func read(fd int, p []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Readlink(path string, buf []byte) (n int, err error) {
-+func stat(path string, statptr *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
--	n = int(r0)
-+	_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -992,18 +1038,13 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Rename(from string, to string) (err error) {
-+func Statfs(path string, buf *Statfs_t) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(from)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(to)
-+	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1012,13 +1053,13 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Revoke(path string) (err error) {
-+func Truncate(path string, length int64) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1027,13 +1068,8 @@ func Revoke(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Rmdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1042,9 +1078,8 @@ func Rmdir(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
--	newoffset = int64(r0)
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1053,8 +1088,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+	r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))
-+	nn = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1063,8 +1099,8 @@ func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setegid(egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+func setgroups(n int, list *_Gid_t) (err error) {
-+	_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1073,8 +1109,8 @@ func Setegid(egid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seteuid(euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+	_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1083,8 +1119,8 @@ func Seteuid(euid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setgid(gid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+	_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1093,8 +1129,9 @@ func Setgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+	r0, e1 := callsocket(domain, typ, proto)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1103,8 +1140,8 @@ func Setpgid(pid int, pgid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+	_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1113,8 +1150,8 @@ func Setpriority(which int, who int, prio int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1123,8 +1160,8 @@ func Setregid(rgid int, egid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1133,8 +1170,13 @@ func Setreuid(ruid int, euid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+	var _p0 *byte
-+	if len(p) > 0 {
-+		_p0 = &p[0]
-+	}
-+	r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1143,9 +1185,12 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+	var _p0 *byte
-+	if len(buf) > 0 {
-+		_p0 = &buf[0]
-+	}
-+	_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1154,8 +1199,9 @@ func Setsid() (pid int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Settimeofday(tp *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1164,8 +1210,9 @@ func Settimeofday(tp *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setuid(uid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1174,13 +1221,8 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func munmap(addr uintptr, length uintptr) (err error) {
-+	_, e1 := callmunmap(addr, length)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1189,18 +1231,12 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Symlink(path string, link string) (err error) {
-+func Madvise(b []byte, advice int) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(link)
--	if err != nil {
--		return
-+	if len(b) > 0 {
-+		_p0 = &b[0]
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1209,8 +1245,12 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sync() (err error) {
--	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+func Mprotect(b []byte, prot int) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1219,13 +1259,12 @@ func Sync() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Truncate(path string, length int64) (err error) {
-+func Mlock(b []byte) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+	if len(b) > 0 {
-+		_p0 = &b[0]
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
-+	_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1234,21 +1273,22 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Umask(newmask int) (oldmask int) {
--	r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
--	oldmask = int(r0)
-+func Mlockall(flags int) (err error) {
-+	_, e1 := callmlockall(flags)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unlink(path string) (err error) {
-+func Msync(b []byte, flags int) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+	if len(b) > 0 {
-+		_p0 = &b[0]
- 	}
--	_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1257,13 +1297,12 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unmount(path string, flags int) (err error) {
-+func Munlock(b []byte) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+	if len(b) > 0 {
-+		_p0 = &b[0]
- 	}
--	_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1272,15 +1311,8 @@ func Unmount(path string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
-+func Munlockall() (err error) {
-+	_, e1 := callmunlockall()
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1289,9 +1321,8 @@ func write(fd int, p []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
--	ret = uintptr(r0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, e1 := callpipe(uintptr(unsafe.Pointer(p)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1300,8 +1331,9 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1310,9 +1342,8 @@ func munmap(addr uintptr, length uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
--	n = int(r0)
-+func gettimeofday(tv *Timeval, tzp *Timezone) (err error) {
-+	_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1321,9 +1352,9 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
--	n = int(r0)
-+func Time(t *Time_t) (tt Time_t, err error) {
-+	r0, e1 := calltime(uintptr(unsafe.Pointer(t)))
-+	tt = Time_t(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1332,13 +1363,78 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-+	_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsystemcfg(label int) (n uint64) {
-+	r0, _ := callgetsystemcfg(label)
-+	n = uint64(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func umount(target string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(target)
-+	if err != nil {
-+		return
-+	}
-+	_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+	_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+	_, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, e1 := calllseek(fd, offset, whence)
-+	off = int64(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+	r0, e1 := callmmap64(addr, length, prot, flags, fd, offset)
-+	xaddr = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
-new file mode 100644
-index 00000000..4b3a8ad7
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
-@@ -0,0 +1,1192 @@
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc64
-+// +build !gccgo
-+
-+package unix
-+
-+import (
-+	"unsafe"
-+)
-+
-+//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fsync fsync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o"
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:linkname libc_utimensat libc_utimensat
-+//go:linkname libc_getcwd libc_getcwd
-+//go:linkname libc_accept libc_accept
-+//go:linkname libc_getdirent libc_getdirent
-+//go:linkname libc_wait4 libc_wait4
-+//go:linkname libc_ioctl libc_ioctl
-+//go:linkname libc_fcntl libc_fcntl
-+//go:linkname libc_acct libc_acct
-+//go:linkname libc_chdir libc_chdir
-+//go:linkname libc_chroot libc_chroot
-+//go:linkname libc_close libc_close
-+//go:linkname libc_dup libc_dup
-+//go:linkname libc_exit libc_exit
-+//go:linkname libc_faccessat libc_faccessat
-+//go:linkname libc_fchdir libc_fchdir
-+//go:linkname libc_fchmod libc_fchmod
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:linkname libc_fchownat libc_fchownat
-+//go:linkname libc_fdatasync libc_fdatasync
-+//go:linkname libc_fsync libc_fsync
-+//go:linkname libc_getpgid libc_getpgid
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:linkname libc_getpid libc_getpid
-+//go:linkname libc_getppid libc_getppid
-+//go:linkname libc_getpriority libc_getpriority
-+//go:linkname libc_getrusage libc_getrusage
-+//go:linkname libc_getsid libc_getsid
-+//go:linkname libc_kill libc_kill
-+//go:linkname libc_syslog libc_syslog
-+//go:linkname libc_mkdir libc_mkdir
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:linkname libc_mknod libc_mknod
-+//go:linkname libc_mknodat libc_mknodat
-+//go:linkname libc_nanosleep libc_nanosleep
-+//go:linkname libc_open64 libc_open64
-+//go:linkname libc_openat libc_openat
-+//go:linkname libc_read libc_read
-+//go:linkname libc_readlink libc_readlink
-+//go:linkname libc_renameat libc_renameat
-+//go:linkname libc_setdomainname libc_setdomainname
-+//go:linkname libc_sethostname libc_sethostname
-+//go:linkname libc_setpgid libc_setpgid
-+//go:linkname libc_setsid libc_setsid
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:linkname libc_setuid libc_setuid
-+//go:linkname libc_setgid libc_setgid
-+//go:linkname libc_setpriority libc_setpriority
-+//go:linkname libc_statx libc_statx
-+//go:linkname libc_sync libc_sync
-+//go:linkname libc_times libc_times
-+//go:linkname libc_umask libc_umask
-+//go:linkname libc_uname libc_uname
-+//go:linkname libc_unlink libc_unlink
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:linkname libc_ustat libc_ustat
-+//go:linkname libc_write libc_write
-+//go:linkname libc_dup2 libc_dup2
-+//go:linkname libc_posix_fadvise64 libc_posix_fadvise64
-+//go:linkname libc_fchown libc_fchown
-+//go:linkname libc_fstat libc_fstat
-+//go:linkname libc_fstatat libc_fstatat
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:linkname libc_getegid libc_getegid
-+//go:linkname libc_geteuid libc_geteuid
-+//go:linkname libc_getgid libc_getgid
-+//go:linkname libc_getuid libc_getuid
-+//go:linkname libc_lchown libc_lchown
-+//go:linkname libc_listen libc_listen
-+//go:linkname libc_lstat libc_lstat
-+//go:linkname libc_pause libc_pause
-+//go:linkname libc_pread64 libc_pread64
-+//go:linkname libc_pwrite64 libc_pwrite64
-+//go:linkname libc_select libc_select
-+//go:linkname libc_pselect libc_pselect
-+//go:linkname libc_setregid libc_setregid
-+//go:linkname libc_setreuid libc_setreuid
-+//go:linkname libc_shutdown libc_shutdown
-+//go:linkname libc_splice libc_splice
-+//go:linkname libc_stat libc_stat
-+//go:linkname libc_statfs libc_statfs
-+//go:linkname libc_truncate libc_truncate
-+//go:linkname libc_bind libc_bind
-+//go:linkname libc_connect libc_connect
-+//go:linkname libc_getgroups libc_getgroups
-+//go:linkname libc_setgroups libc_setgroups
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:linkname libc_socket libc_socket
-+//go:linkname libc_socketpair libc_socketpair
-+//go:linkname libc_getpeername libc_getpeername
-+//go:linkname libc_getsockname libc_getsockname
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:linkname libc_sendto libc_sendto
-+//go:linkname libc_nrecvmsg libc_nrecvmsg
-+//go:linkname libc_nsendmsg libc_nsendmsg
-+//go:linkname libc_munmap libc_munmap
-+//go:linkname libc_madvise libc_madvise
-+//go:linkname libc_mprotect libc_mprotect
-+//go:linkname libc_mlock libc_mlock
-+//go:linkname libc_mlockall libc_mlockall
-+//go:linkname libc_msync libc_msync
-+//go:linkname libc_munlock libc_munlock
-+//go:linkname libc_munlockall libc_munlockall
-+//go:linkname libc_pipe libc_pipe
-+//go:linkname libc_poll libc_poll
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:linkname libc_time libc_time
-+//go:linkname libc_utime libc_utime
-+//go:linkname libc_getsystemcfg libc_getsystemcfg
-+//go:linkname libc_umount libc_umount
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:linkname libc_lseek libc_lseek
-+//go:linkname libc_mmap64 libc_mmap64
-+
-+type syscallFunc uintptr
-+
-+var (
-+	libc_utimes,
-+	libc_utimensat,
-+	libc_getcwd,
-+	libc_accept,
-+	libc_getdirent,
-+	libc_wait4,
-+	libc_ioctl,
-+	libc_fcntl,
-+	libc_acct,
-+	libc_chdir,
-+	libc_chroot,
-+	libc_close,
-+	libc_dup,
-+	libc_exit,
-+	libc_faccessat,
-+	libc_fchdir,
-+	libc_fchmod,
-+	libc_fchmodat,
-+	libc_fchownat,
-+	libc_fdatasync,
-+	libc_fsync,
-+	libc_getpgid,
-+	libc_getpgrp,
-+	libc_getpid,
-+	libc_getppid,
-+	libc_getpriority,
-+	libc_getrusage,
-+	libc_getsid,
-+	libc_kill,
-+	libc_syslog,
-+	libc_mkdir,
-+	libc_mkdirat,
-+	libc_mkfifo,
-+	libc_mknod,
-+	libc_mknodat,
-+	libc_nanosleep,
-+	libc_open64,
-+	libc_openat,
-+	libc_read,
-+	libc_readlink,
-+	libc_renameat,
-+	libc_setdomainname,
-+	libc_sethostname,
-+	libc_setpgid,
-+	libc_setsid,
-+	libc_settimeofday,
-+	libc_setuid,
-+	libc_setgid,
-+	libc_setpriority,
-+	libc_statx,
-+	libc_sync,
-+	libc_times,
-+	libc_umask,
-+	libc_uname,
-+	libc_unlink,
-+	libc_unlinkat,
-+	libc_ustat,
-+	libc_write,
-+	libc_dup2,
-+	libc_posix_fadvise64,
-+	libc_fchown,
-+	libc_fstat,
-+	libc_fstatat,
-+	libc_fstatfs,
-+	libc_ftruncate,
-+	libc_getegid,
-+	libc_geteuid,
-+	libc_getgid,
-+	libc_getuid,
-+	libc_lchown,
-+	libc_listen,
-+	libc_lstat,
-+	libc_pause,
-+	libc_pread64,
-+	libc_pwrite64,
-+	libc_select,
-+	libc_pselect,
-+	libc_setregid,
-+	libc_setreuid,
-+	libc_shutdown,
-+	libc_splice,
-+	libc_stat,
-+	libc_statfs,
-+	libc_truncate,
-+	libc_bind,
-+	libc_connect,
-+	libc_getgroups,
-+	libc_setgroups,
-+	libc_getsockopt,
-+	libc_setsockopt,
-+	libc_socket,
-+	libc_socketpair,
-+	libc_getpeername,
-+	libc_getsockname,
-+	libc_recvfrom,
-+	libc_sendto,
-+	libc_nrecvmsg,
-+	libc_nsendmsg,
-+	libc_munmap,
-+	libc_madvise,
-+	libc_mprotect,
-+	libc_mlock,
-+	libc_mlockall,
-+	libc_msync,
-+	libc_munlock,
-+	libc_munlockall,
-+	libc_pipe,
-+	libc_poll,
-+	libc_gettimeofday,
-+	libc_time,
-+	libc_utime,
-+	libc_getsystemcfg,
-+	libc_umount,
-+	libc_getrlimit,
-+	libc_setrlimit,
-+	libc_lseek,
-+	libc_mmap64 syscallFunc
-+)
-+
-+// Implemented in runtime/syscall_aix.go.
-+func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callclose(fd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup(oldfd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callexit(code int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchdir(fd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfdatasync(fd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfsync(fd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgid(pid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgrp() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetppid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsid(pid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callkill(pid int, sig int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetuid(uid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgid(uid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsync() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltimes(tms uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumask(mask int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calluname(buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetegid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgeteuid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetuid() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllisten(s int, n int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpause() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlockall(flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlockall() (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpipe(p uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltime(t uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
-new file mode 100644
-index 00000000..cde4dbc5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
-@@ -0,0 +1,1070 @@
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc64
-+// +build gccgo
-+
-+package unix
-+
-+/*
-+#include <stdint.h>
-+int utimes(uintptr_t, uintptr_t);
-+int utimensat(int, uintptr_t, uintptr_t, int);
-+int getcwd(uintptr_t, size_t);
-+int accept(int, uintptr_t, uintptr_t);
-+int getdirent(int, uintptr_t, size_t);
-+int wait4(int, uintptr_t, int, uintptr_t);
-+int ioctl(int, int, uintptr_t);
-+int fcntl(uintptr_t, int, uintptr_t);
-+int acct(uintptr_t);
-+int chdir(uintptr_t);
-+int chroot(uintptr_t);
-+int close(int);
-+int dup(int);
-+void exit(int);
-+int faccessat(int, uintptr_t, unsigned int, int);
-+int fchdir(int);
-+int fchmod(int, unsigned int);
-+int fchmodat(int, uintptr_t, unsigned int, int);
-+int fchownat(int, uintptr_t, int, int, int);
-+int fdatasync(int);
-+int fsync(int);
-+int getpgid(int);
-+int getpgrp();
-+int getpid();
-+int getppid();
-+int getpriority(int, int);
-+int getrusage(int, uintptr_t);
-+int getsid(int);
-+int kill(int, int);
-+int syslog(int, uintptr_t, size_t);
-+int mkdir(int, uintptr_t, unsigned int);
-+int mkdirat(int, uintptr_t, unsigned int);
-+int mkfifo(uintptr_t, unsigned int);
-+int mknod(uintptr_t, unsigned int, int);
-+int mknodat(int, uintptr_t, unsigned int, int);
-+int nanosleep(uintptr_t, uintptr_t);
-+int open64(uintptr_t, int, unsigned int);
-+int openat(int, uintptr_t, int, unsigned int);
-+int read(int, uintptr_t, size_t);
-+int readlink(uintptr_t, uintptr_t, size_t);
-+int renameat(int, uintptr_t, int, uintptr_t);
-+int setdomainname(uintptr_t, size_t);
-+int sethostname(uintptr_t, size_t);
-+int setpgid(int, int);
-+int setsid();
-+int settimeofday(uintptr_t);
-+int setuid(int);
-+int setgid(int);
-+int setpriority(int, int, int);
-+int statx(int, uintptr_t, int, int, uintptr_t);
-+int sync();
-+uintptr_t times(uintptr_t);
-+int umask(int);
-+int uname(uintptr_t);
-+int unlink(uintptr_t);
-+int unlinkat(int, uintptr_t, int);
-+int ustat(int, uintptr_t);
-+int write(int, uintptr_t, size_t);
-+int dup2(int, int);
-+int posix_fadvise64(int, long long, long long, int);
-+int fchown(int, int, int);
-+int fstat(int, uintptr_t);
-+int fstatat(int, uintptr_t, uintptr_t, int);
-+int fstatfs(int, uintptr_t);
-+int ftruncate(int, long long);
-+int getegid();
-+int geteuid();
-+int getgid();
-+int getuid();
-+int lchown(uintptr_t, int, int);
-+int listen(int, int);
-+int lstat(uintptr_t, uintptr_t);
-+int pause();
-+int pread64(int, uintptr_t, size_t, long long);
-+int pwrite64(int, uintptr_t, size_t, long long);
-+#define c_select select
-+int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int setregid(int, int);
-+int setreuid(int, int);
-+int shutdown(int, int);
-+long long splice(int, uintptr_t, int, uintptr_t, int, int);
-+int stat(uintptr_t, uintptr_t);
-+int statfs(uintptr_t, uintptr_t);
-+int truncate(uintptr_t, long long);
-+int bind(int, uintptr_t, uintptr_t);
-+int connect(int, uintptr_t, uintptr_t);
-+int getgroups(int, uintptr_t);
-+int setgroups(int, uintptr_t);
-+int getsockopt(int, int, int, uintptr_t, uintptr_t);
-+int setsockopt(int, int, int, uintptr_t, uintptr_t);
-+int socket(int, int, int);
-+int socketpair(int, int, int, uintptr_t);
-+int getpeername(int, uintptr_t, uintptr_t);
-+int getsockname(int, uintptr_t, uintptr_t);
-+int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int nrecvmsg(int, uintptr_t, int);
-+int nsendmsg(int, uintptr_t, int);
-+int munmap(uintptr_t, uintptr_t);
-+int madvise(uintptr_t, size_t, int);
-+int mprotect(uintptr_t, size_t, int);
-+int mlock(uintptr_t, size_t);
-+int mlockall(int);
-+int msync(uintptr_t, size_t, int);
-+int munlock(uintptr_t, size_t);
-+int munlockall();
-+int pipe(uintptr_t);
-+int poll(uintptr_t, int, int);
-+int gettimeofday(uintptr_t, uintptr_t);
-+int time(uintptr_t);
-+int utime(uintptr_t, uintptr_t);
-+unsigned long long getsystemcfg(int);
-+int umount(uintptr_t);
-+int getrlimit(int, uintptr_t);
-+int setrlimit(int, uintptr_t);
-+long long lseek(int, long long, int);
-+uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);
-+
-+*/
-+import "C"
-+import (
-+	"syscall"
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.acct(C.uintptr_t(_p0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.chdir(C.uintptr_t(_p0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.chroot(C.uintptr_t(_p0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callclose(fd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.close(C.int(fd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup(oldfd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.dup(C.int(oldfd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callexit(code int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.exit(C.int(code)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchdir(fd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fchdir(C.int(fd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfdatasync(fd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fdatasync(C.int(fd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfsync(fd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fsync(C.int(fd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgid(pid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getpgid(C.int(pid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgrp() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getpgrp())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getpid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetppid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getppid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getpriority(C.int(which), C.int(who)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsid(pid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getsid(C.int(pid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callkill(pid int, sig int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.kill(C.int(pid), C.int(sig)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setsid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.settimeofday(C.uintptr_t(tv)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetuid(uid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setuid(C.int(uid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgid(uid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setgid(C.int(uid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsync() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.sync())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltimes(tms uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.times(C.uintptr_t(tms)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumask(mask int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.umask(C.int(mask)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calluname(buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.uname(C.uintptr_t(buf)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.unlink(C.uintptr_t(_p0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetegid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getegid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgeteuid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.geteuid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getgid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetuid() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getuid())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllisten(s int, n int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.listen(C.int(s), C.int(n)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpause() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.pause())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.shutdown(C.int(fd), C.int(how)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlockall(flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mlockall(C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlockall() (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.munlockall())
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpipe(p uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.pipe(C.uintptr_t(p)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltime(t uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.time(C.uintptr_t(t)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getsystemcfg(C.int(label)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.umount(C.uintptr_t(_p0)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {
-+	r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))
-+	e1 = syscall.GetErrno()
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-index 7a409745..c1cc0a41 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm
-+// +build darwin,386,!go1.12
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- 	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1598,6 +1682,33 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- 	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int32(r0)
-@@ -1607,3 +1718,94 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
-new file mode 100644
-index 00000000..e263fbdb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,386,go1.13
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+	r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+	res = Errno(r0)
-+	return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
-new file mode 100644
-index 00000000..00da1ebf
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go 386
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-index 10491e9e..a3fc4900 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
-+// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,386
-+// +build darwin,386,go1.12
- 
- package unix
- 
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	return
- }
- 
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setgroups(ngid int, gid *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- 	wpid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- 	return
- }
- 
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	return
- }
- 
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socket(domain int, typ int, proto int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 	return
- }
- 
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
--	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Shutdown(s int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
--	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	return
- }
- 
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func futimes(fd int, timeval *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+	_, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- 	r = int(r0)
- 	w = int(r1)
- 	if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- 	return
- }
- 
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kill(pid int, signum int, posix int) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+	_, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup(fd int) (nfd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- 	nfd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- 	return
- }
- 
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup2(from int, to int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	_, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exit(code int) {
--	Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+	syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- 	return
- }
- 
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchflags(fd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fpathconf(fd int, name int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_ftruncate_trampoline()
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- 	size = int(r0)
- 	return
- }
- 
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
- 
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
- 
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- 	pgid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- 	return
- }
- 
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgrp() (pgrp int) {
--	r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- 	pgrp = int(r0)
- 	return
- }
- 
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
- 
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
- 
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- 	prio = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- 	return
- }
- 
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- 	sid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- 	return
- }
- 
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Issetugid() (tainted bool) {
--	r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- 	tainted = bool(r0 != 0)
- 	return
- }
- 
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Kqueue() (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- 	return
- }
- 
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Listen(s int, backlog int) (err error) {
--	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- 	return
- }
- 
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
-+	r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- 	newoffset = int64(int64(r1)<<32 | int64(r0))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return
- }
- 
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setegid(egid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seteuid(euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setgid(gid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+	_, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setprivexec(flag int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- 	return
- }
- 
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Settimeofday(tp *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
- 
--func Setuid(uid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Sync() (err error) {
--	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+	_, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Umask(newmask int) (oldmask int) {
--	r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- 	oldmask = int(r0)
- 	return
- }
- 
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+	r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 	return
- }
- 
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1598,8 +2342,23 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_ptrace_trampoline()
-+
-+//go:linkname libc_ptrace libc_ptrace
-+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
--	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int32(r0)
- 	usec = int32(r1)
- 	if e1 != 0 {
-@@ -1607,3 +2366,134 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- 	}
- 	return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstat64_trampoline()
-+
-+//go:linkname libc_fstat64 libc_fstat64
-+//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatat64_trampoline()
-+
-+//go:linkname libc_fstatat64 libc_fstatat64
-+//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatfs64_trampoline()
-+
-+//go:linkname libc_fstatfs64 libc_fstatfs64
-+//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getfsstat64_trampoline()
-+
-+//go:linkname libc_getfsstat64 libc_getfsstat64
-+//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_lstat64_trampoline()
-+
-+//go:linkname libc_lstat64 libc_lstat64
-+//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_stat64_trampoline()
-+
-+//go:linkname libc_stat64 libc_stat64
-+//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_statfs64_trampoline()
-+
-+//go:linkname libc_statfs64 libc_statfs64
-+//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
-new file mode 100644
-index 00000000..6836a412
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
-@@ -0,0 +1,284 @@
-+// go run mkasm_darwin.go 386
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munmap(SB)
-+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ptrace(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_gettimeofday(SB)
-+TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstat64(SB)
-+TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatat64(SB)
-+TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatfs64(SB)
-+TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getfsstat64(SB)
-+TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lstat64(SB)
-+TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_stat64(SB)
-+TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_statfs64(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-index 07c6ebc9..f8e5c37c 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm64
-+// +build darwin,amd64,!go1.12
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- 	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1598,6 +1682,33 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- 	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int64(r0)
-@@ -1607,3 +1718,94 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
-new file mode 100644
-index 00000000..314042a9
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,amd64,go1.13
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+	r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+	res = Errno(r0)
-+	return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
-new file mode 100644
-index 00000000..d671e831
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go amd64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-index 5f1f6bfe..50d6437e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
-+// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,amd64
-+// +build darwin,amd64,go1.12
- 
- package unix
- 
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	return
- }
- 
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setgroups(ngid int, gid *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- 	wpid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- 	return
- }
- 
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	return
- }
- 
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socket(domain int, typ int, proto int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 	return
- }
- 
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
--	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Shutdown(s int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
--	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	return
- }
- 
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func futimes(fd int, timeval *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+	_, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- 	r = int(r0)
- 	w = int(r1)
- 	if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- 	return
- }
- 
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kill(pid int, signum int, posix int) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+	_, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup(fd int) (nfd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- 	nfd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- 	return
- }
- 
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup2(from int, to int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	_, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exit(code int) {
--	Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+	syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- 	return
- }
- 
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchflags(fd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fpathconf(fd int, name int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_ftruncate_trampoline()
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- 	size = int(r0)
- 	return
- }
- 
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
- 
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
- 
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- 	pgid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- 	return
- }
- 
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgrp() (pgrp int) {
--	r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- 	pgrp = int(r0)
- 	return
- }
- 
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
- 
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
- 
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- 	prio = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- 	return
- }
- 
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- 	sid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- 	return
- }
- 
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Issetugid() (tainted bool) {
--	r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- 	tainted = bool(r0 != 0)
- 	return
- }
- 
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Kqueue() (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- 	return
- }
- 
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Listen(s int, backlog int) (err error) {
--	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- 	return
- }
- 
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence))
- 	newoffset = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return
- }
- 
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setegid(egid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seteuid(euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setgid(gid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+	_, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setprivexec(flag int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- 	return
- }
- 
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Settimeofday(tp *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
- 
--func Setuid(uid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Sync() (err error) {
--	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Umask(newmask int) (oldmask int) {
--	r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- 	oldmask = int(r0)
- 	return
- }
- 
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 	return
- }
- 
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1598,8 +2342,23 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_ptrace_trampoline()
-+
-+//go:linkname libc_ptrace libc_ptrace
-+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
--	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int64(r0)
- 	usec = int32(r1)
- 	if e1 != 0 {
-@@ -1607,3 +2366,134 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- 	}
- 	return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstat64_trampoline()
-+
-+//go:linkname libc_fstat64 libc_fstat64
-+//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatat64_trampoline()
-+
-+//go:linkname libc_fstatat64 libc_fstatat64
-+//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatfs64_trampoline()
-+
-+//go:linkname libc_fstatfs64 libc_fstatfs64
-+//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getfsstat64_trampoline()
-+
-+//go:linkname libc_getfsstat64 libc_getfsstat64
-+//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_lstat64_trampoline()
-+
-+//go:linkname libc_lstat64 libc_lstat64
-+//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_stat64_trampoline()
-+
-+//go:linkname libc_stat64 libc_stat64
-+//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_statfs64_trampoline()
-+
-+//go:linkname libc_statfs64 libc_statfs64
-+//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
-new file mode 100644
-index 00000000..a3fdf099
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
-@@ -0,0 +1,284 @@
-+// go run mkasm_darwin.go amd64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munmap(SB)
-+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ptrace(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_gettimeofday(SB)
-+TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstat64(SB)
-+TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatat64(SB)
-+TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatfs64(SB)
-+TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getfsstat64(SB)
-+TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lstat64(SB)
-+TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_stat64(SB)
-+TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_statfs64(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-index 7a409745..cea04e04 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm
-+// +build darwin,arm,!go1.12
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- 	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1607,3 +1691,94 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
-new file mode 100644
-index 00000000..f519ce9a
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,arm,go1.13
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+	r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+	res = Errno(r0)
-+	return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
-new file mode 100644
-index 00000000..488e5570
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go arm
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-index 7a409745..63103950 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm
-+// +build darwin,arm,go1.12
- 
- package unix
- 
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	return
- }
- 
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setgroups(ngid int, gid *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- 	wpid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- 	return
- }
- 
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	return
- }
- 
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socket(domain int, typ int, proto int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 	return
- }
- 
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
--	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Shutdown(s int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
--	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	return
- }
- 
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func futimes(fd int, timeval *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+	_, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- 	r = int(r0)
- 	w = int(r1)
- 	if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- 	return
- }
- 
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kill(pid int, signum int, posix int) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+	_, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup(fd int) (nfd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- 	nfd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- 	return
- }
- 
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup2(from int, to int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	_, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exit(code int) {
--	Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+	syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- 	return
- }
- 
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchflags(fd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fpathconf(fd int, name int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+func libc_ftruncate_trampoline()
-+
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- 	size = int(r0)
- 	return
- }
- 
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
- 
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
- 
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- 	pgid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- 	return
- }
- 
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgrp() (pgrp int) {
--	r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- 	pgrp = int(r0)
- 	return
- }
- 
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
- 
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
- 
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- 	prio = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- 	return
- }
- 
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- 	sid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- 	return
- }
- 
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Issetugid() (tainted bool) {
--	r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- 	tainted = bool(r0 != 0)
- 	return
- }
- 
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Kqueue() (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- 	return
- }
- 
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Listen(s int, backlog int) (err error) {
--	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- 	return
- }
- 
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
-+	r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- 	newoffset = int64(int64(r1)<<32 | int64(r0))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return
- }
- 
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setegid(egid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seteuid(euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setgid(gid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+	_, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setprivexec(flag int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- 	return
- }
- 
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Settimeofday(tp *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
- 
--func Setuid(uid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Sync() (err error) {
--	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+	_, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Umask(newmask int) (oldmask int) {
--	r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- 	oldmask = int(r0)
- 	return
- }
- 
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+	r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 	return
- }
- 
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1599,7 +2343,7 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
--	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int32(r0)
- 	usec = int32(r1)
- 	if e1 != 0 {
-@@ -1607,3 +2351,134 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- 	}
- 	return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstat_trampoline()
-+
-+//go:linkname libc_fstat libc_fstat
-+//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatat_trampoline()
-+
-+//go:linkname libc_fstatat libc_fstatat
-+//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatfs_trampoline()
-+
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getfsstat_trampoline()
-+
-+//go:linkname libc_getfsstat libc_getfsstat
-+//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_lstat_trampoline()
-+
-+//go:linkname libc_lstat libc_lstat
-+//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_stat_trampoline()
-+
-+//go:linkname libc_stat libc_stat
-+//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_statfs_trampoline()
-+
-+//go:linkname libc_statfs libc_statfs
-+//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
-new file mode 100644
-index 00000000..b67f518f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
-@@ -0,0 +1,282 @@
-+// go run mkasm_darwin.go arm
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munmap(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_gettimeofday(SB)
-+TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstat(SB)
-+TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatat(SB)
-+TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatfs(SB)
-+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getfsstat(SB)
-+TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lstat(SB)
-+TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_stat(SB)
-+TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_statfs(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-similarity index 84%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-index 07c6ebc9..8c3bb3a2 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm64
-+// +build darwin,arm64,!go1.12
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- 	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1607,3 +1691,94 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
-new file mode 100644
-index 00000000..d64e6c80
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,arm64,go1.13
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+	r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+	res = Errno(r0)
-+	return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
-new file mode 100644
-index 00000000..b29dabb0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go arm64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-index 07c6ebc9..a8709f72 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,arm64
-+// +build darwin,arm64,go1.12
- 
- package unix
- 
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	return
- }
- 
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setgroups(ngid int, gid *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- 	wpid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- 	return
- }
- 
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	return
- }
- 
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
--	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socket(domain int, typ int, proto int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 	return
- }
- 
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
--	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Shutdown(s int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
--	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	return
- }
- 
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func futimes(fd int, timeval *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+	_, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- 	r = int(r0)
- 	w = int(r1)
- 	if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- 	return
- }
- 
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+	sz = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+	val = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func kill(pid int, signum int, posix int) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+	_, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	_, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+	_, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup(fd int) (nfd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- 	nfd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- 	return
- }
- 
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Dup2(from int, to int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+	_, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exit(code int) {
--	Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+	syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- 	return
- }
- 
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchflags(fd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fpathconf(fd int, name int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+func libc_ftruncate_trampoline()
-+
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- 	size = int(r0)
- 	return
- }
- 
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
- 
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
- 
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- 	pgid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- 	return
- }
- 
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpgrp() (pgrp int) {
--	r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- 	pgrp = int(r0)
- 	return
- }
- 
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
- 
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
- 
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- 	prio = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- 	return
- }
- 
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- 	sid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- 	return
- }
- 
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Issetugid() (tainted bool) {
--	r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+	r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- 	tainted = bool(r0 != 0)
- 	return
- }
- 
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Kqueue() (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- 	return
- }
- 
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+	_, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Listen(s int, backlog int) (err error) {
--	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+	_, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+	r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- 	val = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- 	return
- }
- 
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	} else {
- 		_p1 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	_, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence))
- 	newoffset = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return
- }
- 
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setegid(egid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seteuid(euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setgid(gid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+	_, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setprivexec(flag int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setrlimit(which int, lim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+	r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- 	pid = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- 	return
- }
- 
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Settimeofday(tp *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
- 
--func Setuid(uid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+	_, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	_, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Sync() (err error) {
--	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Umask(newmask int) (oldmask int) {
--	r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+	r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- 	oldmask = int(r0)
- 	return
- }
- 
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	_, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+	r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 	return
- }
- 
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+	_, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
- 	return
- }
- 
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+	r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1599,7 +2343,7 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
--	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+	r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- 	sec = int64(r0)
- 	usec = int32(r1)
- 	if e1 != 0 {
-@@ -1607,3 +2351,134 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- 	}
- 	return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstat_trampoline()
-+
-+//go:linkname libc_fstat libc_fstat
-+//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatat_trampoline()
-+
-+//go:linkname libc_fstatat libc_fstatat
-+//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_fstatfs_trampoline()
-+
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+	r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_getfsstat_trampoline()
-+
-+//go:linkname libc_getfsstat libc_getfsstat
-+//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_lstat_trampoline()
-+
-+//go:linkname libc_lstat libc_lstat
-+//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_stat_trampoline()
-+
-+//go:linkname libc_stat libc_stat
-+//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+func libc_statfs_trampoline()
-+
-+//go:linkname libc_statfs libc_statfs
-+//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
-new file mode 100644
-index 00000000..40cce1bb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
-@@ -0,0 +1,282 @@
-+// go run mkasm_darwin.go arm64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_munmap(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_gettimeofday(SB)
-+TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstat(SB)
-+TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatat(SB)
-+TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_fstatfs(SB)
-+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_getfsstat(SB)
-+TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_lstat(SB)
-+TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_stat(SB)
-+TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
-+	JMP	libc_statfs(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-index 7fa205cd..fe1fdd78 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
-+// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build dragonfly,amd64
-@@ -255,9 +255,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -412,6 +412,33 @@ func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -550,6 +577,21 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -580,6 +622,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -590,6 +647,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -621,6 +693,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
-@@ -651,6 +738,23 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
-@@ -859,6 +963,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -899,6 +1023,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -929,6 +1068,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -955,6 +1109,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1030,6 +1200,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1071,8 +1261,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1277,6 +1468,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1340,6 +1551,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-index 1a0bb4cb..600f1d26 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
-+// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build freebsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-index ac1e8e01..064934b0 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build freebsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-index 2b4e6acf..31d2c461 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
-+// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build freebsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +350,41 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +403,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-similarity index 90%
-copy from vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-index ac1e8e01..4adaaa56 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build freebsd,amd64
-+// +build freebsd,arm64
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- 	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- 	size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
-new file mode 100644
-index 00000000..92efa1da
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
-@@ -0,0 +1,87 @@
-+// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build illumos,amd64
-+
-+package unix
-+
-+import (
-+	"unsafe"
-+)
-+
-+//go:cgo_import_dynamic libc_readv readv "libc.so"
-+//go:cgo_import_dynamic libc_preadv preadv "libc.so"
-+//go:cgo_import_dynamic libc_writev writev "libc.so"
-+//go:cgo_import_dynamic libc_pwritev pwritev "libc.so"
-+
-+//go:linkname procreadv libc_readv
-+//go:linkname procpreadv libc_preadv
-+//go:linkname procwritev libc_writev
-+//go:linkname procpwritev libc_pwritev
-+
-+var (
-+	procreadv,
-+	procpreadv,
-+	procwritev,
-+	procpwritev syscallFunc
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readv(fd int, iovs []Iovec) (n int, err error) {
-+	var _p0 *Iovec
-+	if len(iovs) > 0 {
-+		_p0 = &iovs[0]
-+	}
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func preadv(fd int, iovs []Iovec, off int64) (n int, err error) {
-+	var _p0 *Iovec
-+	if len(iovs) > 0 {
-+		_p0 = &iovs[0]
-+	}
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func writev(fd int, iovs []Iovec) (n int, err error) {
-+	var _p0 *Iovec
-+	if len(iovs) > 0 {
-+		_p0 = &iovs[0]
-+	}
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {
-+	var _p0 *Iovec
-+	if len(iovs) > 0 {
-+		_p0 = &iovs[0]
-+	}
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
-similarity index 79%
-copy from vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_linux.go
-index b6ff9e39..fd2dae8e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
-@@ -1,7 +1,6 @@
--// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
--// Code generated by the command above; see README.md. DO NOT EDIT.
-+// Code generated by mkmerge.go; DO NOT EDIT.
- 
--// +build linux,s390x
-+// +build linux
- 
- package unix
- 
-@@ -10,7 +9,16 @@ import (
- 	"unsafe"
- )
- 
--var _ syscall.Errno
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {
-+	r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-@@ -143,21 +151,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -173,16 +166,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getcwd(buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
-@@ -309,6 +292,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(keyType)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(restriction)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func keyctlRestrictKeyring(cmd int, arg2 int) (err error) {
-+	_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- 	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- 	if e1 != 0 {
-@@ -412,6 +425,26 @@ func Adjtimex(buf *Timex) (state int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
-+	_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
-+	_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chdir(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -442,6 +475,16 @@ func Chroot(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ClockGetres(clockid int32, res *Timespec) (err error) {
-+	_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ClockGettime(clockid int32, time *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- 	if e1 != 0 {
-@@ -452,6 +495,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {
-+	_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Close(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -473,9 +526,13 @@ func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags in
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
-+func DeleteModule(name string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(name)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -484,8 +541,9 @@ func Dup(oldfd int) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-+func Dup(oldfd int) (fd int, err error) {
-+	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -494,9 +552,8 @@ func Dup3(oldfd int, newfd int, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
-+func Dup3(oldfd int, newfd int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -538,19 +595,14 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-+	SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+func Fchdir(fd int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -559,8 +611,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-+func Fchmod(fd int, mode uint32) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -569,8 +621,13 @@ func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -579,8 +636,8 @@ func Fchdir(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+func Fdatasync(fd int) (err error) {
-+	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -589,13 +646,20 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
-+	_p0, err = BytePtrFromString(attr)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	var _p1 unsafe.Pointer
-+	if len(dest) > 0 {
-+		_p1 = unsafe.Pointer(&dest[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)
-+	sz = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -604,9 +668,13 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func FinitModule(fd int, params string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(params)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -615,8 +683,15 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(dest) > 0 {
-+		_p0 = unsafe.Pointer(&dest[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))
-+	sz = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -635,6 +710,42 @@ func Flock(fd int, how int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fremovexattr(fd int, attr string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attr)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(dest) > 0 {
-+		_p1 = unsafe.Pointer(&dest[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -674,7 +785,7 @@ func Getpgid(pid int) (pgid int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
-@@ -682,7 +793,7 @@ func Getpid() (pid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
-@@ -739,7 +850,7 @@ func Getsid(pid int) (sid int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
- 	tid = int(r0)
- 	return
- }
-@@ -773,6 +884,27 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func InitModule(moduleImage []byte, params string) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(moduleImage) > 0 {
-+		_p0 = unsafe.Pointer(&moduleImage[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(params)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(pathname)
-@@ -955,6 +1087,22 @@ func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func MemfdCreate(name string, flags int) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(name)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -995,6 +1143,17 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func PivotRoot(newroot string, putold string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(newroot)
-@@ -1035,6 +1194,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func read(fd int, p []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(p) > 0 {
-@@ -1072,7 +1242,7 @@ func Removexattr(path string, attr string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(oldpath)
- 	if err != nil {
-@@ -1083,7 +1253,7 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1227,15 +1397,24 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
-+func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)
-+	newfd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +1423,15 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Sync() {
-+	SyscallNoError(SYS_SYNC, 0, 0, 0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Syncfs(fd int) (err error) {
-+	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1254,9 +1440,8 @@ func Sysinfo(info *Sysinfo_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(r0)
-+func Sysinfo(info *Sysinfo_t) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1287,7 +1472,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
- 	oldmask = int(r0)
- 	return
- }
-@@ -1329,16 +1514,6 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func write(fd int, p []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(p) > 0 {
-@@ -1388,24 +1563,15 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-+func readv(fd int, iovs []Iovec) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-+	r0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1414,14 +1580,15 @@ func Madvise(b []byte, advice int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mprotect(b []byte, prot int) (err error) {
-+func writev(fd int, iovs []Iovec) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+	r0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1430,14 +1597,15 @@ func Mprotect(b []byte, prot int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mlock(b []byte) (err error) {
-+func preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+	r0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1446,24 +1614,15 @@ func Mlock(b []byte) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlock(b []byte) (err error) {
-+func pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+	r0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1472,34 +1631,15 @@ func Mlockall(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Msync(b []byte, flags int) (err error) {
-+func preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+	r0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1508,14 +1648,14 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+func pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
-+	if len(iovs) > 0 {
-+		_p0 = unsafe.Pointer(&iovs[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+	r0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1525,141 +1665,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
--	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, buf *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
--	egid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
--	euid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
--	gid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrlimit(resource int, rlim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
--	uid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit() (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lchown(path string, uid int, gid int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Pause() (err error) {
--	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func munmap(addr uintptr, length uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1668,15 +1675,14 @@ func Pause() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+func Madvise(b []byte, advice int) (err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(b) > 0 {
-+		_p0 = unsafe.Pointer(&b[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
--	n = int(r0)
-+	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1685,58 +1691,14 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+func Mprotect(b []byte, prot int) (err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(b) > 0 {
-+		_p0 = unsafe.Pointer(&b[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
--	off = int64(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
--	r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
--	written = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1745,18 +1707,14 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Mlock(b []byte) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(b) > 0 {
-+		_p0 = unsafe.Pointer(&b[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1765,8 +1723,8 @@ func Setregid(rgid int, egid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setresgid(rgid int, egid int, sgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+func Mlockall(flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1775,18 +1733,14 @@ func Setresgid(rgid int, egid int, sgid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setresuid(ruid int, euid int, suid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Msync(b []byte, flags int) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(b) > 0 {
-+		_p0 = unsafe.Pointer(&b[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setrlimit(resource int, rlim *Rlimit) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1795,19 +1749,14 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Munlock(b []byte) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(b) > 0 {
-+		_p0 = unsafe.Pointer(&b[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int64(r0)
-+	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1816,13 +1765,8 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Munlockall() (err error) {
-+	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1831,13 +1775,13 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, buf *Statfs_t) (err error) {
-+func faccessat(dirfd int, path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+	_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1846,23 +1790,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
--	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Truncate(path string, length int64) (err error) {
-+func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {
- 	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
-+	_p0, err = BytePtrFromString(pathname)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+	_, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1871,44 +1805,9 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getgroups(n int, list *_Gid_t) (nn int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
--	nn = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func setgroups(n int, list *_Gid_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Utime(path string, buf *Utimbuf) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {
-+	r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1924,14 +1823,3 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
- 	}
- 	return
- }
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-index 38c1bbdf..ba63af7b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go
-+// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,386
-@@ -14,1259 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(int64(r1)<<32 | int64(r0))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1275,9 +24,8 @@ func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1286,16 +34,9 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(int64(r1)<<32 | int64(r0))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1304,13 +45,8 @@ func Uname(buf *Utsname) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1319,8 +55,8 @@ func Unmount(target string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +65,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +76,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,128 +93,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1518,8 +103,8 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1528,8 +113,8 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
--	_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1538,18 +123,13 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1569,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1577,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1585,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1593,7 +173,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1695,6 +275,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
- 	r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
- 	written = int(r0)
-@@ -1706,8 +306,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1716,8 +317,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1817,6 +419,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(n int, list *_Gid_t) (nn int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
- 	nn = int(r0)
-@@ -1860,15 +472,8 @@ func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Pause() (err error) {
-+	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1877,8 +482,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pause() (err error) {
--	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func getrlimit(resource int, rlim *rlimit32) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1887,8 +492,8 @@ func Pause() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getrlimit(resource int, rlim *rlimit32) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+func setrlimit(resource int, rlim *rlimit32) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1897,8 +502,13 @@ func getrlimit(resource int, rlim *rlimit32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func setrlimit(resource int, rlim *rlimit32) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1943,6 +553,21 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
- 	n = int(r0)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-index dc8fe0a8..f64adef4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go
-+// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,amd64
-@@ -14,1446 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1462,8 +24,8 @@ func Munlock(b []byte) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1472,14 +34,9 @@ func Mlockall(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1488,8 +45,8 @@ func Msync(b []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1498,8 +55,9 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1555,6 +113,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
- 	if e1 != 0 {
-@@ -1576,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1584,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1592,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1610,14 +183,14 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func InotifyInit() (fd int, err error) {
-+func inotifyInit() (fd int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
-@@ -1673,21 +246,6 @@ func Listen(s int, n int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Pause() (err error) {
- 	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1732,9 +290,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
--	off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1743,9 +310,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
--	n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	off = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1765,8 +332,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1775,8 +343,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1856,21 +425,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Statfs(path string, buf *Statfs_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1911,6 +465,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
-@@ -2101,6 +665,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Utime(path string, buf *Utimbuf) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -2116,8 +695,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2126,8 +710,8 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2144,3 +728,18 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-index 4d280427..ac19523e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go
-+// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,arm
-@@ -14,1456 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(int64(r1)<<32 | int64(r0))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1472,14 +24,8 @@ func Mlockall(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1488,8 +34,9 @@ func Msync(b []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(int64(r1)<<32 | int64(r0))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1498,8 +45,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1697,6 +244,34 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -1717,8 +292,23 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1726,7 +316,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1734,7 +324,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1742,7 +332,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1800,6 +390,36 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Pause() (err error) {
-+	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
- 	r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
- 	written = int(r0)
-@@ -1822,8 +442,9 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1832,8 +453,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1918,8 +540,8 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Gettimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1928,15 +550,13 @@ func Gettimeofday(tv *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1945,8 +565,23 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Pause() (err error) {
--	_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func Gettimeofday(tv *Timeval) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2053,3 +688,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-index 20ad4b6c..f0d2890b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go
-+// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,arm64
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1265,120 +45,14 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,125 +62,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1571,7 +128,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1579,7 +136,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1587,7 +144,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1605,7 +162,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1656,9 +213,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
--	off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1667,9 +233,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
--	n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	off = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1689,8 +255,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1699,8 +266,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2020,8 +588,13 @@ func Gettimeofday(tv *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-index 9f194dc4..aecbbca7 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go
-+// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,mips
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,118 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1529,7 +114,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1537,7 +122,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1545,7 +130,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1553,7 +138,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1619,6 +204,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- 	r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- 	n = int(r0)
-@@ -1641,8 +246,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1651,8 +257,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1711,9 +318,9 @@ func Shutdown(fd int, how int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int64(int64(r0)<<32 | int64(r1))
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1747,6 +354,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
-@@ -1957,6 +574,21 @@ func Iopl(level int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -1978,13 +610,13 @@ func Time(t *Time_t) (tt Time_t, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1993,8 +625,13 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2003,13 +640,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func Lstat(path string, stat *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2018,13 +655,23 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Utime(path string, buf *Utimbuf) (err error) {
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2033,15 +680,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2060,8 +705,10 @@ func Pause() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe() (p1 int, p2 int, err error) {
-+	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	p1 = int(r0)
-+	p2 = int(r1)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-index 4fde3ef0..424fb7fb 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go
-+// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,mips64
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,135 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1556,7 +124,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1564,7 +132,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1572,7 +140,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1590,7 +158,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1666,9 +234,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
--	off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1677,9 +254,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
--	n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	off = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1699,8 +276,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1709,8 +287,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1830,6 +409,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
-@@ -2020,6 +609,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -2045,8 +649,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2065,6 +674,21 @@ func fstat(fd int, st *stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func lstat(path string, st *stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-index f6463423..28c7239c 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go
-+// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,mips64le
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,135 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1556,7 +124,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1564,7 +132,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1572,7 +140,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1590,7 +158,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1666,9 +234,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
--	off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1677,9 +254,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
--	n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	off = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1699,8 +276,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1709,8 +287,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1830,6 +409,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
-@@ -2020,6 +609,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -2045,8 +649,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2065,6 +674,21 @@ func fstat(fd int, st *stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func lstat(path string, st *stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-index 964591e5..84596b30 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go
-+// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,mipsle
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,118 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1529,7 +114,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1537,7 +122,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1545,7 +130,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1553,7 +138,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1619,6 +204,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- 	r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- 	n = int(r0)
-@@ -1641,8 +246,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1651,8 +257,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1711,9 +318,9 @@ func Shutdown(fd int, how int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int64(int64(r1)<<32 | int64(r0))
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1747,6 +354,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- 	fd = int(r0)
-@@ -1957,6 +574,21 @@ func Iopl(level int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -1978,13 +610,13 @@ func Time(t *Time_t) (tt Time_t, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Lstat(path string, stat *Stat_t) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1993,8 +625,13 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2003,13 +640,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Stat(path string, stat *Stat_t) (err error) {
-+func Lstat(path string, stat *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2018,13 +655,23 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Utime(path string, buf *Utimbuf) (err error) {
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2033,15 +680,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
-+func Stat(path string, stat *Stat_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2060,8 +705,10 @@ func Pause() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe() (p1 int, p2 int, err error) {
-+	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+	p1 = int(r0)
-+	p2 = int(r1)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-index 204ab1ae..de022639 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go
-+// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,ppc64
-@@ -14,1270 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1286,16 +24,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1304,13 +34,9 @@ func Uname(buf *Utsname) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1319,8 +45,8 @@ func Unmount(target string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,108 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1498,15 +93,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1515,8 +103,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1525,18 +113,13 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1566,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1574,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1582,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1600,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1722,6 +305,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- 	off = int64(r0)
-@@ -1734,7 +337,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1755,8 +358,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1765,8 +369,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1876,8 +481,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
--	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+func Truncate(path string, length int64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1886,13 +496,8 @@ func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Truncate(path string, length int64) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2091,6 +696,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -2127,8 +747,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2137,8 +762,8 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2155,3 +780,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func syncFileRange2(fd int, flags int, off int64, n int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-index a8a2b0b0..888f21d3 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go
-+// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,ppc64le
-@@ -14,1270 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1286,16 +24,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1304,13 +34,9 @@ func Uname(buf *Utsname) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1319,8 +45,8 @@ func Unmount(target string, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1388,108 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1498,15 +93,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1515,8 +103,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1525,18 +113,13 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1566,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1574,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1582,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1600,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1722,6 +305,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- 	off = int64(r0)
-@@ -1734,7 +337,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1755,8 +358,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1765,8 +369,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1876,8 +481,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
--	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+func Truncate(path string, length int64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1886,13 +496,8 @@ func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Truncate(path string, length int64) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2091,6 +696,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -2127,8 +747,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2137,8 +762,8 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -2155,3 +780,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func syncFileRange2(fd int, flags int, off int64, n int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
-new file mode 100644
-index 00000000..b7613344
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
-@@ -0,0 +1,582 @@
-+// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build linux,riscv64
-+
-+package unix
-+
-+import (
-+	"syscall"
-+	"unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ftruncate(fd int, length int64) (err error) {
-+	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getegid() (egid int) {
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
-+	egid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
-+	euid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
-+	gid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
-+	uid = int(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Listen(s int, n int) (err error) {
-+	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(p) > 0 {
-+		_p0 = unsafe.Pointer(&p[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(p) > 0 {
-+		_p0 = unsafe.Pointer(&p[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	off = int64(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
-+	written = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setregid(rgid int, egid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresgid(rgid int, egid int, sgid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresuid(ruid int, euid int, suid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setreuid(ruid int, euid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Shutdown(fd int, how int) (err error) {
-+	_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+	n = int64(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, buf *Statfs_t) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-+	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Truncate(path string, length int64) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-+	r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
-+	r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+	_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-+	nn = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setgroups(n int, list *_Gid_t) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+	_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+	_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+	_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(p) > 0 {
-+		_p0 = unsafe.Pointer(&p[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+	r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
-+	xaddr = uintptr(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Gettimeofday(tv *Timeval) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-index b6ff9e39..9bc353f0 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
-+// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,s390x
-@@ -14,1446 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg2)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg3)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(arg4)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(payload) > 0 {
--		_p0 = unsafe.Pointer(&payload[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
--	ret = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(payload) > 0 {
--		_p2 = unsafe.Pointer(&payload[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(keyType)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(description)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(callback)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
--	id = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
--	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
--	n = int64(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1462,8 +24,8 @@ func Munlock(b []byte) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1472,14 +34,9 @@ func Mlockall(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Msync(b []byte, flags int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+	r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+	n = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1488,8 +45,8 @@ func Msync(b []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1498,8 +55,9 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1555,6 +113,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
- 	if e1 != 0 {
-@@ -1576,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1584,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1592,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1610,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1702,6 +275,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- 	off = int64(r0)
-@@ -1735,8 +328,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1745,8 +339,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1871,6 +466,16 @@ func Truncate(path string, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(n int, list *_Gid_t) (nn int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
- 	nn = int(r0)
-@@ -1892,6 +497,21 @@ func setgroups(n int, list *_Gid_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -1917,8 +537,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1935,3 +560,18 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- 	}
- 	return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(cmdline)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-index 2dd98434..854e816d 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go
-+// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build linux,sparc64
-@@ -14,944 +14,8 @@ var _ syscall.Errno
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(buf) > 0 {
--		_p1 = unsafe.Pointer(&buf[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
--	r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
--	wpid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(arg)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(source)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	var _p2 *byte
--	_p2, err = BytePtrFromString(fstype)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
--	r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
--	state = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
--	r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
--	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
--	_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
--	Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
--	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
--	_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
--	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
--	pgid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
--	r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
--	pid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
--	r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
--	ppid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
--	r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
--	prio = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
--	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
--	sid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
--	r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
--	tid = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(dest) > 0 {
--		_p2 = unsafe.Pointer(&dest[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(pathname)
--	if err != nil {
--		return
--	}
--	r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
--	watchdesc = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
--	fd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
--	r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
--	success = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 unsafe.Pointer
--	if len(dest) > 0 {
--		_p1 = unsafe.Pointer(&dest[0])
--	} else {
--		_p1 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
--	sz = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
--	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(newroot)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(putold)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
--	_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(oldpath)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(newpath)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
--	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
--	pid = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
--	_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(attr)
--	if err != nil {
--		return
--	}
--	var _p2 unsafe.Pointer
--	if len(data) > 0 {
--		_p2 = unsafe.Pointer(&data[0])
--	} else {
--		_p2 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+	_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -960,15 +24,8 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Sync() {
--	Syscall(SYS_SYNC, 0, 0, 0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
--	_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+	_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -988,120 +45,14 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
--	_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
--	r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
--	ticks = uintptr(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
--	r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
--	oldmask = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
--	_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(target)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
--	_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 	var _p0 unsafe.Pointer
--	if len(p) > 0 {
--		_p0 = unsafe.Pointer(&p[0])
-+	if len(events) > 0 {
-+		_p0 = unsafe.Pointer(&events[0])
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
--	_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
--	n = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
--	r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1111,82 +62,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func munmap(addr uintptr, length uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
--	var _p0 unsafe.Pointer
--	if len(b) > 0 {
--		_p0 = unsafe.Pointer(&b[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
--	_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1195,8 +72,8 @@ func Mlockall(flags int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Munlockall() (err error) {
--	_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1205,15 +82,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(events) > 0 {
--		_p0 = unsafe.Pointer(&events[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
--	n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1222,8 +92,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Dup2(oldfd int, newfd int) (err error) {
--	_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1232,18 +102,13 @@ func Dup2(oldfd int, newfd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fchown(fd int, uid int, gid int) (err error) {
--	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
--	if e1 != 0 {
--		err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
- 	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1273,7 +138,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getegid() (egid int) {
--	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
-@@ -1281,7 +146,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Geteuid() (euid int) {
--	r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
-@@ -1289,7 +154,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getgid() (gid int) {
--	r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
-@@ -1307,7 +172,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Getuid() (uid int) {
--	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+	r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
-@@ -1409,6 +274,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- 	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- 	off = int64(r0)
-@@ -1442,8 +327,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsgid(gid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1452,8 +338,9 @@ func Setfsgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setfsuid(uid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+	r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+	prev = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1778,6 +665,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- 	if e1 != 0 {
-@@ -1803,8 +705,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1813,8 +720,8 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe2(p *[2]_C_int, flags int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-index db99fd0c..3bbd9e39 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
-+// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build netbsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -533,6 +570,245 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-index 7b6c2c87..d8cf5012 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
-+// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build netbsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -533,6 +570,245 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-index 0f4cc3b5..1153fe69 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
-+// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build netbsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -533,6 +570,245 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(file)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(attrname)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+	ret = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-similarity index 92%
-copy from vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-index ac1e8e01..24b4ebb4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build freebsd,amd64
-+// +build netbsd,arm64
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,10 +350,10 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
-+func pipe() (fd1 int, fd2 int, err error) {
- 	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+	fd1 = int(r0)
-+	fd2 = int(r1)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -378,8 +362,15 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ioctl(fd int, req uint, arg uintptr) (err error) {
--	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,13 +379,15 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Access(path string, mode uint32) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
- 	}
--	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -403,8 +396,8 @@ func Access(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
--	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -413,8 +406,14 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func CapEnter() (err error) {
--	_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -423,8 +422,13 @@ func CapEnter() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func capRightsGet(version int, fd int, rightsp *CapRights) (err error) {
--	_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))
-+func Access(path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -433,8 +437,8 @@ func capRightsGet(version int, fd int, rightsp *CapRights) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func capRightsLimit(fd int, rightsp *CapRights) (err error) {
--	_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)
-+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-+	_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -549,6 +553,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -770,8 +784,13 @@ func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
--	_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -780,13 +799,8 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+	_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -896,8 +910,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -906,8 +925,8 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -916,8 +935,8 @@ func Fsync(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -926,15 +945,8 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
-+func Ftruncate(fd int, length int64) (err error) {
-+	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -943,14 +955,6 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
--	size = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getegid() (egid int) {
- 	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
-@@ -1224,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1239,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -1265,13 +1299,13 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- 	fd = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1304,7 +1338,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1321,7 +1355,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1463,7 +1497,7 @@ func Rmdir(path string) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+	r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
- 	newoffset = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1473,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1513,21 +1548,6 @@ func Setgid(gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setlogin(name string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(name)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Setpgid(pid int, pgid int) (err error) {
- 	_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
- 	if e1 != 0 {
-@@ -1568,26 +1588,6 @@ func Setreuid(ruid int, euid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setresgid(rgid int, egid int, sgid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setresuid(ruid int, euid int, suid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Setrlimit(which int, lim *Rlimit) (err error) {
- 	_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- 	if e1 != 0 {
-@@ -1644,13 +1644,13 @@ func Stat(path string, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1715,7 +1715,7 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1732,21 +1732,6 @@ func Umask(newmask int) (oldmask int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Undelete(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Unlink(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1810,7 +1795,7 @@ func write(fd int, p []byte) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1852,17 +1837,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
--	r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
--	nfd = int(r0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-index 7baea87c..b44b31ae 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
-+// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build openbsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -531,6 +579,21 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getrtable() (rtable int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+	rtable = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Setrtable(rtable int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- 	pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-index 0d69ce6b..67f93ee7 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
-+// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build openbsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -531,6 +579,21 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getrtable() (rtable int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+	rtable = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Setrtable(rtable int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- 	pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-index 41572c26..d7c878b1 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go
-+// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build openbsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe(p *[2]_C_int) (err error) {
--	_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- 	var _p0 unsafe.Pointer
- 	if len(buf) > 0 {
- 		_p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+	_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	Syscall(SYS_EXIT, uintptr(code), 0, 0)
- 	return
-@@ -531,6 +579,21 @@ func Exit(code int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- 	if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- 	if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- 	if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getrtable() (rtable int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+	rtable = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(link)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- 	if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- 	if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+	fd = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p1 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p1 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(from)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(to)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Setrtable(rtable int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- 	pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(oldpath)
-+	if err != nil {
-+		return
-+	}
-+	var _p1 *byte
-+	_p1, err = BytePtrFromString(newpath)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-similarity index 87%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-index 10491e9e..8facd695 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
-+// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build darwin,386
-+// +build openbsd,arm64
- 
- package unix
- 
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
--	var _p0 unsafe.Pointer
--	if len(mib) > 0 {
--		_p0 = unsafe.Pointer(&mib[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
--	r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
--	val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
--	_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -376,10 +360,15 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func pipe() (r int, w int, err error) {
--	r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
--	r = int(r0)
--	w = int(r1)
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -388,8 +377,15 @@ func pipe() (r int, w int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func kill(pid int, signum int, posix int) (err error) {
--	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+func Getcwd(buf []byte) (n int, err error) {
-+	var _p0 unsafe.Pointer
-+	if len(buf) > 0 {
-+		_p0 = unsafe.Pointer(&buf[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -408,6 +404,33 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+	var _p0 unsafe.Pointer
-+	if len(mib) > 0 {
-+		_p0 = unsafe.Pointer(&mib[0])
-+	} else {
-+		_p0 = unsafe.Pointer(&_zero)
-+	}
-+	_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -539,18 +562,8 @@ func Dup2(from int, to int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Exchangedata(path1 string, path2 string, options int) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path1)
--	if err != nil {
--		return
--	}
--	var _p1 *byte
--	_p1, err = BytePtrFromString(path2)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+func Dup3(from int, to int, flags int) (err error) {
-+	_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -673,7 +686,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Fstat(fd int, stat *Stat_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -682,8 +695,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
--	_, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -692,8 +710,8 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Fsync(fd int) (err error) {
--	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+	_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -702,8 +720,8 @@ func Fsync(fd int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Ftruncate(fd int, length int64) (err error) {
--	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+func Fsync(fd int) (err error) {
-+	_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -712,15 +730,8 @@ func Ftruncate(fd int, length int64) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
--	var _p0 unsafe.Pointer
--	if len(buf) > 0 {
--		_p0 = unsafe.Pointer(&buf[0])
--	} else {
--		_p0 = unsafe.Pointer(&_zero)
--	}
--	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
--	n = int(r0)
-+func Ftruncate(fd int, length int64) (err error) {
-+	_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -729,14 +740,6 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Getdtablesize() (size int) {
--	r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
--	size = int(r0)
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getegid() (egid int) {
- 	r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- 	egid = int(r0)
-@@ -817,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Getrtable() (rtable int, err error) {
-+	r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+	rtable = int(r0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- 	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- 	if e1 != 0 {
-@@ -838,6 +852,16 @@ func Getsid(pid int) (sid int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Gettimeofday(tv *Timeval) (err error) {
-+	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getuid() (uid int) {
- 	r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- 	uid = int(r0)
-@@ -847,13 +871,23 @@ func Getuid() (uid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Issetugid() (tainted bool) {
--	r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+	r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
- 	tainted = bool(r0 != 0)
- 	return
- }
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Kill(pid int, signum syscall.Signal) (err error) {
-+	_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Kqueue() (fd int, err error) {
- 	r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- 	fd = int(r0)
-@@ -936,7 +970,7 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -990,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1005,6 +1054,31 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1060,7 +1134,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1077,7 +1151,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	} else {
- 		_p0 = unsafe.Pointer(&_zero)
- 	}
--	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- 	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1219,8 +1293,8 @@ func Rmdir(path string) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
--	r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
--	newoffset = int64(int64(r1)<<32 | int64(r0))
-+	r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
-+	newoffset = int64(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1229,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
--	_, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1240,7 +1315,7 @@ func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func Setegid(egid int) (err error) {
--	_, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+	_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1304,8 +1379,8 @@ func Setpriority(which int, who int, prio int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setprivexec(flag int) (err error) {
--	_, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+func Setregid(rgid int, egid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1314,8 +1389,8 @@ func Setprivexec(flag int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setregid(rgid int, egid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+func Setreuid(ruid int, euid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1324,8 +1399,18 @@ func Setregid(rgid int, egid int) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Setreuid(ruid int, euid int) (err error) {
--	_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+func Setresgid(rgid int, egid int, sgid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresuid(ruid int, euid int, suid int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1344,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
-+func Setrtable(rtable int) (err error) {
-+	_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+	if e1 != 0 {
-+		err = errnoErr(e1)
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- 	r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- 	pid = int(r0)
-@@ -1381,7 +1476,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1396,7 +1491,7 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+	_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1461,7 +1556,7 @@ func Truncate(path string, length int64) (err error) {
- 	if err != nil {
- 		return
- 	}
--	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+	_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-@@ -1478,21 +1573,6 @@ func Umask(newmask int) (oldmask int) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func Undelete(path string) (err error) {
--	var _p0 *byte
--	_p0, err = BytePtrFromString(path)
--	if err != nil {
--		return
--	}
--	_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
--	if e1 != 0 {
--		err = errnoErr(e1)
--	}
--	return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Unlink(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1556,7 +1636,7 @@ func write(fd int, p []byte) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
--	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+	r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
- 	ret = uintptr(r0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
-@@ -1598,10 +1678,13 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- 
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
- 
--func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
--	r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
--	sec = int32(r0)
--	usec = int32(r1)
-+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
- 	if e1 != 0 {
- 		err = errnoErr(e1)
- 	}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-index 4287133d..a96165d4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall_solaris.pl -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go
-+// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build solaris,amd64
-@@ -25,7 +25,11 @@ import (
- //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so"
- //go:cgo_import_dynamic libc_acct acct "libc.so"
-+//go:cgo_import_dynamic libc___makedev __makedev "libc.so"
-+//go:cgo_import_dynamic libc___major __major "libc.so"
-+//go:cgo_import_dynamic libc___minor __minor "libc.so"
- //go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
-+//go:cgo_import_dynamic libc_poll poll "libc.so"
- //go:cgo_import_dynamic libc_access access "libc.so"
- //go:cgo_import_dynamic libc_adjtime adjtime "libc.so"
- //go:cgo_import_dynamic libc_chdir chdir "libc.so"
-@@ -37,6 +41,7 @@ import (
- //go:cgo_import_dynamic libc_dup dup "libc.so"
- //go:cgo_import_dynamic libc_dup2 dup2 "libc.so"
- //go:cgo_import_dynamic libc_exit exit "libc.so"
-+//go:cgo_import_dynamic libc_faccessat faccessat "libc.so"
- //go:cgo_import_dynamic libc_fchdir fchdir "libc.so"
- //go:cgo_import_dynamic libc_fchmod fchmod "libc.so"
- //go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so"
-@@ -46,6 +51,7 @@ import (
- //go:cgo_import_dynamic libc_flock flock "libc.so"
- //go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so"
- //go:cgo_import_dynamic libc_fstat fstat "libc.so"
-+//go:cgo_import_dynamic libc_fstatat fstatat "libc.so"
- //go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so"
- //go:cgo_import_dynamic libc_getdents getdents "libc.so"
- //go:cgo_import_dynamic libc_getgid getgid "libc.so"
-@@ -75,6 +81,7 @@ import (
- //go:cgo_import_dynamic libc_mlock mlock "libc.so"
- //go:cgo_import_dynamic libc_mlockall mlockall "libc.so"
- //go:cgo_import_dynamic libc_mprotect mprotect "libc.so"
-+//go:cgo_import_dynamic libc_msync msync "libc.so"
- //go:cgo_import_dynamic libc_munlock munlock "libc.so"
- //go:cgo_import_dynamic libc_munlockall munlockall "libc.so"
- //go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so"
-@@ -90,6 +97,7 @@ import (
- //go:cgo_import_dynamic libc_renameat renameat "libc.so"
- //go:cgo_import_dynamic libc_rmdir rmdir "libc.so"
- //go:cgo_import_dynamic libc_lseek lseek "libc.so"
-+//go:cgo_import_dynamic libc_select select "libc.so"
- //go:cgo_import_dynamic libc_setegid setegid "libc.so"
- //go:cgo_import_dynamic libc_seteuid seteuid "libc.so"
- //go:cgo_import_dynamic libc_setgid setgid "libc.so"
-@@ -121,6 +129,7 @@ import (
- //go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so"
- //go:cgo_import_dynamic libc_mmap mmap "libc.so"
- //go:cgo_import_dynamic libc_munmap munmap "libc.so"
-+//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so"
- //go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so"
-@@ -129,7 +138,6 @@ import (
- //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so"
- //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
- //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
--//go:cgo_import_dynamic libc_sysconf sysconf "libc.so"
- 
- //go:linkname procpipe libc_pipe
- //go:linkname procgetsockname libc_getsockname
-@@ -146,7 +154,11 @@ import (
- //go:linkname proc__xnet_recvmsg libc___xnet_recvmsg
- //go:linkname proc__xnet_sendmsg libc___xnet_sendmsg
- //go:linkname procacct libc_acct
-+//go:linkname proc__makedev libc___makedev
-+//go:linkname proc__major libc___major
-+//go:linkname proc__minor libc___minor
- //go:linkname procioctl libc_ioctl
-+//go:linkname procpoll libc_poll
- //go:linkname procAccess libc_access
- //go:linkname procAdjtime libc_adjtime
- //go:linkname procChdir libc_chdir
-@@ -158,6 +170,7 @@ import (
- //go:linkname procDup libc_dup
- //go:linkname procDup2 libc_dup2
- //go:linkname procExit libc_exit
-+//go:linkname procFaccessat libc_faccessat
- //go:linkname procFchdir libc_fchdir
- //go:linkname procFchmod libc_fchmod
- //go:linkname procFchmodat libc_fchmodat
-@@ -167,6 +180,7 @@ import (
- //go:linkname procFlock libc_flock
- //go:linkname procFpathconf libc_fpathconf
- //go:linkname procFstat libc_fstat
-+//go:linkname procFstatat libc_fstatat
- //go:linkname procFstatvfs libc_fstatvfs
- //go:linkname procGetdents libc_getdents
- //go:linkname procGetgid libc_getgid
-@@ -196,6 +210,7 @@ import (
- //go:linkname procMlock libc_mlock
- //go:linkname procMlockall libc_mlockall
- //go:linkname procMprotect libc_mprotect
-+//go:linkname procMsync libc_msync
- //go:linkname procMunlock libc_munlock
- //go:linkname procMunlockall libc_munlockall
- //go:linkname procNanosleep libc_nanosleep
-@@ -211,6 +226,7 @@ import (
- //go:linkname procRenameat libc_renameat
- //go:linkname procRmdir libc_rmdir
- //go:linkname proclseek libc_lseek
-+//go:linkname procSelect libc_select
- //go:linkname procSetegid libc_setegid
- //go:linkname procSeteuid libc_seteuid
- //go:linkname procSetgid libc_setgid
-@@ -242,6 +258,7 @@ import (
- //go:linkname proc__xnet_connect libc___xnet_connect
- //go:linkname procmmap libc_mmap
- //go:linkname procmunmap libc_munmap
-+//go:linkname procsendfile libc_sendfile
- //go:linkname proc__xnet_sendto libc___xnet_sendto
- //go:linkname proc__xnet_socket libc___xnet_socket
- //go:linkname proc__xnet_socketpair libc___xnet_socketpair
-@@ -250,7 +267,6 @@ import (
- //go:linkname procgetpeername libc_getpeername
- //go:linkname procsetsockopt libc_setsockopt
- //go:linkname procrecvfrom libc_recvfrom
--//go:linkname procsysconf libc_sysconf
- 
- var (
- 	procpipe,
-@@ -268,7 +284,11 @@ var (
- 	proc__xnet_recvmsg,
- 	proc__xnet_sendmsg,
- 	procacct,
-+	proc__makedev,
-+	proc__major,
-+	proc__minor,
- 	procioctl,
-+	procpoll,
- 	procAccess,
- 	procAdjtime,
- 	procChdir,
-@@ -280,6 +300,7 @@ var (
- 	procDup,
- 	procDup2,
- 	procExit,
-+	procFaccessat,
- 	procFchdir,
- 	procFchmod,
- 	procFchmodat,
-@@ -289,6 +310,7 @@ var (
- 	procFlock,
- 	procFpathconf,
- 	procFstat,
-+	procFstatat,
- 	procFstatvfs,
- 	procGetdents,
- 	procGetgid,
-@@ -318,6 +340,7 @@ var (
- 	procMlock,
- 	procMlockall,
- 	procMprotect,
-+	procMsync,
- 	procMunlock,
- 	procMunlockall,
- 	procNanosleep,
-@@ -333,6 +356,7 @@ var (
- 	procRenameat,
- 	procRmdir,
- 	proclseek,
-+	procSelect,
- 	procSetegid,
- 	procSeteuid,
- 	procSetgid,
-@@ -364,6 +388,7 @@ var (
- 	proc__xnet_connect,
- 	procmmap,
- 	procmunmap,
-+	procsendfile,
- 	proc__xnet_sendto,
- 	proc__xnet_socket,
- 	proc__xnet_socketpair,
-@@ -371,10 +396,11 @@ var (
- 	proc__xnet_getsockopt,
- 	procgetpeername,
- 	procsetsockopt,
--	procrecvfrom,
--	procsysconf syscallFunc
-+	procrecvfrom syscallFunc
- )
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func pipe(p *[2]_C_int) (n int, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)
- 	n = int(r0)
-@@ -384,6 +410,8 @@ func pipe(p *[2]_C_int) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- 	if e1 != 0 {
-@@ -392,6 +420,8 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getcwd(buf []byte) (n int, err error) {
- 	var _p0 *byte
- 	if len(buf) > 0 {
-@@ -405,6 +435,8 @@ func Getcwd(buf []byte) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
- 	n = int(r0)
-@@ -414,6 +446,8 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func setgroups(ngid int, gid *_Gid_t) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -422,6 +456,8 @@ func setgroups(ngid int, gid *_Gid_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- 	wpid = int32(r0)
-@@ -431,6 +467,8 @@ func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32,
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gethostname(buf []byte) (n int, err error) {
- 	var _p0 *byte
- 	if len(buf) > 0 {
-@@ -444,6 +482,8 @@ func gethostname(buf []byte) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func utimes(path string, times *[2]Timeval) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -457,6 +497,8 @@ func utimes(path string, times *[2]Timeval) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -470,6 +512,8 @@ func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func fcntl(fd int, cmd int, arg int) (val int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
- 	val = int(r0)
-@@ -479,6 +523,8 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)
- 	if e1 != 0 {
-@@ -487,6 +533,8 @@ func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- 	fd = int(r0)
-@@ -496,6 +544,8 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
- 	n = int(r0)
-@@ -505,6 +555,8 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
- 	n = int(r0)
-@@ -514,6 +566,8 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func acct(path *byte) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -522,6 +576,32 @@ func acct(path *byte) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __makedev(version int, major uint, minor uint) (val uint64) {
-+	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)
-+	val = uint64(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __major(version int, dev uint64) (val uint) {
-+	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)
-+	val = uint(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __minor(version int, dev uint64) (val uint) {
-+	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)
-+	val = uint(r0)
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ioctl(fd int, req uint, arg uintptr) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)
- 	if e1 != 0 {
-@@ -530,6 +610,19 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -543,6 +636,8 @@ func Access(path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -551,6 +646,8 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chdir(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -564,6 +661,8 @@ func Chdir(path string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chmod(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -577,6 +676,8 @@ func Chmod(path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chown(path string, uid int, gid int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -590,6 +691,8 @@ func Chown(path string, uid int, gid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chroot(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -603,6 +706,8 @@ func Chroot(path string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Close(fd int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -611,6 +716,8 @@ func Close(fd int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Creat(path string, mode uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -625,6 +732,8 @@ func Creat(path string, mode uint32) (fd int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Dup(fd int) (nfd int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- 	nfd = int(r0)
-@@ -634,6 +743,8 @@ func Dup(fd int) (nfd int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Dup2(oldfd int, newfd int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -642,11 +753,30 @@ func Dup2(oldfd int, newfd int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- 	sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -655,6 +785,8 @@ func Fchdir(fd int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchmod(fd int, mode uint32) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -663,6 +795,8 @@ func Fchmod(fd int, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -676,6 +810,8 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
- 	if e1 != 0 {
-@@ -684,6 +820,8 @@ func Fchown(fd int, uid int, gid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -697,6 +835,8 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fdatasync(fd int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -705,6 +845,8 @@ func Fdatasync(fd int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -713,6 +855,8 @@ func Flock(fd int, how int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fpathconf(fd int, name int) (val int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)
- 	val = int(r0)
-@@ -722,6 +866,8 @@ func Fpathconf(fd int, name int) (val int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstat(fd int, stat *Stat_t) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -730,6 +876,23 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+	var _p0 *byte
-+	_p0, err = BytePtrFromString(path)
-+	if err != nil {
-+		return
-+	}
-+	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -738,6 +901,8 @@ func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	var _p0 *byte
- 	if len(buf) > 0 {
-@@ -751,18 +916,24 @@ func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getgid() (gid int) {
- 	r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)
- 	gid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpid() (pid int) {
- 	r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)
- 	pid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpgid(pid int) (pgid int, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
- 	pgid = int(r0)
-@@ -772,6 +943,8 @@ func Getpgid(pid int) (pgid int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpgrp() (pgid int, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)
- 	pgid = int(r0)
-@@ -781,24 +954,32 @@ func Getpgrp() (pgid int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Geteuid() (euid int) {
- 	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)
- 	euid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getegid() (egid int) {
- 	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)
- 	egid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getppid() (ppid int) {
- 	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)
- 	ppid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpriority(which int, who int) (n int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
- 	n = int(r0)
-@@ -808,6 +989,8 @@ func Getpriority(which int, who int) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrlimit(which int, lim *Rlimit) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -816,6 +999,8 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -824,6 +1009,8 @@ func Getrusage(who int, rusage *Rusage) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -832,12 +1019,16 @@ func Gettimeofday(tv *Timeval) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getuid() (uid int) {
- 	r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)
- 	uid = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Kill(pid int, signum syscall.Signal) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -846,6 +1037,8 @@ func Kill(pid int, signum syscall.Signal) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Lchown(path string, uid int, gid int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -859,6 +1052,8 @@ func Lchown(path string, uid int, gid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Link(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -877,6 +1072,8 @@ func Link(path string, link string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -885,6 +1082,8 @@ func Listen(s int, backlog int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Lstat(path string, stat *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -898,6 +1097,8 @@ func Lstat(path string, stat *Stat_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Madvise(b []byte, advice int) (err error) {
- 	var _p0 *byte
- 	if len(b) > 0 {
-@@ -910,6 +1111,8 @@ func Madvise(b []byte, advice int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdir(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -923,6 +1126,8 @@ func Mkdir(path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -936,6 +1141,8 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -949,6 +1156,8 @@ func Mkfifo(path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -962,6 +1171,8 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -975,6 +1186,8 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -988,6 +1201,8 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mlock(b []byte) (err error) {
- 	var _p0 *byte
- 	if len(b) > 0 {
-@@ -1000,6 +1215,8 @@ func Mlock(b []byte) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mlockall(flags int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1008,6 +1225,8 @@ func Mlockall(flags int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mprotect(b []byte, prot int) (err error) {
- 	var _p0 *byte
- 	if len(b) > 0 {
-@@ -1020,6 +1239,22 @@ func Mprotect(b []byte, prot int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Msync(b []byte, flags int) (err error) {
-+	var _p0 *byte
-+	if len(b) > 0 {
-+		_p0 = &b[0]
-+	}
-+	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Munlock(b []byte) (err error) {
- 	var _p0 *byte
- 	if len(b) > 0 {
-@@ -1032,6 +1267,8 @@ func Munlock(b []byte) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Munlockall() (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1040,6 +1277,8 @@ func Munlockall() (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1048,6 +1287,8 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1062,6 +1303,8 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1076,6 +1319,8 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1090,6 +1335,8 @@ func Pathconf(path string, name int) (val int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pause() (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1098,6 +1345,8 @@ func Pause() (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1111,6 +1360,8 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1124,6 +1375,8 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func read(fd int, p []byte) (n int, err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1137,6 +1390,8 @@ func read(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Readlink(path string, buf []byte) (n int, err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1155,6 +1410,8 @@ func Readlink(path string, buf []byte) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(from)
-@@ -1173,6 +1430,8 @@ func Rename(from string, to string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(oldpath)
-@@ -1191,6 +1450,8 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rmdir(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1204,6 +1465,8 @@ func Rmdir(path string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
- 	newoffset = int64(r0)
-@@ -1213,6 +1476,19 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+	n = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setegid(egid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1221,6 +1497,8 @@ func Setegid(egid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seteuid(euid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1229,6 +1507,8 @@ func Seteuid(euid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setgid(gid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1237,6 +1517,8 @@ func Setgid(gid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sethostname(p []byte) (err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1249,6 +1531,8 @@ func Sethostname(p []byte) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setpgid(pid int, pgid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1257,6 +1541,8 @@ func Setpgid(pid int, pgid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setpriority(which int, who int, prio int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
- 	if e1 != 0 {
-@@ -1265,6 +1551,8 @@ func Setpriority(which int, who int, prio int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setregid(rgid int, egid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1273,6 +1561,8 @@ func Setregid(rgid int, egid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setreuid(ruid int, euid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1281,6 +1571,8 @@ func Setreuid(ruid int, euid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setrlimit(which int, lim *Rlimit) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1289,6 +1581,8 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)
- 	pid = int(r0)
-@@ -1298,6 +1592,8 @@ func Setsid() (pid int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setuid(uid int) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1306,6 +1602,8 @@ func Setuid(uid int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Shutdown(s int, how int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1314,6 +1612,8 @@ func Shutdown(s int, how int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Stat(path string, stat *Stat_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1327,6 +1627,8 @@ func Stat(path string, stat *Stat_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Statvfs(path string, vfsstat *Statvfs_t) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1340,6 +1642,8 @@ func Statvfs(path string, vfsstat *Statvfs_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1358,6 +1662,8 @@ func Symlink(path string, link string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1366,6 +1672,8 @@ func Sync() (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Times(tms *Tms) (ticks uintptr, err error) {
- 	r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)
- 	ticks = uintptr(r0)
-@@ -1375,6 +1683,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Truncate(path string, length int64) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1388,6 +1698,8 @@ func Truncate(path string, length int64) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1396,6 +1708,8 @@ func Fsync(fd int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Ftruncate(fd int, length int64) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1404,12 +1718,16 @@ func Ftruncate(fd int, length int64) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Umask(mask int) (oldmask int) {
- 	r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
- 	oldmask = int(r0)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Uname(buf *Utsname) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1418,6 +1736,8 @@ func Uname(buf *Utsname) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(target string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(target)
-@@ -1431,6 +1751,8 @@ func Unmount(target string, flags int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unlink(path string) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1444,6 +1766,8 @@ func Unlink(path string) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1457,6 +1781,8 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1465,6 +1791,8 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Utime(path string, buf *Utimbuf) (err error) {
- 	var _p0 *byte
- 	_p0, err = BytePtrFromString(path)
-@@ -1478,6 +1806,8 @@ func Utime(path string, buf *Utimbuf) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
- 	if e1 != 0 {
-@@ -1486,6 +1816,8 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
- 	if e1 != 0 {
-@@ -1494,6 +1826,8 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- 	ret = uintptr(r0)
-@@ -1503,6 +1837,8 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func munmap(addr uintptr, length uintptr) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)
- 	if e1 != 0 {
-@@ -1511,6 +1847,19 @@ func munmap(addr uintptr, length uintptr) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
-+	written = int(r0)
-+	if e1 != 0 {
-+		err = e1
-+	}
-+	return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- 	var _p0 *byte
- 	if len(buf) > 0 {
-@@ -1523,6 +1872,8 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func socket(domain int, typ int, proto int) (fd int, err error) {
- 	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
- 	fd = int(r0)
-@@ -1532,6 +1883,8 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- 	if e1 != 0 {
-@@ -1540,6 +1893,8 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func write(fd int, p []byte) (n int, err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1553,6 +1908,8 @@ func write(fd int, p []byte) (n int, err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- 	if e1 != 0 {
-@@ -1561,6 +1918,8 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 	_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- 	if e1 != 0 {
-@@ -1569,6 +1928,8 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- 	_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- 	if e1 != 0 {
-@@ -1577,6 +1938,8 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr)
- 	return
- }
- 
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- 	var _p0 *byte
- 	if len(p) > 0 {
-@@ -1589,12 +1952,3 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- 	}
- 	return
- }
--
--func sysconf(name int) (n int64, err error) {
--	r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsysconf)), 1, uintptr(name), 0, 0, 0, 0, 0)
--	n = int64(r0)
--	if e1 != 0 {
--		err = e1
--	}
--	return
--}
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-index 83bb935b..37dcc74c 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-@@ -1,5 +1,7 @@
- // mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build 386,openbsd
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-similarity index 91%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-index 83bb935b..fe6caa6e 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build amd64,openbsd
- 
- package unix
- 
-@@ -14,6 +16,7 @@ var sysctlMib = []mibentry{
- 	{"ddb.max_line", []_C_int{9, 3}},
- 	{"ddb.max_width", []_C_int{9, 2}},
- 	{"ddb.panic", []_C_int{9, 5}},
-+	{"ddb.profile", []_C_int{9, 9}},
- 	{"ddb.radix", []_C_int{9, 1}},
- 	{"ddb.tab_stop_width", []_C_int{9, 4}},
- 	{"ddb.trigger", []_C_int{9, 8}},
-@@ -29,6 +32,7 @@ var sysctlMib = []mibentry{
- 	{"hw.ncpu", []_C_int{6, 3}},
- 	{"hw.ncpufound", []_C_int{6, 21}},
- 	{"hw.pagesize", []_C_int{6, 7}},
-+	{"hw.perfpolicy", []_C_int{6, 23}},
- 	{"hw.physmem", []_C_int{6, 19}},
- 	{"hw.product", []_C_int{6, 15}},
- 	{"hw.serialno", []_C_int{6, 17}},
-@@ -37,7 +41,7 @@ var sysctlMib = []mibentry{
- 	{"hw.uuid", []_C_int{6, 18}},
- 	{"hw.vendor", []_C_int{6, 14}},
- 	{"hw.version", []_C_int{6, 16}},
--	{"kern.arandom", []_C_int{1, 37}},
-+	{"kern.allowkmem", []_C_int{1, 52}},
- 	{"kern.argmax", []_C_int{1, 8}},
- 	{"kern.boottime", []_C_int{1, 21}},
- 	{"kern.bufcachepercent", []_C_int{1, 72}},
-@@ -46,12 +50,13 @@ var sysctlMib = []mibentry{
- 	{"kern.consdev", []_C_int{1, 75}},
- 	{"kern.cp_time", []_C_int{1, 40}},
- 	{"kern.cp_time2", []_C_int{1, 71}},
--	{"kern.cryptodevallowsoft", []_C_int{1, 53}},
-+	{"kern.dnsjackport", []_C_int{1, 13}},
- 	{"kern.domainname", []_C_int{1, 22}},
- 	{"kern.file", []_C_int{1, 73}},
- 	{"kern.forkstat", []_C_int{1, 42}},
- 	{"kern.fscale", []_C_int{1, 46}},
- 	{"kern.fsync", []_C_int{1, 33}},
-+	{"kern.global_ptrace", []_C_int{1, 81}},
- 	{"kern.hostid", []_C_int{1, 11}},
- 	{"kern.hostname", []_C_int{1, 10}},
- 	{"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
-@@ -84,7 +89,6 @@ var sysctlMib = []mibentry{
- 	{"kern.pool_debug", []_C_int{1, 77}},
- 	{"kern.posix1version", []_C_int{1, 17}},
- 	{"kern.proc", []_C_int{1, 66}},
--	{"kern.random", []_C_int{1, 31}},
- 	{"kern.rawpartition", []_C_int{1, 24}},
- 	{"kern.saved_ids", []_C_int{1, 20}},
- 	{"kern.securelevel", []_C_int{1, 9}},
-@@ -102,21 +106,16 @@ var sysctlMib = []mibentry{
- 	{"kern.timecounter.hardware", []_C_int{1, 69, 3}},
- 	{"kern.timecounter.tick", []_C_int{1, 69, 1}},
- 	{"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
--	{"kern.tty.maxptys", []_C_int{1, 44, 6}},
--	{"kern.tty.nptys", []_C_int{1, 44, 7}},
- 	{"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
- 	{"kern.tty.tk_nin", []_C_int{1, 44, 1}},
- 	{"kern.tty.tk_nout", []_C_int{1, 44, 2}},
- 	{"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
- 	{"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
- 	{"kern.ttycount", []_C_int{1, 57}},
--	{"kern.userasymcrypto", []_C_int{1, 60}},
--	{"kern.usercrypto", []_C_int{1, 52}},
--	{"kern.usermount", []_C_int{1, 30}},
- 	{"kern.version", []_C_int{1, 4}},
--	{"kern.vnode", []_C_int{1, 13}},
- 	{"kern.watchdog.auto", []_C_int{1, 64, 2}},
- 	{"kern.watchdog.period", []_C_int{1, 64, 1}},
-+	{"kern.wxabort", []_C_int{1, 74}},
- 	{"net.bpf.bufsize", []_C_int{4, 31, 1}},
- 	{"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
- 	{"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
-@@ -144,7 +143,9 @@ var sysctlMib = []mibentry{
- 	{"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
- 	{"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
- 	{"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
-+	{"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}},
- 	{"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
-+	{"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}},
- 	{"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
- 	{"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
- 	{"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
-@@ -153,8 +154,10 @@ var sysctlMib = []mibentry{
- 	{"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
- 	{"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
- 	{"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
-+	{"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}},
- 	{"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
- 	{"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
-+	{"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}},
- 	{"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
- 	{"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
- 	{"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
-@@ -173,7 +176,6 @@ var sysctlMib = []mibentry{
- 	{"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
- 	{"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
- 	{"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
--	{"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
- 	{"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
- 	{"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
- 	{"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
-@@ -187,6 +189,7 @@ var sysctlMib = []mibentry{
- 	{"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
- 	{"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
- 	{"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
-+	{"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}},
- 	{"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
- 	{"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
- 	{"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
-@@ -194,9 +197,12 @@ var sysctlMib = []mibentry{
- 	{"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
- 	{"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
- 	{"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
-+	{"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}},
-+	{"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}},
- 	{"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
- 	{"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
- 	{"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
-+	{"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}},
- 	{"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
- 	{"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
- 	{"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
-@@ -209,13 +215,8 @@ var sysctlMib = []mibentry{
- 	{"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
- 	{"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
- 	{"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
--	{"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
- 	{"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
--	{"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
--	{"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
--	{"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
- 	{"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
--	{"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
- 	{"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
- 	{"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
- 	{"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
-@@ -228,20 +229,19 @@ var sysctlMib = []mibentry{
- 	{"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
- 	{"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
- 	{"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
--	{"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
--	{"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
- 	{"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
-+	{"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}},
-+	{"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}},
- 	{"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
- 	{"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
- 	{"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
- 	{"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
- 	{"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
- 	{"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
--	{"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
-+	{"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}},
- 	{"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
- 	{"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
- 	{"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
--	{"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
- 	{"net.key.sadb_dump", []_C_int{4, 30, 1}},
- 	{"net.key.spd_dump", []_C_int{4, 30, 2}},
- 	{"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-index 83bb935b..6eb8c0b0 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build arm,openbsd
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-similarity index 91%
-rename from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-rename to vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-index 83bb935b..ba4304fd 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build arm64,openbsd
- 
- package unix
- 
-@@ -14,6 +16,7 @@ var sysctlMib = []mibentry{
- 	{"ddb.max_line", []_C_int{9, 3}},
- 	{"ddb.max_width", []_C_int{9, 2}},
- 	{"ddb.panic", []_C_int{9, 5}},
-+	{"ddb.profile", []_C_int{9, 9}},
- 	{"ddb.radix", []_C_int{9, 1}},
- 	{"ddb.tab_stop_width", []_C_int{9, 4}},
- 	{"ddb.trigger", []_C_int{9, 8}},
-@@ -28,17 +31,21 @@ var sysctlMib = []mibentry{
- 	{"hw.model", []_C_int{6, 2}},
- 	{"hw.ncpu", []_C_int{6, 3}},
- 	{"hw.ncpufound", []_C_int{6, 21}},
-+	{"hw.ncpuonline", []_C_int{6, 25}},
- 	{"hw.pagesize", []_C_int{6, 7}},
-+	{"hw.perfpolicy", []_C_int{6, 23}},
- 	{"hw.physmem", []_C_int{6, 19}},
- 	{"hw.product", []_C_int{6, 15}},
- 	{"hw.serialno", []_C_int{6, 17}},
- 	{"hw.setperf", []_C_int{6, 13}},
-+	{"hw.smt", []_C_int{6, 24}},
- 	{"hw.usermem", []_C_int{6, 20}},
- 	{"hw.uuid", []_C_int{6, 18}},
- 	{"hw.vendor", []_C_int{6, 14}},
- 	{"hw.version", []_C_int{6, 16}},
--	{"kern.arandom", []_C_int{1, 37}},
-+	{"kern.allowkmem", []_C_int{1, 52}},
- 	{"kern.argmax", []_C_int{1, 8}},
-+	{"kern.audio", []_C_int{1, 84}},
- 	{"kern.boottime", []_C_int{1, 21}},
- 	{"kern.bufcachepercent", []_C_int{1, 72}},
- 	{"kern.ccpu", []_C_int{1, 45}},
-@@ -46,12 +53,13 @@ var sysctlMib = []mibentry{
- 	{"kern.consdev", []_C_int{1, 75}},
- 	{"kern.cp_time", []_C_int{1, 40}},
- 	{"kern.cp_time2", []_C_int{1, 71}},
--	{"kern.cryptodevallowsoft", []_C_int{1, 53}},
-+	{"kern.cpustats", []_C_int{1, 85}},
- 	{"kern.domainname", []_C_int{1, 22}},
- 	{"kern.file", []_C_int{1, 73}},
- 	{"kern.forkstat", []_C_int{1, 42}},
- 	{"kern.fscale", []_C_int{1, 46}},
- 	{"kern.fsync", []_C_int{1, 33}},
-+	{"kern.global_ptrace", []_C_int{1, 81}},
- 	{"kern.hostid", []_C_int{1, 11}},
- 	{"kern.hostname", []_C_int{1, 10}},
- 	{"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
-@@ -84,7 +92,6 @@ var sysctlMib = []mibentry{
- 	{"kern.pool_debug", []_C_int{1, 77}},
- 	{"kern.posix1version", []_C_int{1, 17}},
- 	{"kern.proc", []_C_int{1, 66}},
--	{"kern.random", []_C_int{1, 31}},
- 	{"kern.rawpartition", []_C_int{1, 24}},
- 	{"kern.saved_ids", []_C_int{1, 20}},
- 	{"kern.securelevel", []_C_int{1, 9}},
-@@ -102,21 +109,17 @@ var sysctlMib = []mibentry{
- 	{"kern.timecounter.hardware", []_C_int{1, 69, 3}},
- 	{"kern.timecounter.tick", []_C_int{1, 69, 1}},
- 	{"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
--	{"kern.tty.maxptys", []_C_int{1, 44, 6}},
--	{"kern.tty.nptys", []_C_int{1, 44, 7}},
- 	{"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
- 	{"kern.tty.tk_nin", []_C_int{1, 44, 1}},
- 	{"kern.tty.tk_nout", []_C_int{1, 44, 2}},
- 	{"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
- 	{"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
- 	{"kern.ttycount", []_C_int{1, 57}},
--	{"kern.userasymcrypto", []_C_int{1, 60}},
--	{"kern.usercrypto", []_C_int{1, 52}},
--	{"kern.usermount", []_C_int{1, 30}},
- 	{"kern.version", []_C_int{1, 4}},
--	{"kern.vnode", []_C_int{1, 13}},
- 	{"kern.watchdog.auto", []_C_int{1, 64, 2}},
- 	{"kern.watchdog.period", []_C_int{1, 64, 1}},
-+	{"kern.witnesswatch", []_C_int{1, 53}},
-+	{"kern.wxabort", []_C_int{1, 74}},
- 	{"net.bpf.bufsize", []_C_int{4, 31, 1}},
- 	{"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
- 	{"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
-@@ -144,7 +147,9 @@ var sysctlMib = []mibentry{
- 	{"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
- 	{"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
- 	{"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
-+	{"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}},
- 	{"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
-+	{"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}},
- 	{"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
- 	{"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
- 	{"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
-@@ -153,8 +158,10 @@ var sysctlMib = []mibentry{
- 	{"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
- 	{"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
- 	{"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
-+	{"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}},
- 	{"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
- 	{"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
-+	{"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}},
- 	{"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
- 	{"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
- 	{"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
-@@ -173,7 +180,6 @@ var sysctlMib = []mibentry{
- 	{"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
- 	{"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
- 	{"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
--	{"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
- 	{"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
- 	{"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
- 	{"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
-@@ -187,6 +193,7 @@ var sysctlMib = []mibentry{
- 	{"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
- 	{"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
- 	{"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
-+	{"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}},
- 	{"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
- 	{"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
- 	{"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
-@@ -194,9 +201,12 @@ var sysctlMib = []mibentry{
- 	{"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
- 	{"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
- 	{"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
-+	{"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}},
-+	{"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}},
- 	{"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
- 	{"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
- 	{"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
-+	{"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}},
- 	{"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
- 	{"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
- 	{"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
-@@ -209,13 +219,8 @@ var sysctlMib = []mibentry{
- 	{"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
- 	{"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
- 	{"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
--	{"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
- 	{"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
--	{"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
--	{"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
--	{"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
- 	{"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
--	{"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
- 	{"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
- 	{"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
- 	{"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
-@@ -228,20 +233,19 @@ var sysctlMib = []mibentry{
- 	{"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
- 	{"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
- 	{"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
--	{"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
--	{"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
- 	{"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
-+	{"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}},
-+	{"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}},
- 	{"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
- 	{"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
- 	{"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
- 	{"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
- 	{"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
- 	{"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
--	{"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
-+	{"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}},
- 	{"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
- 	{"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
- 	{"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
--	{"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
- 	{"net.key.sadb_dump", []_C_int{4, 30, 1}},
- 	{"net.key.spd_dump", []_C_int{4, 30, 2}},
- 	{"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
-@@ -256,6 +260,7 @@ var sysctlMib = []mibentry{
- 	{"net.pipex.enable", []_C_int{4, 35, 1}},
- 	{"vm.anonmin", []_C_int{2, 7}},
- 	{"vm.loadavg", []_C_int{2, 2}},
-+	{"vm.malloc_conf", []_C_int{2, 12}},
- 	{"vm.maxslp", []_C_int{2, 10}},
- 	{"vm.nkmempages", []_C_int{2, 6}},
- 	{"vm.psstrings", []_C_int{2, 3}},
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-index 2786773b..f3361453 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,darwin
- 
-@@ -121,13 +121,15 @@ const (
- 	SYS_CSOPS                          = 169
- 	SYS_CSOPS_AUDITTOKEN               = 170
- 	SYS_WAITID                         = 173
-+	SYS_KDEBUG_TYPEFILTER              = 177
-+	SYS_KDEBUG_TRACE_STRING            = 178
- 	SYS_KDEBUG_TRACE64                 = 179
- 	SYS_KDEBUG_TRACE                   = 180
- 	SYS_SETGID                         = 181
- 	SYS_SETEGID                        = 182
- 	SYS_SETEUID                        = 183
- 	SYS_SIGRETURN                      = 184
--	SYS_CHUD                           = 185
-+	SYS_THREAD_SELFCOUNTS              = 186
- 	SYS_FDATASYNC                      = 187
- 	SYS_STAT                           = 188
- 	SYS_FSTAT                          = 189
-@@ -278,7 +280,6 @@ const (
- 	SYS_KQUEUE                         = 362
- 	SYS_KEVENT                         = 363
- 	SYS_LCHOWN                         = 364
--	SYS_STACK_SNAPSHOT                 = 365
- 	SYS_BSDTHREAD_REGISTER             = 366
- 	SYS_WORKQ_OPEN                     = 367
- 	SYS_WORKQ_KERNRETURN               = 368
-@@ -287,6 +288,8 @@ const (
- 	SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
- 	SYS_THREAD_SELFID                  = 372
- 	SYS_LEDGER                         = 373
-+	SYS_KEVENT_QOS                     = 374
-+	SYS_KEVENT_ID                      = 375
- 	SYS___MAC_EXECVE                   = 380
- 	SYS___MAC_SYSCALL                  = 381
- 	SYS___MAC_GET_FILE                 = 382
-@@ -298,11 +301,8 @@ const (
- 	SYS___MAC_GET_FD                   = 388
- 	SYS___MAC_SET_FD                   = 389
- 	SYS___MAC_GET_PID                  = 390
--	SYS___MAC_GET_LCID                 = 391
--	SYS___MAC_GET_LCTX                 = 392
--	SYS___MAC_SET_LCTX                 = 393
--	SYS_SETLCID                        = 394
--	SYS_GETLCID                        = 395
-+	SYS_PSELECT                        = 394
-+	SYS_PSELECT_NOCANCEL               = 395
- 	SYS_READ_NOCANCEL                  = 396
- 	SYS_WRITE_NOCANCEL                 = 397
- 	SYS_OPEN_NOCANCEL                  = 398
-@@ -351,6 +351,7 @@ const (
- 	SYS_GUARDED_CLOSE_NP               = 442
- 	SYS_GUARDED_KQUEUE_NP              = 443
- 	SYS_CHANGE_FDGUARD_NP              = 444
-+	SYS_USRCTL                         = 445
- 	SYS_PROC_RLIMIT_CONTROL            = 446
- 	SYS_CONNECTX                       = 447
- 	SYS_DISCONNECTX                    = 448
-@@ -367,6 +368,7 @@ const (
- 	SYS_COALITION_INFO                 = 459
- 	SYS_NECP_MATCH_POLICY              = 460
- 	SYS_GETATTRLISTBULK                = 461
-+	SYS_CLONEFILEAT                    = 462
- 	SYS_OPENAT                         = 463
- 	SYS_OPENAT_NOCANCEL                = 464
- 	SYS_RENAMEAT                       = 465
-@@ -392,7 +394,43 @@ const (
- 	SYS_GUARDED_WRITE_NP               = 485
- 	SYS_GUARDED_PWRITE_NP              = 486
- 	SYS_GUARDED_WRITEV_NP              = 487
--	SYS_RENAME_EXT                     = 488
-+	SYS_RENAMEATX_NP                   = 488
- 	SYS_MREMAP_ENCRYPTED               = 489
--	SYS_MAXSYSCALL                     = 490
-+	SYS_NETAGENT_TRIGGER               = 490
-+	SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
-+	SYS_MICROSTACKSHOT                 = 492
-+	SYS_GRAB_PGO_DATA                  = 493
-+	SYS_PERSONA                        = 494
-+	SYS_WORK_INTERVAL_CTL              = 499
-+	SYS_GETENTROPY                     = 500
-+	SYS_NECP_OPEN                      = 501
-+	SYS_NECP_CLIENT_ACTION             = 502
-+	SYS___NEXUS_OPEN                   = 503
-+	SYS___NEXUS_REGISTER               = 504
-+	SYS___NEXUS_DEREGISTER             = 505
-+	SYS___NEXUS_CREATE                 = 506
-+	SYS___NEXUS_DESTROY                = 507
-+	SYS___NEXUS_GET_OPT                = 508
-+	SYS___NEXUS_SET_OPT                = 509
-+	SYS___CHANNEL_OPEN                 = 510
-+	SYS___CHANNEL_GET_INFO             = 511
-+	SYS___CHANNEL_SYNC                 = 512
-+	SYS___CHANNEL_GET_OPT              = 513
-+	SYS___CHANNEL_SET_OPT              = 514
-+	SYS_ULOCK_WAIT                     = 515
-+	SYS_ULOCK_WAKE                     = 516
-+	SYS_FCLONEFILEAT                   = 517
-+	SYS_FS_SNAPSHOT                    = 518
-+	SYS_TERMINATE_WITH_PAYLOAD         = 520
-+	SYS_ABORT_WITH_PAYLOAD             = 521
-+	SYS_NECP_SESSION_OPEN              = 522
-+	SYS_NECP_SESSION_ACTION            = 523
-+	SYS_SETATTRLISTAT                  = 524
-+	SYS_NET_QOS_GUIDELINE              = 525
-+	SYS_FMOUNT                         = 526
-+	SYS_NTP_ADJTIME                    = 527
-+	SYS_NTP_GETTIME                    = 528
-+	SYS_OS_FAULT_WITH_PAYLOAD          = 529
-+	SYS_MAXSYSCALL                     = 530
-+	SYS_INVALID                        = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-index 09de240c..654dd3da 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,darwin
- 
-@@ -121,13 +121,15 @@ const (
- 	SYS_CSOPS                          = 169
- 	SYS_CSOPS_AUDITTOKEN               = 170
- 	SYS_WAITID                         = 173
-+	SYS_KDEBUG_TYPEFILTER              = 177
-+	SYS_KDEBUG_TRACE_STRING            = 178
- 	SYS_KDEBUG_TRACE64                 = 179
- 	SYS_KDEBUG_TRACE                   = 180
- 	SYS_SETGID                         = 181
- 	SYS_SETEGID                        = 182
- 	SYS_SETEUID                        = 183
- 	SYS_SIGRETURN                      = 184
--	SYS_CHUD                           = 185
-+	SYS_THREAD_SELFCOUNTS              = 186
- 	SYS_FDATASYNC                      = 187
- 	SYS_STAT                           = 188
- 	SYS_FSTAT                          = 189
-@@ -278,7 +280,6 @@ const (
- 	SYS_KQUEUE                         = 362
- 	SYS_KEVENT                         = 363
- 	SYS_LCHOWN                         = 364
--	SYS_STACK_SNAPSHOT                 = 365
- 	SYS_BSDTHREAD_REGISTER             = 366
- 	SYS_WORKQ_OPEN                     = 367
- 	SYS_WORKQ_KERNRETURN               = 368
-@@ -287,6 +288,8 @@ const (
- 	SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
- 	SYS_THREAD_SELFID                  = 372
- 	SYS_LEDGER                         = 373
-+	SYS_KEVENT_QOS                     = 374
-+	SYS_KEVENT_ID                      = 375
- 	SYS___MAC_EXECVE                   = 380
- 	SYS___MAC_SYSCALL                  = 381
- 	SYS___MAC_GET_FILE                 = 382
-@@ -298,11 +301,8 @@ const (
- 	SYS___MAC_GET_FD                   = 388
- 	SYS___MAC_SET_FD                   = 389
- 	SYS___MAC_GET_PID                  = 390
--	SYS___MAC_GET_LCID                 = 391
--	SYS___MAC_GET_LCTX                 = 392
--	SYS___MAC_SET_LCTX                 = 393
--	SYS_SETLCID                        = 394
--	SYS_GETLCID                        = 395
-+	SYS_PSELECT                        = 394
-+	SYS_PSELECT_NOCANCEL               = 395
- 	SYS_READ_NOCANCEL                  = 396
- 	SYS_WRITE_NOCANCEL                 = 397
- 	SYS_OPEN_NOCANCEL                  = 398
-@@ -351,6 +351,7 @@ const (
- 	SYS_GUARDED_CLOSE_NP               = 442
- 	SYS_GUARDED_KQUEUE_NP              = 443
- 	SYS_CHANGE_FDGUARD_NP              = 444
-+	SYS_USRCTL                         = 445
- 	SYS_PROC_RLIMIT_CONTROL            = 446
- 	SYS_CONNECTX                       = 447
- 	SYS_DISCONNECTX                    = 448
-@@ -367,6 +368,7 @@ const (
- 	SYS_COALITION_INFO                 = 459
- 	SYS_NECP_MATCH_POLICY              = 460
- 	SYS_GETATTRLISTBULK                = 461
-+	SYS_CLONEFILEAT                    = 462
- 	SYS_OPENAT                         = 463
- 	SYS_OPENAT_NOCANCEL                = 464
- 	SYS_RENAMEAT                       = 465
-@@ -392,7 +394,45 @@ const (
- 	SYS_GUARDED_WRITE_NP               = 485
- 	SYS_GUARDED_PWRITE_NP              = 486
- 	SYS_GUARDED_WRITEV_NP              = 487
--	SYS_RENAME_EXT                     = 488
-+	SYS_RENAMEATX_NP                   = 488
- 	SYS_MREMAP_ENCRYPTED               = 489
--	SYS_MAXSYSCALL                     = 490
-+	SYS_NETAGENT_TRIGGER               = 490
-+	SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
-+	SYS_MICROSTACKSHOT                 = 492
-+	SYS_GRAB_PGO_DATA                  = 493
-+	SYS_PERSONA                        = 494
-+	SYS_WORK_INTERVAL_CTL              = 499
-+	SYS_GETENTROPY                     = 500
-+	SYS_NECP_OPEN                      = 501
-+	SYS_NECP_CLIENT_ACTION             = 502
-+	SYS___NEXUS_OPEN                   = 503
-+	SYS___NEXUS_REGISTER               = 504
-+	SYS___NEXUS_DEREGISTER             = 505
-+	SYS___NEXUS_CREATE                 = 506
-+	SYS___NEXUS_DESTROY                = 507
-+	SYS___NEXUS_GET_OPT                = 508
-+	SYS___NEXUS_SET_OPT                = 509
-+	SYS___CHANNEL_OPEN                 = 510
-+	SYS___CHANNEL_GET_INFO             = 511
-+	SYS___CHANNEL_SYNC                 = 512
-+	SYS___CHANNEL_GET_OPT              = 513
-+	SYS___CHANNEL_SET_OPT              = 514
-+	SYS_ULOCK_WAIT                     = 515
-+	SYS_ULOCK_WAKE                     = 516
-+	SYS_FCLONEFILEAT                   = 517
-+	SYS_FS_SNAPSHOT                    = 518
-+	SYS_TERMINATE_WITH_PAYLOAD         = 520
-+	SYS_ABORT_WITH_PAYLOAD             = 521
-+	SYS_NECP_SESSION_OPEN              = 522
-+	SYS_NECP_SESSION_ACTION            = 523
-+	SYS_SETATTRLISTAT                  = 524
-+	SYS_NET_QOS_GUIDELINE              = 525
-+	SYS_FMOUNT                         = 526
-+	SYS_NTP_ADJTIME                    = 527
-+	SYS_NTP_GETTIME                    = 528
-+	SYS_OS_FAULT_WITH_PAYLOAD          = 529
-+	SYS_KQUEUE_WORKLOOP_CTL            = 530
-+	SYS___MACH_BRIDGE_REMOTE_TIME      = 531
-+	SYS_MAXSYSCALL                     = 532
-+	SYS_INVALID                        = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-index 41cb6ed3..103a72ed 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-@@ -1,4 +1,4 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,darwin
-@@ -129,6 +129,7 @@ const (
- 	SYS_SETEGID                        = 182
- 	SYS_SETEUID                        = 183
- 	SYS_SIGRETURN                      = 184
-+	SYS_THREAD_SELFCOUNTS              = 186
- 	SYS_FDATASYNC                      = 187
- 	SYS_STAT                           = 188
- 	SYS_FSTAT                          = 189
-@@ -288,6 +289,7 @@ const (
- 	SYS_THREAD_SELFID                  = 372
- 	SYS_LEDGER                         = 373
- 	SYS_KEVENT_QOS                     = 374
-+	SYS_KEVENT_ID                      = 375
- 	SYS___MAC_EXECVE                   = 380
- 	SYS___MAC_SYSCALL                  = 381
- 	SYS___MAC_GET_FILE                 = 382
-@@ -421,6 +423,14 @@ const (
- 	SYS_FS_SNAPSHOT                    = 518
- 	SYS_TERMINATE_WITH_PAYLOAD         = 520
- 	SYS_ABORT_WITH_PAYLOAD             = 521
--	SYS_MAXSYSCALL                     = 522
-+	SYS_NECP_SESSION_OPEN              = 522
-+	SYS_NECP_SESSION_ACTION            = 523
-+	SYS_SETATTRLISTAT                  = 524
-+	SYS_NET_QOS_GUIDELINE              = 525
-+	SYS_FMOUNT                         = 526
-+	SYS_NTP_ADJTIME                    = 527
-+	SYS_NTP_GETTIME                    = 528
-+	SYS_OS_FAULT_WITH_PAYLOAD          = 529
-+	SYS_MAXSYSCALL                     = 530
- 	SYS_INVALID                        = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-index 075816c3..7ab2130b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-@@ -1,4 +1,4 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm64,darwin
-@@ -129,6 +129,7 @@ const (
- 	SYS_SETEGID                        = 182
- 	SYS_SETEUID                        = 183
- 	SYS_SIGRETURN                      = 184
-+	SYS_THREAD_SELFCOUNTS              = 186
- 	SYS_FDATASYNC                      = 187
- 	SYS_STAT                           = 188
- 	SYS_FSTAT                          = 189
-@@ -288,6 +289,7 @@ const (
- 	SYS_THREAD_SELFID                  = 372
- 	SYS_LEDGER                         = 373
- 	SYS_KEVENT_QOS                     = 374
-+	SYS_KEVENT_ID                      = 375
- 	SYS___MAC_EXECVE                   = 380
- 	SYS___MAC_SYSCALL                  = 381
- 	SYS___MAC_GET_FILE                 = 382
-@@ -421,6 +423,14 @@ const (
- 	SYS_FS_SNAPSHOT                    = 518
- 	SYS_TERMINATE_WITH_PAYLOAD         = 520
- 	SYS_ABORT_WITH_PAYLOAD             = 521
--	SYS_MAXSYSCALL                     = 522
-+	SYS_NECP_SESSION_OPEN              = 522
-+	SYS_NECP_SESSION_ACTION            = 523
-+	SYS_SETATTRLISTAT                  = 524
-+	SYS_NET_QOS_GUIDELINE              = 525
-+	SYS_FMOUNT                         = 526
-+	SYS_NTP_ADJTIME                    = 527
-+	SYS_NTP_GETTIME                    = 528
-+	SYS_OS_FAULT_WITH_PAYLOAD          = 529
-+	SYS_MAXSYSCALL                     = 530
- 	SYS_INVALID                        = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-index b2c9ef81..464c9a98 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-@@ -1,4 +1,4 @@
--// mksysnum_dragonfly.pl
-+// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,dragonfly
-@@ -13,7 +13,7 @@ const (
- 	SYS_WRITE         = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
- 	SYS_OPEN          = 5   // { int open(char *path, int flags, int mode); }
- 	SYS_CLOSE         = 6   // { int close(int fd); }
--	SYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, \
-+	SYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
- 	SYS_LINK          = 9   // { int link(char *path, char *link); }
- 	SYS_UNLINK        = 10  // { int unlink(char *path); }
- 	SYS_CHDIR         = 12  // { int chdir(char *path); }
-@@ -22,17 +22,17 @@ const (
- 	SYS_CHMOD         = 15  // { int chmod(char *path, int mode); }
- 	SYS_CHOWN         = 16  // { int chown(char *path, int uid, int gid); }
- 	SYS_OBREAK        = 17  // { int obreak(char *nsize); } break obreak_args int
--	SYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, \
-+	SYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
- 	SYS_GETPID        = 20  // { pid_t getpid(void); }
--	SYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, \
-+	SYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
- 	SYS_UNMOUNT       = 22  // { int unmount(char *path, int flags); }
- 	SYS_SETUID        = 23  // { int setuid(uid_t uid); }
- 	SYS_GETUID        = 24  // { uid_t getuid(void); }
- 	SYS_GETEUID       = 25  // { uid_t geteuid(void); }
--	SYS_PTRACE        = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, \
-+	SYS_PTRACE        = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
- 	SYS_RECVMSG       = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
- 	SYS_SENDMSG       = 28  // { int sendmsg(int s, caddr_t msg, int flags); }
--	SYS_RECVFROM      = 29  // { int recvfrom(int s, caddr_t buf, size_t len, \
-+	SYS_RECVFROM      = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
- 	SYS_ACCEPT        = 30  // { int accept(int s, caddr_t name, int *anamelen); }
- 	SYS_GETPEERNAME   = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }
- 	SYS_GETSOCKNAME   = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }
-@@ -45,8 +45,8 @@ const (
- 	SYS_DUP           = 41  // { int dup(int fd); }
- 	SYS_PIPE          = 42  // { int pipe(void); }
- 	SYS_GETEGID       = 43  // { gid_t getegid(void); }
--	SYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, \
--	SYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, \
-+	SYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+	SYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
- 	SYS_GETGID        = 47  // { gid_t getgid(void); }
- 	SYS_GETLOGIN      = 49  // { int getlogin(char *namebuf, u_int namelen); }
- 	SYS_SETLOGIN      = 50  // { int setlogin(char *namebuf); }
-@@ -67,32 +67,32 @@ const (
- 	SYS_MUNMAP        = 73  // { int munmap(void *addr, size_t len); }
- 	SYS_MPROTECT      = 74  // { int mprotect(void *addr, size_t len, int prot); }
- 	SYS_MADVISE       = 75  // { int madvise(void *addr, size_t len, int behav); }
--	SYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, \
-+	SYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, char *vec); }
- 	SYS_GETGROUPS     = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
- 	SYS_SETGROUPS     = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
- 	SYS_GETPGRP       = 81  // { int getpgrp(void); }
- 	SYS_SETPGID       = 82  // { int setpgid(int pid, int pgid); }
--	SYS_SETITIMER     = 83  // { int setitimer(u_int which, struct itimerval *itv, \
-+	SYS_SETITIMER     = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
- 	SYS_SWAPON        = 85  // { int swapon(char *name); }
- 	SYS_GETITIMER     = 86  // { int getitimer(u_int which, struct itimerval *itv); }
- 	SYS_GETDTABLESIZE = 89  // { int getdtablesize(void); }
- 	SYS_DUP2          = 90  // { int dup2(int from, int to); }
- 	SYS_FCNTL         = 92  // { int fcntl(int fd, int cmd, long arg); }
--	SYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
-+	SYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
- 	SYS_FSYNC         = 95  // { int fsync(int fd); }
- 	SYS_SETPRIORITY   = 96  // { int setpriority(int which, int who, int prio); }
- 	SYS_SOCKET        = 97  // { int socket(int domain, int type, int protocol); }
- 	SYS_CONNECT       = 98  // { int connect(int s, caddr_t name, int namelen); }
- 	SYS_GETPRIORITY   = 100 // { int getpriority(int which, int who); }
- 	SYS_BIND          = 104 // { int bind(int s, caddr_t name, int namelen); }
--	SYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, \
-+	SYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
- 	SYS_LISTEN        = 106 // { int listen(int s, int backlog); }
--	SYS_GETTIMEOFDAY  = 116 // { int gettimeofday(struct timeval *tp, \
-+	SYS_GETTIMEOFDAY  = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
- 	SYS_GETRUSAGE     = 117 // { int getrusage(int who, struct rusage *rusage); }
--	SYS_GETSOCKOPT    = 118 // { int getsockopt(int s, int level, int name, \
-+	SYS_GETSOCKOPT    = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
- 	SYS_READV         = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
--	SYS_WRITEV        = 121 // { int writev(int fd, struct iovec *iovp, \
--	SYS_SETTIMEOFDAY  = 122 // { int settimeofday(struct timeval *tv, \
-+	SYS_WRITEV        = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_SETTIMEOFDAY  = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
- 	SYS_FCHOWN        = 123 // { int fchown(int fd, int uid, int gid); }
- 	SYS_FCHMOD        = 124 // { int fchmod(int fd, int mode); }
- 	SYS_SETREUID      = 126 // { int setreuid(int ruid, int euid); }
-@@ -100,15 +100,15 @@ const (
- 	SYS_RENAME        = 128 // { int rename(char *from, char *to); }
- 	SYS_FLOCK         = 131 // { int flock(int fd, int how); }
- 	SYS_MKFIFO        = 132 // { int mkfifo(char *path, int mode); }
--	SYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, \
-+	SYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
- 	SYS_SHUTDOWN      = 134 // { int shutdown(int s, int how); }
--	SYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, \
-+	SYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
- 	SYS_MKDIR         = 136 // { int mkdir(char *path, int mode); }
- 	SYS_RMDIR         = 137 // { int rmdir(char *path); }
- 	SYS_UTIMES        = 138 // { int utimes(char *path, struct timeval *tptr); }
--	SYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, \
-+	SYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
- 	SYS_SETSID        = 147 // { int setsid(void); }
--	SYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, \
-+	SYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
- 	SYS_STATFS        = 157 // { int statfs(char *path, struct statfs *buf); }
- 	SYS_FSTATFS       = 158 // { int fstatfs(int fd, struct statfs *buf); }
- 	SYS_GETFH         = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-@@ -116,53 +116,53 @@ const (
- 	SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
- 	SYS_UNAME         = 164 // { int uname(struct utsname *name); }
- 	SYS_SYSARCH       = 165 // { int sysarch(int op, char *parms); }
--	SYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, \
--	SYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, \
--	SYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, \
-+	SYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+	SYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
-+	SYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
- 	SYS_NTP_ADJTIME   = 176 // { int ntp_adjtime(struct timex *tp); }
- 	SYS_SETGID        = 181 // { int setgid(gid_t gid); }
- 	SYS_SETEGID       = 182 // { int setegid(gid_t egid); }
- 	SYS_SETEUID       = 183 // { int seteuid(uid_t euid); }
- 	SYS_PATHCONF      = 191 // { int pathconf(char *path, int name); }
- 	SYS_FPATHCONF     = 192 // { int fpathconf(int fd, int name); }
--	SYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, \
--	SYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, \
--	SYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
-+	SYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+	SYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+	SYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
- 	// SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int
--	SYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, \
-+	SYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }
- 	SYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }
- 	SYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }
--	SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
-+	SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
- 	SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
- 	SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
- 	SYS_UNDELETE               = 205 // { int undelete(char *path); }
- 	SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
- 	SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
--	SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
--	SYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, \
-+	SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
- 	SYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }
--	SYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, \
--	SYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, \
-+	SYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }
-+	SYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- 	SYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }
--	SYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, \
--	SYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
--	SYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
--	SYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, \
-+	SYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }
-+	SYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
- 	SYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }
- 	SYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }
--	SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, \
--	SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
--	SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
-+	SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+	SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- 	SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }
- 	SYS_RFORK                  = 251 // { int rfork(int flags); }
--	SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
-+	SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
- 	SYS_ISSETUGID              = 253 // { int issetugid(void); }
- 	SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
- 	SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
- 	SYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }
--	SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
--	SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
-+	SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); }
-+	SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); }
- 	SYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
- 	SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
- 	SYS_MODNEXT                = 300 // { int modnext(int modid); }
-@@ -200,34 +200,34 @@ const (
- 	SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
- 	SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }
- 	SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
--	SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, \
-+	SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
- 	SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
--	SYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, \
-+	SYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
- 	SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
- 	SYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }
--	SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,\
--	SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,\
--	SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
--	SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
--	SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
--	SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
--	SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
-+	SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }
-+	SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }
-+	SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
- 	SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
--	SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
--	SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
--	SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
--	SYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, \
--	SYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, \
--	SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
-+	SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+	SYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
- 	SYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
- 	SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
- 	SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
- 	SYS_KQUEUE                 = 362 // { int kqueue(void); }
--	SYS_KEVENT                 = 363 // { int kevent(int fd, \
-+	SYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- 	SYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }
- 	SYS_LCHFLAGS               = 391 // { int lchflags(char *path, int flags); }
- 	SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }
--	SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
-+	SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
- 	SYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }
- 	SYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
- 	SYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
-@@ -245,58 +245,58 @@ const (
- 	SYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }
- 	SYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }
- 	SYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
--	SYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, \
-+	SYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
- 	SYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }
--	SYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
-+	SYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }
- 	SYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
- 	SYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
- 	SYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
- 	SYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }
- 	SYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }
--	SYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, 		\
--	SYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
--	SYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,	\
--	SYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, 	\
--	SYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
--	SYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
-+	SYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, 		struct trapframe *tframe,	struct vextframe *vframe); }
-+	SYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }
-+	SYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,	size_t len); }
-+	SYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, 	size_t len, int behav, off_t value); }
-+	SYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }
-+	SYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }
- 	SYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }
- 	SYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }
- 	SYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }
- 	SYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
- 	SYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
--	SYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
-+	SYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }
- 	SYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }
- 	SYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
- 	SYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
--	SYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          \
-+	SYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }
- 	SYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }
--	SYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, 	\
--	SYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, \
--	SYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
-+	SYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, 	struct stat *sb, int flags); }
-+	SYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }
-+	SYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }
- 	SYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }
--	SYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, \
--	SYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, \
-+	SYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }
-+	SYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }
- 	SYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }
- 	SYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }
--	SYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, \
--	SYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, \
--	SYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, \
--	SYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
--	SYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
--	SYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, \
--	SYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
-+	SYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }
-+	SYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }
-+	SYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }
-+	SYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }
-+	SYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }
-+	SYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }
-+	SYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
- 	SYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }
- 	SYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }
- 	SYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }
--	SYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, \
-+	SYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }
- 	SYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
- 	SYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
--	SYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, \
--	SYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, \
-+	SYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+	SYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
- 	SYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }
- 	SYS_SWAPOFF                = 529 // { int swapoff(char *name); }
--	SYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, \
--	SYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, \
-+	SYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }
-+	SYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }
- 	SYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }
- 	SYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }
- 	SYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
-@@ -308,7 +308,7 @@ const (
- 	SYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }
- 	SYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }
- 	SYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }
--	SYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, \
-+	SYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }
- 	SYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }
- 	SYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }
- 	SYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-index b64a8122..9474974b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,freebsd
-@@ -7,347 +7,390 @@ package unix
- 
- const (
- 	// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
--	SYS_EXIT                   = 1   // { void sys_exit(int rval); } exit \
--	SYS_FORK                   = 2   // { int fork(void); }
--	SYS_READ                   = 3   // { ssize_t read(int fd, void *buf, \
--	SYS_WRITE                  = 4   // { ssize_t write(int fd, const void *buf, \
--	SYS_OPEN                   = 5   // { int open(char *path, int flags, int mode); }
--	SYS_CLOSE                  = 6   // { int close(int fd); }
--	SYS_WAIT4                  = 7   // { int wait4(int pid, int *status, \
--	SYS_LINK                   = 9   // { int link(char *path, char *link); }
--	SYS_UNLINK                 = 10  // { int unlink(char *path); }
--	SYS_CHDIR                  = 12  // { int chdir(char *path); }
--	SYS_FCHDIR                 = 13  // { int fchdir(int fd); }
--	SYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }
--	SYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }
--	SYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }
--	SYS_OBREAK                 = 17  // { int obreak(char *nsize); } break \
--	SYS_GETPID                 = 20  // { pid_t getpid(void); }
--	SYS_MOUNT                  = 21  // { int mount(char *type, char *path, \
--	SYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }
--	SYS_SETUID                 = 23  // { int setuid(uid_t uid); }
--	SYS_GETUID                 = 24  // { uid_t getuid(void); }
--	SYS_GETEUID                = 25  // { uid_t geteuid(void); }
--	SYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, \
--	SYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG                = 28  // { int sendmsg(int s, struct msghdr *msg, \
--	SYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, \
--	SYS_ACCEPT                 = 30  // { int accept(int s, \
--	SYS_GETPEERNAME            = 31  // { int getpeername(int fdes, \
--	SYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, \
--	SYS_ACCESS                 = 33  // { int access(char *path, int amode); }
--	SYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }
--	SYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }
--	SYS_SYNC                   = 36  // { int sync(void); }
--	SYS_KILL                   = 37  // { int kill(int pid, int signum); }
--	SYS_GETPPID                = 39  // { pid_t getppid(void); }
--	SYS_DUP                    = 41  // { int dup(u_int fd); }
--	SYS_PIPE                   = 42  // { int pipe(void); }
--	SYS_GETEGID                = 43  // { gid_t getegid(void); }
--	SYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, \
--	SYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, \
--	SYS_GETGID                 = 47  // { gid_t getgid(void); }
--	SYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, u_int \
--	SYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }
--	SYS_ACCT                   = 51  // { int acct(char *path); }
--	SYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, \
--	SYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, \
--	SYS_REBOOT                 = 55  // { int reboot(int opt); }
--	SYS_REVOKE                 = 56  // { int revoke(char *path); }
--	SYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }
--	SYS_READLINK               = 58  // { ssize_t readlink(char *path, char *buf, \
--	SYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, \
--	SYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args \
--	SYS_CHROOT                 = 61  // { int chroot(char *path); }
--	SYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, \
--	SYS_VFORK                  = 66  // { int vfork(void); }
--	SYS_SBRK                   = 69  // { int sbrk(int incr); }
--	SYS_SSTK                   = 70  // { int sstk(int incr); }
--	SYS_OVADVISE               = 72  // { int ovadvise(int anom); } vadvise \
--	SYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }
--	SYS_MPROTECT               = 74  // { int mprotect(const void *addr, size_t len, \
--	SYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, \
--	SYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, \
--	SYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, \
--	SYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, \
--	SYS_GETPGRP                = 81  // { int getpgrp(void); }
--	SYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }
--	SYS_SETITIMER              = 83  // { int setitimer(u_int which, struct \
--	SYS_SWAPON                 = 85  // { int swapon(char *name); }
--	SYS_GETITIMER              = 86  // { int getitimer(u_int which, \
--	SYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }
--	SYS_DUP2                   = 90  // { int dup2(u_int from, u_int to); }
--	SYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }
--	SYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
--	SYS_FSYNC                  = 95  // { int fsync(int fd); }
--	SYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, \
--	SYS_SOCKET                 = 97  // { int socket(int domain, int type, \
--	SYS_CONNECT                = 98  // { int connect(int s, caddr_t name, \
--	SYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }
--	SYS_BIND                   = 104 // { int bind(int s, caddr_t name, \
--	SYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, \
--	SYS_LISTEN                 = 106 // { int listen(int s, int backlog); }
--	SYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, \
--	SYS_GETRUSAGE              = 117 // { int getrusage(int who, \
--	SYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, \
--	SYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, \
--	SYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, \
--	SYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, \
--	SYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }
--	SYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }
--	SYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }
--	SYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }
--	SYS_RENAME                 = 128 // { int rename(char *from, char *to); }
--	SYS_FLOCK                  = 131 // { int flock(int fd, int how); }
--	SYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }
--	SYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, \
--	SYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }
--	SYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, \
--	SYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }
--	SYS_RMDIR                  = 137 // { int rmdir(char *path); }
--	SYS_UTIMES                 = 138 // { int utimes(char *path, \
--	SYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, \
--	SYS_SETSID                 = 147 // { int setsid(void); }
--	SYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, \
--	SYS_LGETFH                 = 160 // { int lgetfh(char *fname, \
--	SYS_GETFH                  = 161 // { int getfh(char *fname, \
--	SYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }
--	SYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, \
--	SYS_FREEBSD6_PREAD         = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
--	SYS_FREEBSD6_PWRITE        = 174 // { ssize_t freebsd6_pwrite(int fd, \
--	SYS_SETFIB                 = 175 // { int setfib(int fibnum); }
--	SYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }
--	SYS_SETGID                 = 181 // { int setgid(gid_t gid); }
--	SYS_SETEGID                = 182 // { int setegid(gid_t egid); }
--	SYS_SETEUID                = 183 // { int seteuid(uid_t euid); }
--	SYS_STAT                   = 188 // { int stat(char *path, struct stat *ub); }
--	SYS_FSTAT                  = 189 // { int fstat(int fd, struct stat *sb); }
--	SYS_LSTAT                  = 190 // { int lstat(char *path, struct stat *ub); }
--	SYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }
--	SYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }
--	SYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, \
--	SYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, \
--	SYS_GETDIRENTRIES          = 196 // { int getdirentries(int fd, char *buf, \
--	SYS_FREEBSD6_MMAP          = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
--	SYS_FREEBSD6_LSEEK         = 199 // { off_t freebsd6_lseek(int fd, int pad, \
--	SYS_FREEBSD6_TRUNCATE      = 200 // { int freebsd6_truncate(char *path, int pad, \
--	SYS_FREEBSD6_FTRUNCATE     = 201 // { int freebsd6_ftruncate(int fd, int pad, \
--	SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, \
--	SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
--	SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
--	SYS_UNDELETE               = 205 // { int undelete(char *path); }
--	SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
--	SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
--	SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
--	SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME          = 233 // { int clock_settime( \
--	SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
--	SYS_KTIMER_CREATE          = 235 // { int ktimer_create(clockid_t clock_id, \
--	SYS_KTIMER_DELETE          = 236 // { int ktimer_delete(int timerid); }
--	SYS_KTIMER_SETTIME         = 237 // { int ktimer_settime(int timerid, int flags, \
--	SYS_KTIMER_GETTIME         = 238 // { int ktimer_gettime(int timerid, struct \
--	SYS_KTIMER_GETOVERRUN      = 239 // { int ktimer_getoverrun(int timerid); }
--	SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
--	SYS_FFCLOCK_GETCOUNTER     = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
--	SYS_FFCLOCK_SETESTIMATE    = 242 // { int ffclock_setestimate( \
--	SYS_FFCLOCK_GETESTIMATE    = 243 // { int ffclock_getestimate( \
--	SYS_CLOCK_GETCPUCLOCKID2   = 247 // { int clock_getcpuclockid2(id_t id,\
--	SYS_NTP_GETTIME            = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
--	SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, \
--	SYS_RFORK                  = 251 // { int rfork(int flags); }
--	SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, \
--	SYS_ISSETUGID              = 253 // { int issetugid(void); }
--	SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
--	SYS_GETDENTS               = 272 // { int getdents(int fd, char *buf, \
--	SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
--	SYS_LUTIMES                = 276 // { int lutimes(char *path, \
--	SYS_NSTAT                  = 278 // { int nstat(char *path, struct nstat *ub); }
--	SYS_NFSTAT                 = 279 // { int nfstat(int fd, struct nstat *sb); }
--	SYS_NLSTAT                 = 280 // { int nlstat(char *path, struct nstat *ub); }
--	SYS_PREADV                 = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
--	SYS_PWRITEV                = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
--	SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, \
--	SYS_FHSTAT                 = 299 // { int fhstat(const struct fhandle *u_fhp, \
--	SYS_MODNEXT                = 300 // { int modnext(int modid); }
--	SYS_MODSTAT                = 301 // { int modstat(int modid, \
--	SYS_MODFNEXT               = 302 // { int modfnext(int modid); }
--	SYS_MODFIND                = 303 // { int modfind(const char *name); }
--	SYS_KLDLOAD                = 304 // { int kldload(const char *file); }
--	SYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }
--	SYS_KLDFIND                = 306 // { int kldfind(const char *file); }
--	SYS_KLDNEXT                = 307 // { int kldnext(int fileid); }
--	SYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct \
--	SYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }
--	SYS_GETSID                 = 310 // { int getsid(pid_t pid); }
--	SYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, \
--	SYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, \
--	SYS_YIELD                  = 321 // { int yield(void); }
--	SYS_MLOCKALL               = 324 // { int mlockall(int how); }
--	SYS_MUNLOCKALL             = 325 // { int munlockall(void); }
--	SYS___GETCWD               = 326 // { int __getcwd(char *buf, u_int buflen); }
--	SYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, \
--	SYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct \
--	SYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int \
--	SYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }
--	SYS_SCHED_YIELD            = 331 // { int sched_yield (void); }
--	SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
--	SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
--	SYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, \
--	SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
--	SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, \
--	SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
--	SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, \
--	SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
--	SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
--	SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set, \
--	SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set, \
--	SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
--	SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
--	SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, \
--	SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, \
--	SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
--	SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, \
--	SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
--	SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, \
--	SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
--	SYS_EXTATTR_SET_FILE       = 356 // { ssize_t extattr_set_file( \
--	SYS_EXTATTR_GET_FILE       = 357 // { ssize_t extattr_get_file( \
--	SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
--	SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_KQUEUE                 = 362 // { int kqueue(void); }
--	SYS_KEVENT                 = 363 // { int kevent(int fd, \
--	SYS_EXTATTR_SET_FD         = 371 // { ssize_t extattr_set_fd(int fd, \
--	SYS_EXTATTR_GET_FD         = 372 // { ssize_t extattr_get_fd(int fd, \
--	SYS_EXTATTR_DELETE_FD      = 373 // { int extattr_delete_fd(int fd, \
--	SYS___SETUGID              = 374 // { int __setugid(int flag); }
--	SYS_EACCESS                = 376 // { int eaccess(char *path, int amode); }
--	SYS_NMOUNT                 = 378 // { int nmount(struct iovec *iovp, \
--	SYS___MAC_GET_PROC         = 384 // { int __mac_get_proc(struct mac *mac_p); }
--	SYS___MAC_SET_PROC         = 385 // { int __mac_set_proc(struct mac *mac_p); }
--	SYS___MAC_GET_FD           = 386 // { int __mac_get_fd(int fd, \
--	SYS___MAC_GET_FILE         = 387 // { int __mac_get_file(const char *path_p, \
--	SYS___MAC_SET_FD           = 388 // { int __mac_set_fd(int fd, \
--	SYS___MAC_SET_FILE         = 389 // { int __mac_set_file(const char *path_p, \
--	SYS_KENV                   = 390 // { int kenv(int what, const char *name, \
--	SYS_LCHFLAGS               = 391 // { int lchflags(const char *path, \
--	SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, \
--	SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, \
--	SYS_MAC_SYSCALL            = 394 // { int mac_syscall(const char *policy, \
--	SYS_GETFSSTAT              = 395 // { int getfsstat(struct statfs *buf, \
--	SYS_STATFS                 = 396 // { int statfs(char *path, \
--	SYS_FSTATFS                = 397 // { int fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS               = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
--	SYS___MAC_GET_PID          = 409 // { int __mac_get_pid(pid_t pid, \
--	SYS___MAC_GET_LINK         = 410 // { int __mac_get_link(const char *path_p, \
--	SYS___MAC_SET_LINK         = 411 // { int __mac_set_link(const char *path_p, \
--	SYS_EXTATTR_SET_LINK       = 412 // { ssize_t extattr_set_link( \
--	SYS_EXTATTR_GET_LINK       = 413 // { ssize_t extattr_get_link( \
--	SYS_EXTATTR_DELETE_LINK    = 414 // { int extattr_delete_link( \
--	SYS___MAC_EXECVE           = 415 // { int __mac_execve(char *fname, char **argv, \
--	SYS_SIGACTION              = 416 // { int sigaction(int sig, \
--	SYS_SIGRETURN              = 417 // { int sigreturn( \
--	SYS_GETCONTEXT             = 421 // { int getcontext(struct __ucontext *ucp); }
--	SYS_SETCONTEXT             = 422 // { int setcontext( \
--	SYS_SWAPCONTEXT            = 423 // { int swapcontext(struct __ucontext *oucp, \
--	SYS_SWAPOFF                = 424 // { int swapoff(const char *name); }
--	SYS___ACL_GET_LINK         = 425 // { int __acl_get_link(const char *path, \
--	SYS___ACL_SET_LINK         = 426 // { int __acl_set_link(const char *path, \
--	SYS___ACL_DELETE_LINK      = 427 // { int __acl_delete_link(const char *path, \
--	SYS___ACL_ACLCHECK_LINK    = 428 // { int __acl_aclcheck_link(const char *path, \
--	SYS_SIGWAIT                = 429 // { int sigwait(const sigset_t *set, \
--	SYS_THR_CREATE             = 430 // { int thr_create(ucontext_t *ctx, long *id, \
--	SYS_THR_EXIT               = 431 // { void thr_exit(long *state); }
--	SYS_THR_SELF               = 432 // { int thr_self(long *id); }
--	SYS_THR_KILL               = 433 // { int thr_kill(long id, int sig); }
--	SYS__UMTX_LOCK             = 434 // { int _umtx_lock(struct umtx *umtx); }
--	SYS__UMTX_UNLOCK           = 435 // { int _umtx_unlock(struct umtx *umtx); }
--	SYS_JAIL_ATTACH            = 436 // { int jail_attach(int jid); }
--	SYS_EXTATTR_LIST_FD        = 437 // { ssize_t extattr_list_fd(int fd, \
--	SYS_EXTATTR_LIST_FILE      = 438 // { ssize_t extattr_list_file( \
--	SYS_EXTATTR_LIST_LINK      = 439 // { ssize_t extattr_list_link( \
--	SYS_THR_SUSPEND            = 442 // { int thr_suspend( \
--	SYS_THR_WAKE               = 443 // { int thr_wake(long id); }
--	SYS_KLDUNLOADF             = 444 // { int kldunloadf(int fileid, int flags); }
--	SYS_AUDIT                  = 445 // { int audit(const void *record, \
--	SYS_AUDITON                = 446 // { int auditon(int cmd, void *data, \
--	SYS_GETAUID                = 447 // { int getauid(uid_t *auid); }
--	SYS_SETAUID                = 448 // { int setauid(uid_t *auid); }
--	SYS_GETAUDIT               = 449 // { int getaudit(struct auditinfo *auditinfo); }
--	SYS_SETAUDIT               = 450 // { int setaudit(struct auditinfo *auditinfo); }
--	SYS_GETAUDIT_ADDR          = 451 // { int getaudit_addr( \
--	SYS_SETAUDIT_ADDR          = 452 // { int setaudit_addr( \
--	SYS_AUDITCTL               = 453 // { int auditctl(char *path); }
--	SYS__UMTX_OP               = 454 // { int _umtx_op(void *obj, int op, \
--	SYS_THR_NEW                = 455 // { int thr_new(struct thr_param *param, \
--	SYS_SIGQUEUE               = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
--	SYS_ABORT2                 = 463 // { int abort2(const char *why, int nargs, void **args); }
--	SYS_THR_SET_NAME           = 464 // { int thr_set_name(long id, const char *name); }
--	SYS_RTPRIO_THREAD          = 466 // { int rtprio_thread(int function, \
--	SYS_PREAD                  = 475 // { ssize_t pread(int fd, void *buf, \
--	SYS_PWRITE                 = 476 // { ssize_t pwrite(int fd, const void *buf, \
--	SYS_MMAP                   = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
--	SYS_LSEEK                  = 478 // { off_t lseek(int fd, off_t offset, \
--	SYS_TRUNCATE               = 479 // { int truncate(char *path, off_t length); }
--	SYS_FTRUNCATE              = 480 // { int ftruncate(int fd, off_t length); }
--	SYS_THR_KILL2              = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
--	SYS_SHM_OPEN               = 482 // { int shm_open(const char *path, int flags, \
--	SYS_SHM_UNLINK             = 483 // { int shm_unlink(const char *path); }
--	SYS_CPUSET                 = 484 // { int cpuset(cpusetid_t *setid); }
--	SYS_CPUSET_SETID           = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
--	SYS_CPUSET_GETID           = 486 // { int cpuset_getid(cpulevel_t level, \
--	SYS_CPUSET_GETAFFINITY     = 487 // { int cpuset_getaffinity(cpulevel_t level, \
--	SYS_CPUSET_SETAFFINITY     = 488 // { int cpuset_setaffinity(cpulevel_t level, \
--	SYS_FACCESSAT              = 489 // { int faccessat(int fd, char *path, int amode, \
--	SYS_FCHMODAT               = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
--	SYS_FCHOWNAT               = 491 // { int fchownat(int fd, char *path, uid_t uid, \
--	SYS_FEXECVE                = 492 // { int fexecve(int fd, char **argv, \
--	SYS_FSTATAT                = 493 // { int fstatat(int fd, char *path, \
--	SYS_FUTIMESAT              = 494 // { int futimesat(int fd, char *path, \
--	SYS_LINKAT                 = 495 // { int linkat(int fd1, char *path1, int fd2, \
--	SYS_MKDIRAT                = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
--	SYS_MKFIFOAT               = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
--	SYS_MKNODAT                = 498 // { int mknodat(int fd, char *path, mode_t mode, \
--	SYS_OPENAT                 = 499 // { int openat(int fd, char *path, int flag, \
--	SYS_READLINKAT             = 500 // { int readlinkat(int fd, char *path, char *buf, \
--	SYS_RENAMEAT               = 501 // { int renameat(int oldfd, char *old, int newfd, \
--	SYS_SYMLINKAT              = 502 // { int symlinkat(char *path1, int fd, \
--	SYS_UNLINKAT               = 503 // { int unlinkat(int fd, char *path, int flag); }
--	SYS_POSIX_OPENPT           = 504 // { int posix_openpt(int flags); }
--	SYS_JAIL_GET               = 506 // { int jail_get(struct iovec *iovp, \
--	SYS_JAIL_SET               = 507 // { int jail_set(struct iovec *iovp, \
--	SYS_JAIL_REMOVE            = 508 // { int jail_remove(int jid); }
--	SYS_CLOSEFROM              = 509 // { int closefrom(int lowfd); }
--	SYS_LPATHCONF              = 513 // { int lpathconf(char *path, int name); }
--	SYS___CAP_RIGHTS_GET       = 515 // { int __cap_rights_get(int version, \
--	SYS_CAP_ENTER              = 516 // { int cap_enter(void); }
--	SYS_CAP_GETMODE            = 517 // { int cap_getmode(u_int *modep); }
--	SYS_PDFORK                 = 518 // { int pdfork(int *fdp, int flags); }
--	SYS_PDKILL                 = 519 // { int pdkill(int fd, int signum); }
--	SYS_PDGETPID               = 520 // { int pdgetpid(int fd, pid_t *pidp); }
--	SYS_PSELECT                = 522 // { int pselect(int nd, fd_set *in, \
--	SYS_GETLOGINCLASS          = 523 // { int getloginclass(char *namebuf, \
--	SYS_SETLOGINCLASS          = 524 // { int setloginclass(const char *namebuf); }
--	SYS_RCTL_GET_RACCT         = 525 // { int rctl_get_racct(const void *inbufp, \
--	SYS_RCTL_GET_RULES         = 526 // { int rctl_get_rules(const void *inbufp, \
--	SYS_RCTL_GET_LIMITS        = 527 // { int rctl_get_limits(const void *inbufp, \
--	SYS_RCTL_ADD_RULE          = 528 // { int rctl_add_rule(const void *inbufp, \
--	SYS_RCTL_REMOVE_RULE       = 529 // { int rctl_remove_rule(const void *inbufp, \
--	SYS_POSIX_FALLOCATE        = 530 // { int posix_fallocate(int fd, \
--	SYS_POSIX_FADVISE          = 531 // { int posix_fadvise(int fd, off_t offset, \
--	SYS_WAIT6                  = 532 // { int wait6(idtype_t idtype, id_t id, \
--	SYS_CAP_RIGHTS_LIMIT       = 533 // { int cap_rights_limit(int fd, \
--	SYS_CAP_IOCTLS_LIMIT       = 534 // { int cap_ioctls_limit(int fd, \
--	SYS_CAP_IOCTLS_GET         = 535 // { ssize_t cap_ioctls_get(int fd, \
--	SYS_CAP_FCNTLS_LIMIT       = 536 // { int cap_fcntls_limit(int fd, \
--	SYS_CAP_FCNTLS_GET         = 537 // { int cap_fcntls_get(int fd, \
--	SYS_BINDAT                 = 538 // { int bindat(int fd, int s, caddr_t name, \
--	SYS_CONNECTAT              = 539 // { int connectat(int fd, int s, caddr_t name, \
--	SYS_CHFLAGSAT              = 540 // { int chflagsat(int fd, const char *path, \
--	SYS_ACCEPT4                = 541 // { int accept4(int s, \
--	SYS_PIPE2                  = 542 // { int pipe2(int *fildes, int flags); }
--	SYS_PROCCTL                = 544 // { int procctl(idtype_t idtype, id_t id, \
--	SYS_PPOLL                  = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
--	SYS_FUTIMENS               = 546 // { int futimens(int fd, \
--	SYS_UTIMENSAT              = 547 // { int utimensat(int fd, \
-+	SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void
-+	SYS_FORK                     = 2   // { int fork(void); }
-+	SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+	SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
-+	SYS_CLOSE                    = 6   // { int close(int fd); }
-+	SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+	SYS_LINK                     = 9   // { int link(char *path, char *link); }
-+	SYS_UNLINK                   = 10  // { int unlink(char *path); }
-+	SYS_CHDIR                    = 12  // { int chdir(char *path); }
-+	SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
-+	SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
-+	SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
-+	SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
-+	SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break obreak_args int
-+	SYS_GETPID                   = 20  // { pid_t getpid(void); }
-+	SYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
-+	SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
-+	SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
-+	SYS_GETUID                   = 24  // { uid_t getuid(void); }
-+	SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
-+	SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+	SYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+	SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
-+	SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
-+	SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
-+	SYS_SYNC                     = 36  // { int sync(void); }
-+	SYS_KILL                     = 37  // { int kill(int pid, int signum); }
-+	SYS_GETPPID                  = 39  // { pid_t getppid(void); }
-+	SYS_DUP                      = 41  // { int dup(u_int fd); }
-+	SYS_PIPE                     = 42  // { int pipe(void); }
-+	SYS_GETEGID                  = 43  // { gid_t getegid(void); }
-+	SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+	SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+	SYS_GETGID                   = 47  // { gid_t getgid(void); }
-+	SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }
-+	SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
-+	SYS_ACCT                     = 51  // { int acct(char *path); }
-+	SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+	SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
-+	SYS_REBOOT                   = 55  // { int reboot(int opt); }
-+	SYS_REVOKE                   = 56  // { int revoke(char *path); }
-+	SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
-+	SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }
-+	SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }
-+	SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args int
-+	SYS_CHROOT                   = 61  // { int chroot(char *path); }
-+	SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }
-+	SYS_VFORK                    = 66  // { int vfork(void); }
-+	SYS_SBRK                     = 69  // { int sbrk(int incr); }
-+	SYS_SSTK                     = 70  // { int sstk(int incr); }
-+	SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int
-+	SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
-+	SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, int prot); }
-+	SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }
-+	SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_GETPGRP                  = 81  // { int getpgrp(void); }
-+	SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
-+	SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_SWAPON                   = 85  // { int swapon(char *name); }
-+	SYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }
-+	SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
-+	SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
-+	SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
-+	SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_FSYNC                    = 95  // { int fsync(int fd); }
-+	SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }
-+	SYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }
-+	SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }
-+	SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
-+	SYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }
-+	SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+	SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
-+	SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }
-+	SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+	SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+	SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
-+	SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
-+	SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
-+	SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
-+	SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
-+	SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
-+	SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
-+	SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+	SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
-+	SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+	SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
-+	SYS_RMDIR                    = 137 // { int rmdir(char *path); }
-+	SYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }
-+	SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+	SYS_SETSID                   = 147 // { int setsid(void); }
-+	SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+	SYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+	SYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }
-+	SYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+	SYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+	SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
-+	SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+	SYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+	SYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+	SYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+	SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
-+	SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
-+	SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
-+	SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
-+	SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
-+	SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
-+	SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
-+	SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
-+	SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
-+	SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
-+	SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+	SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+	SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+	SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+	SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
-+	SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
-+	SYS_UNDELETE                 = 205 // { int undelete(char *path); }
-+	SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
-+	SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
-+	SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }
-+	SYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }
-+	SYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+	SYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }
-+	SYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+	SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME            = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+	SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+	SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
-+	SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+	SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+	SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
-+	SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+	SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+	SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+	SYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+	SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+	SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+	SYS_RFORK                    = 251 // { int rfork(int flags); }
-+	SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_ISSETUGID                = 253 // { int issetugid(void); }
-+	SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
-+	SYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }
-+	SYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }
-+	SYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+	SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }
-+	SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
-+	SYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+	SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
-+	SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
-+	SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
-+	SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+	SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+	SYS_MODNEXT                  = 300 // { int modnext(int modid); }
-+	SYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat *stat); }
-+	SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
-+	SYS_MODFIND                  = 303 // { int modfind(const char *name); }
-+	SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
-+	SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
-+	SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
-+	SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
-+	SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+	SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
-+	SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
-+	SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+	SYS_AIO_SUSPEND              = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+	SYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+	SYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }
-+	SYS_YIELD                    = 321 // { int yield(void); }
-+	SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
-+	SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
-+	SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
-+	SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+	SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+	SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+	SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
-+	SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
-+	SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
-+	SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
-+	SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+	SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
-+	SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+	SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
-+	SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+	SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+	SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
-+	SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+	SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+	SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+	SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+	SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+	SYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+	SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_KQUEUE                   = 362 // { int kqueue(void); }
-+	SYS_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+	SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+	SYS___SETUGID                = 374 // { int __setugid(int flag); }
-+	SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
-+	SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+	SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+	SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+	SYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+	SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }
-+	SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }
-+	SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+	SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+	SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+	SYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }
-+	SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+	SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+	SYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }
-+	SYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }
-+	SYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }
-+	SYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }
-+	SYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+	SYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+	SYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }
-+	SYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+	SYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }
-+	SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+	SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+	SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+	SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+	SYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+	SYS_SIGRETURN                = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+	SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
-+	SYS_SETCONTEXT               = 422 // { int setcontext( const struct __ucontext *ucp); }
-+	SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+	SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
-+	SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+	SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+	SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
-+	SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
-+	SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
-+	SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
-+	SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+	SYS_THR_SUSPEND              = 442 // { int thr_suspend( const struct timespec *timeout); }
-+	SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
-+	SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
-+	SYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }
-+	SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }
-+	SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
-+	SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
-+	SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+	SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+	SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
-+	SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+	SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+	SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+	SYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+	SYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,		const struct mq_attr *attr,		struct mq_attr *oattr); }
-+	SYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,	char *msg_ptr, size_t msg_len,	unsigned *msg_prio,			const struct timespec *abs_timeout); }
-+	SYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,		const char *msg_ptr, size_t msg_len,unsigned msg_prio,			const struct timespec *abs_timeout);}
-+	SYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,		const struct sigevent *sigev); }
-+	SYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }
-+	SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
-+	SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
-+	SYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+	SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+	SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+	SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+	SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+	SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+	SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+	SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+	SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
-+	SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
-+	SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+	SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+	SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
-+	SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
-+	SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+	SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+	SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+	SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+	SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+	SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+	SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+	SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+	SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+	SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+	SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+	SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+	SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+	SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+	SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+	SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
-+	SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
-+	SYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }
-+	SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
-+	SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
-+	SYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+	SYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
-+	SYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
-+	SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
-+	SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
-+	SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
-+	SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+	SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+	SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+	SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
-+	SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+	SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+	SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+	SYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+	SYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+	SYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+	SYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+	SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+	SYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+	SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
-+	SYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+	SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+	SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+	SYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }
-+	SYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+	SYS_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+	SYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+	SYS_FDATASYNC                = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-index 81722ac9..48a7beae 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,freebsd
-@@ -7,347 +7,390 @@ package unix
- 
- const (
- 	// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
--	SYS_EXIT                   = 1   // { void sys_exit(int rval); } exit \
--	SYS_FORK                   = 2   // { int fork(void); }
--	SYS_READ                   = 3   // { ssize_t read(int fd, void *buf, \
--	SYS_WRITE                  = 4   // { ssize_t write(int fd, const void *buf, \
--	SYS_OPEN                   = 5   // { int open(char *path, int flags, int mode); }
--	SYS_CLOSE                  = 6   // { int close(int fd); }
--	SYS_WAIT4                  = 7   // { int wait4(int pid, int *status, \
--	SYS_LINK                   = 9   // { int link(char *path, char *link); }
--	SYS_UNLINK                 = 10  // { int unlink(char *path); }
--	SYS_CHDIR                  = 12  // { int chdir(char *path); }
--	SYS_FCHDIR                 = 13  // { int fchdir(int fd); }
--	SYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }
--	SYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }
--	SYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }
--	SYS_OBREAK                 = 17  // { int obreak(char *nsize); } break \
--	SYS_GETPID                 = 20  // { pid_t getpid(void); }
--	SYS_MOUNT                  = 21  // { int mount(char *type, char *path, \
--	SYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }
--	SYS_SETUID                 = 23  // { int setuid(uid_t uid); }
--	SYS_GETUID                 = 24  // { uid_t getuid(void); }
--	SYS_GETEUID                = 25  // { uid_t geteuid(void); }
--	SYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, \
--	SYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG                = 28  // { int sendmsg(int s, struct msghdr *msg, \
--	SYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, \
--	SYS_ACCEPT                 = 30  // { int accept(int s, \
--	SYS_GETPEERNAME            = 31  // { int getpeername(int fdes, \
--	SYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, \
--	SYS_ACCESS                 = 33  // { int access(char *path, int amode); }
--	SYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }
--	SYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }
--	SYS_SYNC                   = 36  // { int sync(void); }
--	SYS_KILL                   = 37  // { int kill(int pid, int signum); }
--	SYS_GETPPID                = 39  // { pid_t getppid(void); }
--	SYS_DUP                    = 41  // { int dup(u_int fd); }
--	SYS_PIPE                   = 42  // { int pipe(void); }
--	SYS_GETEGID                = 43  // { gid_t getegid(void); }
--	SYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, \
--	SYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, \
--	SYS_GETGID                 = 47  // { gid_t getgid(void); }
--	SYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, u_int \
--	SYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }
--	SYS_ACCT                   = 51  // { int acct(char *path); }
--	SYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, \
--	SYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, \
--	SYS_REBOOT                 = 55  // { int reboot(int opt); }
--	SYS_REVOKE                 = 56  // { int revoke(char *path); }
--	SYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }
--	SYS_READLINK               = 58  // { ssize_t readlink(char *path, char *buf, \
--	SYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, \
--	SYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args \
--	SYS_CHROOT                 = 61  // { int chroot(char *path); }
--	SYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, \
--	SYS_VFORK                  = 66  // { int vfork(void); }
--	SYS_SBRK                   = 69  // { int sbrk(int incr); }
--	SYS_SSTK                   = 70  // { int sstk(int incr); }
--	SYS_OVADVISE               = 72  // { int ovadvise(int anom); } vadvise \
--	SYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }
--	SYS_MPROTECT               = 74  // { int mprotect(const void *addr, size_t len, \
--	SYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, \
--	SYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, \
--	SYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, \
--	SYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, \
--	SYS_GETPGRP                = 81  // { int getpgrp(void); }
--	SYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }
--	SYS_SETITIMER              = 83  // { int setitimer(u_int which, struct \
--	SYS_SWAPON                 = 85  // { int swapon(char *name); }
--	SYS_GETITIMER              = 86  // { int getitimer(u_int which, \
--	SYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }
--	SYS_DUP2                   = 90  // { int dup2(u_int from, u_int to); }
--	SYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }
--	SYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
--	SYS_FSYNC                  = 95  // { int fsync(int fd); }
--	SYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, \
--	SYS_SOCKET                 = 97  // { int socket(int domain, int type, \
--	SYS_CONNECT                = 98  // { int connect(int s, caddr_t name, \
--	SYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }
--	SYS_BIND                   = 104 // { int bind(int s, caddr_t name, \
--	SYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, \
--	SYS_LISTEN                 = 106 // { int listen(int s, int backlog); }
--	SYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, \
--	SYS_GETRUSAGE              = 117 // { int getrusage(int who, \
--	SYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, \
--	SYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, \
--	SYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, \
--	SYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, \
--	SYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }
--	SYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }
--	SYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }
--	SYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }
--	SYS_RENAME                 = 128 // { int rename(char *from, char *to); }
--	SYS_FLOCK                  = 131 // { int flock(int fd, int how); }
--	SYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }
--	SYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, \
--	SYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }
--	SYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, \
--	SYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }
--	SYS_RMDIR                  = 137 // { int rmdir(char *path); }
--	SYS_UTIMES                 = 138 // { int utimes(char *path, \
--	SYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, \
--	SYS_SETSID                 = 147 // { int setsid(void); }
--	SYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, \
--	SYS_LGETFH                 = 160 // { int lgetfh(char *fname, \
--	SYS_GETFH                  = 161 // { int getfh(char *fname, \
--	SYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }
--	SYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, \
--	SYS_FREEBSD6_PREAD         = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
--	SYS_FREEBSD6_PWRITE        = 174 // { ssize_t freebsd6_pwrite(int fd, \
--	SYS_SETFIB                 = 175 // { int setfib(int fibnum); }
--	SYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }
--	SYS_SETGID                 = 181 // { int setgid(gid_t gid); }
--	SYS_SETEGID                = 182 // { int setegid(gid_t egid); }
--	SYS_SETEUID                = 183 // { int seteuid(uid_t euid); }
--	SYS_STAT                   = 188 // { int stat(char *path, struct stat *ub); }
--	SYS_FSTAT                  = 189 // { int fstat(int fd, struct stat *sb); }
--	SYS_LSTAT                  = 190 // { int lstat(char *path, struct stat *ub); }
--	SYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }
--	SYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }
--	SYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, \
--	SYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, \
--	SYS_GETDIRENTRIES          = 196 // { int getdirentries(int fd, char *buf, \
--	SYS_FREEBSD6_MMAP          = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
--	SYS_FREEBSD6_LSEEK         = 199 // { off_t freebsd6_lseek(int fd, int pad, \
--	SYS_FREEBSD6_TRUNCATE      = 200 // { int freebsd6_truncate(char *path, int pad, \
--	SYS_FREEBSD6_FTRUNCATE     = 201 // { int freebsd6_ftruncate(int fd, int pad, \
--	SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, \
--	SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
--	SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
--	SYS_UNDELETE               = 205 // { int undelete(char *path); }
--	SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
--	SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
--	SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
--	SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME          = 233 // { int clock_settime( \
--	SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
--	SYS_KTIMER_CREATE          = 235 // { int ktimer_create(clockid_t clock_id, \
--	SYS_KTIMER_DELETE          = 236 // { int ktimer_delete(int timerid); }
--	SYS_KTIMER_SETTIME         = 237 // { int ktimer_settime(int timerid, int flags, \
--	SYS_KTIMER_GETTIME         = 238 // { int ktimer_gettime(int timerid, struct \
--	SYS_KTIMER_GETOVERRUN      = 239 // { int ktimer_getoverrun(int timerid); }
--	SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
--	SYS_FFCLOCK_GETCOUNTER     = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
--	SYS_FFCLOCK_SETESTIMATE    = 242 // { int ffclock_setestimate( \
--	SYS_FFCLOCK_GETESTIMATE    = 243 // { int ffclock_getestimate( \
--	SYS_CLOCK_GETCPUCLOCKID2   = 247 // { int clock_getcpuclockid2(id_t id,\
--	SYS_NTP_GETTIME            = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
--	SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, \
--	SYS_RFORK                  = 251 // { int rfork(int flags); }
--	SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, \
--	SYS_ISSETUGID              = 253 // { int issetugid(void); }
--	SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
--	SYS_GETDENTS               = 272 // { int getdents(int fd, char *buf, \
--	SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
--	SYS_LUTIMES                = 276 // { int lutimes(char *path, \
--	SYS_NSTAT                  = 278 // { int nstat(char *path, struct nstat *ub); }
--	SYS_NFSTAT                 = 279 // { int nfstat(int fd, struct nstat *sb); }
--	SYS_NLSTAT                 = 280 // { int nlstat(char *path, struct nstat *ub); }
--	SYS_PREADV                 = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
--	SYS_PWRITEV                = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
--	SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, \
--	SYS_FHSTAT                 = 299 // { int fhstat(const struct fhandle *u_fhp, \
--	SYS_MODNEXT                = 300 // { int modnext(int modid); }
--	SYS_MODSTAT                = 301 // { int modstat(int modid, \
--	SYS_MODFNEXT               = 302 // { int modfnext(int modid); }
--	SYS_MODFIND                = 303 // { int modfind(const char *name); }
--	SYS_KLDLOAD                = 304 // { int kldload(const char *file); }
--	SYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }
--	SYS_KLDFIND                = 306 // { int kldfind(const char *file); }
--	SYS_KLDNEXT                = 307 // { int kldnext(int fileid); }
--	SYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct \
--	SYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }
--	SYS_GETSID                 = 310 // { int getsid(pid_t pid); }
--	SYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, \
--	SYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, \
--	SYS_YIELD                  = 321 // { int yield(void); }
--	SYS_MLOCKALL               = 324 // { int mlockall(int how); }
--	SYS_MUNLOCKALL             = 325 // { int munlockall(void); }
--	SYS___GETCWD               = 326 // { int __getcwd(char *buf, u_int buflen); }
--	SYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, \
--	SYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct \
--	SYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int \
--	SYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }
--	SYS_SCHED_YIELD            = 331 // { int sched_yield (void); }
--	SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
--	SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
--	SYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, \
--	SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
--	SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, \
--	SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
--	SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, \
--	SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
--	SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
--	SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set, \
--	SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set, \
--	SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
--	SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
--	SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, \
--	SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, \
--	SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
--	SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, \
--	SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
--	SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, \
--	SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
--	SYS_EXTATTR_SET_FILE       = 356 // { ssize_t extattr_set_file( \
--	SYS_EXTATTR_GET_FILE       = 357 // { ssize_t extattr_get_file( \
--	SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
--	SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_KQUEUE                 = 362 // { int kqueue(void); }
--	SYS_KEVENT                 = 363 // { int kevent(int fd, \
--	SYS_EXTATTR_SET_FD         = 371 // { ssize_t extattr_set_fd(int fd, \
--	SYS_EXTATTR_GET_FD         = 372 // { ssize_t extattr_get_fd(int fd, \
--	SYS_EXTATTR_DELETE_FD      = 373 // { int extattr_delete_fd(int fd, \
--	SYS___SETUGID              = 374 // { int __setugid(int flag); }
--	SYS_EACCESS                = 376 // { int eaccess(char *path, int amode); }
--	SYS_NMOUNT                 = 378 // { int nmount(struct iovec *iovp, \
--	SYS___MAC_GET_PROC         = 384 // { int __mac_get_proc(struct mac *mac_p); }
--	SYS___MAC_SET_PROC         = 385 // { int __mac_set_proc(struct mac *mac_p); }
--	SYS___MAC_GET_FD           = 386 // { int __mac_get_fd(int fd, \
--	SYS___MAC_GET_FILE         = 387 // { int __mac_get_file(const char *path_p, \
--	SYS___MAC_SET_FD           = 388 // { int __mac_set_fd(int fd, \
--	SYS___MAC_SET_FILE         = 389 // { int __mac_set_file(const char *path_p, \
--	SYS_KENV                   = 390 // { int kenv(int what, const char *name, \
--	SYS_LCHFLAGS               = 391 // { int lchflags(const char *path, \
--	SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, \
--	SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, \
--	SYS_MAC_SYSCALL            = 394 // { int mac_syscall(const char *policy, \
--	SYS_GETFSSTAT              = 395 // { int getfsstat(struct statfs *buf, \
--	SYS_STATFS                 = 396 // { int statfs(char *path, \
--	SYS_FSTATFS                = 397 // { int fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS               = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
--	SYS___MAC_GET_PID          = 409 // { int __mac_get_pid(pid_t pid, \
--	SYS___MAC_GET_LINK         = 410 // { int __mac_get_link(const char *path_p, \
--	SYS___MAC_SET_LINK         = 411 // { int __mac_set_link(const char *path_p, \
--	SYS_EXTATTR_SET_LINK       = 412 // { ssize_t extattr_set_link( \
--	SYS_EXTATTR_GET_LINK       = 413 // { ssize_t extattr_get_link( \
--	SYS_EXTATTR_DELETE_LINK    = 414 // { int extattr_delete_link( \
--	SYS___MAC_EXECVE           = 415 // { int __mac_execve(char *fname, char **argv, \
--	SYS_SIGACTION              = 416 // { int sigaction(int sig, \
--	SYS_SIGRETURN              = 417 // { int sigreturn( \
--	SYS_GETCONTEXT             = 421 // { int getcontext(struct __ucontext *ucp); }
--	SYS_SETCONTEXT             = 422 // { int setcontext( \
--	SYS_SWAPCONTEXT            = 423 // { int swapcontext(struct __ucontext *oucp, \
--	SYS_SWAPOFF                = 424 // { int swapoff(const char *name); }
--	SYS___ACL_GET_LINK         = 425 // { int __acl_get_link(const char *path, \
--	SYS___ACL_SET_LINK         = 426 // { int __acl_set_link(const char *path, \
--	SYS___ACL_DELETE_LINK      = 427 // { int __acl_delete_link(const char *path, \
--	SYS___ACL_ACLCHECK_LINK    = 428 // { int __acl_aclcheck_link(const char *path, \
--	SYS_SIGWAIT                = 429 // { int sigwait(const sigset_t *set, \
--	SYS_THR_CREATE             = 430 // { int thr_create(ucontext_t *ctx, long *id, \
--	SYS_THR_EXIT               = 431 // { void thr_exit(long *state); }
--	SYS_THR_SELF               = 432 // { int thr_self(long *id); }
--	SYS_THR_KILL               = 433 // { int thr_kill(long id, int sig); }
--	SYS__UMTX_LOCK             = 434 // { int _umtx_lock(struct umtx *umtx); }
--	SYS__UMTX_UNLOCK           = 435 // { int _umtx_unlock(struct umtx *umtx); }
--	SYS_JAIL_ATTACH            = 436 // { int jail_attach(int jid); }
--	SYS_EXTATTR_LIST_FD        = 437 // { ssize_t extattr_list_fd(int fd, \
--	SYS_EXTATTR_LIST_FILE      = 438 // { ssize_t extattr_list_file( \
--	SYS_EXTATTR_LIST_LINK      = 439 // { ssize_t extattr_list_link( \
--	SYS_THR_SUSPEND            = 442 // { int thr_suspend( \
--	SYS_THR_WAKE               = 443 // { int thr_wake(long id); }
--	SYS_KLDUNLOADF             = 444 // { int kldunloadf(int fileid, int flags); }
--	SYS_AUDIT                  = 445 // { int audit(const void *record, \
--	SYS_AUDITON                = 446 // { int auditon(int cmd, void *data, \
--	SYS_GETAUID                = 447 // { int getauid(uid_t *auid); }
--	SYS_SETAUID                = 448 // { int setauid(uid_t *auid); }
--	SYS_GETAUDIT               = 449 // { int getaudit(struct auditinfo *auditinfo); }
--	SYS_SETAUDIT               = 450 // { int setaudit(struct auditinfo *auditinfo); }
--	SYS_GETAUDIT_ADDR          = 451 // { int getaudit_addr( \
--	SYS_SETAUDIT_ADDR          = 452 // { int setaudit_addr( \
--	SYS_AUDITCTL               = 453 // { int auditctl(char *path); }
--	SYS__UMTX_OP               = 454 // { int _umtx_op(void *obj, int op, \
--	SYS_THR_NEW                = 455 // { int thr_new(struct thr_param *param, \
--	SYS_SIGQUEUE               = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
--	SYS_ABORT2                 = 463 // { int abort2(const char *why, int nargs, void **args); }
--	SYS_THR_SET_NAME           = 464 // { int thr_set_name(long id, const char *name); }
--	SYS_RTPRIO_THREAD          = 466 // { int rtprio_thread(int function, \
--	SYS_PREAD                  = 475 // { ssize_t pread(int fd, void *buf, \
--	SYS_PWRITE                 = 476 // { ssize_t pwrite(int fd, const void *buf, \
--	SYS_MMAP                   = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
--	SYS_LSEEK                  = 478 // { off_t lseek(int fd, off_t offset, \
--	SYS_TRUNCATE               = 479 // { int truncate(char *path, off_t length); }
--	SYS_FTRUNCATE              = 480 // { int ftruncate(int fd, off_t length); }
--	SYS_THR_KILL2              = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
--	SYS_SHM_OPEN               = 482 // { int shm_open(const char *path, int flags, \
--	SYS_SHM_UNLINK             = 483 // { int shm_unlink(const char *path); }
--	SYS_CPUSET                 = 484 // { int cpuset(cpusetid_t *setid); }
--	SYS_CPUSET_SETID           = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
--	SYS_CPUSET_GETID           = 486 // { int cpuset_getid(cpulevel_t level, \
--	SYS_CPUSET_GETAFFINITY     = 487 // { int cpuset_getaffinity(cpulevel_t level, \
--	SYS_CPUSET_SETAFFINITY     = 488 // { int cpuset_setaffinity(cpulevel_t level, \
--	SYS_FACCESSAT              = 489 // { int faccessat(int fd, char *path, int amode, \
--	SYS_FCHMODAT               = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
--	SYS_FCHOWNAT               = 491 // { int fchownat(int fd, char *path, uid_t uid, \
--	SYS_FEXECVE                = 492 // { int fexecve(int fd, char **argv, \
--	SYS_FSTATAT                = 493 // { int fstatat(int fd, char *path, \
--	SYS_FUTIMESAT              = 494 // { int futimesat(int fd, char *path, \
--	SYS_LINKAT                 = 495 // { int linkat(int fd1, char *path1, int fd2, \
--	SYS_MKDIRAT                = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
--	SYS_MKFIFOAT               = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
--	SYS_MKNODAT                = 498 // { int mknodat(int fd, char *path, mode_t mode, \
--	SYS_OPENAT                 = 499 // { int openat(int fd, char *path, int flag, \
--	SYS_READLINKAT             = 500 // { int readlinkat(int fd, char *path, char *buf, \
--	SYS_RENAMEAT               = 501 // { int renameat(int oldfd, char *old, int newfd, \
--	SYS_SYMLINKAT              = 502 // { int symlinkat(char *path1, int fd, \
--	SYS_UNLINKAT               = 503 // { int unlinkat(int fd, char *path, int flag); }
--	SYS_POSIX_OPENPT           = 504 // { int posix_openpt(int flags); }
--	SYS_JAIL_GET               = 506 // { int jail_get(struct iovec *iovp, \
--	SYS_JAIL_SET               = 507 // { int jail_set(struct iovec *iovp, \
--	SYS_JAIL_REMOVE            = 508 // { int jail_remove(int jid); }
--	SYS_CLOSEFROM              = 509 // { int closefrom(int lowfd); }
--	SYS_LPATHCONF              = 513 // { int lpathconf(char *path, int name); }
--	SYS___CAP_RIGHTS_GET       = 515 // { int __cap_rights_get(int version, \
--	SYS_CAP_ENTER              = 516 // { int cap_enter(void); }
--	SYS_CAP_GETMODE            = 517 // { int cap_getmode(u_int *modep); }
--	SYS_PDFORK                 = 518 // { int pdfork(int *fdp, int flags); }
--	SYS_PDKILL                 = 519 // { int pdkill(int fd, int signum); }
--	SYS_PDGETPID               = 520 // { int pdgetpid(int fd, pid_t *pidp); }
--	SYS_PSELECT                = 522 // { int pselect(int nd, fd_set *in, \
--	SYS_GETLOGINCLASS          = 523 // { int getloginclass(char *namebuf, \
--	SYS_SETLOGINCLASS          = 524 // { int setloginclass(const char *namebuf); }
--	SYS_RCTL_GET_RACCT         = 525 // { int rctl_get_racct(const void *inbufp, \
--	SYS_RCTL_GET_RULES         = 526 // { int rctl_get_rules(const void *inbufp, \
--	SYS_RCTL_GET_LIMITS        = 527 // { int rctl_get_limits(const void *inbufp, \
--	SYS_RCTL_ADD_RULE          = 528 // { int rctl_add_rule(const void *inbufp, \
--	SYS_RCTL_REMOVE_RULE       = 529 // { int rctl_remove_rule(const void *inbufp, \
--	SYS_POSIX_FALLOCATE        = 530 // { int posix_fallocate(int fd, \
--	SYS_POSIX_FADVISE          = 531 // { int posix_fadvise(int fd, off_t offset, \
--	SYS_WAIT6                  = 532 // { int wait6(idtype_t idtype, id_t id, \
--	SYS_CAP_RIGHTS_LIMIT       = 533 // { int cap_rights_limit(int fd, \
--	SYS_CAP_IOCTLS_LIMIT       = 534 // { int cap_ioctls_limit(int fd, \
--	SYS_CAP_IOCTLS_GET         = 535 // { ssize_t cap_ioctls_get(int fd, \
--	SYS_CAP_FCNTLS_LIMIT       = 536 // { int cap_fcntls_limit(int fd, \
--	SYS_CAP_FCNTLS_GET         = 537 // { int cap_fcntls_get(int fd, \
--	SYS_BINDAT                 = 538 // { int bindat(int fd, int s, caddr_t name, \
--	SYS_CONNECTAT              = 539 // { int connectat(int fd, int s, caddr_t name, \
--	SYS_CHFLAGSAT              = 540 // { int chflagsat(int fd, const char *path, \
--	SYS_ACCEPT4                = 541 // { int accept4(int s, \
--	SYS_PIPE2                  = 542 // { int pipe2(int *fildes, int flags); }
--	SYS_PROCCTL                = 544 // { int procctl(idtype_t idtype, id_t id, \
--	SYS_PPOLL                  = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
--	SYS_FUTIMENS               = 546 // { int futimens(int fd, \
--	SYS_UTIMENSAT              = 547 // { int utimensat(int fd, \
-+	SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void
-+	SYS_FORK                     = 2   // { int fork(void); }
-+	SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+	SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
-+	SYS_CLOSE                    = 6   // { int close(int fd); }
-+	SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+	SYS_LINK                     = 9   // { int link(char *path, char *link); }
-+	SYS_UNLINK                   = 10  // { int unlink(char *path); }
-+	SYS_CHDIR                    = 12  // { int chdir(char *path); }
-+	SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
-+	SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
-+	SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
-+	SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
-+	SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break obreak_args int
-+	SYS_GETPID                   = 20  // { pid_t getpid(void); }
-+	SYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
-+	SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
-+	SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
-+	SYS_GETUID                   = 24  // { uid_t getuid(void); }
-+	SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
-+	SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+	SYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+	SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
-+	SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
-+	SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
-+	SYS_SYNC                     = 36  // { int sync(void); }
-+	SYS_KILL                     = 37  // { int kill(int pid, int signum); }
-+	SYS_GETPPID                  = 39  // { pid_t getppid(void); }
-+	SYS_DUP                      = 41  // { int dup(u_int fd); }
-+	SYS_PIPE                     = 42  // { int pipe(void); }
-+	SYS_GETEGID                  = 43  // { gid_t getegid(void); }
-+	SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+	SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+	SYS_GETGID                   = 47  // { gid_t getgid(void); }
-+	SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }
-+	SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
-+	SYS_ACCT                     = 51  // { int acct(char *path); }
-+	SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+	SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
-+	SYS_REBOOT                   = 55  // { int reboot(int opt); }
-+	SYS_REVOKE                   = 56  // { int revoke(char *path); }
-+	SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
-+	SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }
-+	SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }
-+	SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args int
-+	SYS_CHROOT                   = 61  // { int chroot(char *path); }
-+	SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }
-+	SYS_VFORK                    = 66  // { int vfork(void); }
-+	SYS_SBRK                     = 69  // { int sbrk(int incr); }
-+	SYS_SSTK                     = 70  // { int sstk(int incr); }
-+	SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int
-+	SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
-+	SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, int prot); }
-+	SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }
-+	SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_GETPGRP                  = 81  // { int getpgrp(void); }
-+	SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
-+	SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_SWAPON                   = 85  // { int swapon(char *name); }
-+	SYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }
-+	SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
-+	SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
-+	SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
-+	SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_FSYNC                    = 95  // { int fsync(int fd); }
-+	SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }
-+	SYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }
-+	SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }
-+	SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
-+	SYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }
-+	SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+	SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
-+	SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }
-+	SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+	SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+	SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
-+	SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
-+	SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
-+	SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
-+	SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
-+	SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
-+	SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
-+	SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+	SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
-+	SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+	SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
-+	SYS_RMDIR                    = 137 // { int rmdir(char *path); }
-+	SYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }
-+	SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+	SYS_SETSID                   = 147 // { int setsid(void); }
-+	SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+	SYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+	SYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }
-+	SYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+	SYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+	SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
-+	SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+	SYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+	SYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+	SYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+	SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
-+	SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
-+	SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
-+	SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
-+	SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
-+	SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
-+	SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
-+	SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
-+	SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
-+	SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
-+	SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+	SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+	SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+	SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+	SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
-+	SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
-+	SYS_UNDELETE                 = 205 // { int undelete(char *path); }
-+	SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
-+	SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
-+	SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }
-+	SYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }
-+	SYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+	SYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }
-+	SYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+	SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME            = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+	SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+	SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
-+	SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+	SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+	SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
-+	SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+	SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+	SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+	SYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+	SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+	SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+	SYS_RFORK                    = 251 // { int rfork(int flags); }
-+	SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_ISSETUGID                = 253 // { int issetugid(void); }
-+	SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
-+	SYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }
-+	SYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }
-+	SYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+	SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }
-+	SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
-+	SYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+	SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
-+	SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
-+	SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
-+	SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+	SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+	SYS_MODNEXT                  = 300 // { int modnext(int modid); }
-+	SYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat *stat); }
-+	SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
-+	SYS_MODFIND                  = 303 // { int modfind(const char *name); }
-+	SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
-+	SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
-+	SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
-+	SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
-+	SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+	SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
-+	SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
-+	SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+	SYS_AIO_SUSPEND              = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+	SYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+	SYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }
-+	SYS_YIELD                    = 321 // { int yield(void); }
-+	SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
-+	SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
-+	SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
-+	SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+	SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+	SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+	SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
-+	SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
-+	SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
-+	SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
-+	SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+	SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
-+	SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+	SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
-+	SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+	SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+	SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
-+	SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+	SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+	SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+	SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+	SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+	SYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+	SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_KQUEUE                   = 362 // { int kqueue(void); }
-+	SYS_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+	SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+	SYS___SETUGID                = 374 // { int __setugid(int flag); }
-+	SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
-+	SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+	SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+	SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+	SYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+	SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }
-+	SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }
-+	SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+	SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+	SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+	SYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }
-+	SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+	SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+	SYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }
-+	SYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }
-+	SYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }
-+	SYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }
-+	SYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+	SYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+	SYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }
-+	SYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+	SYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }
-+	SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+	SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+	SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+	SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+	SYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+	SYS_SIGRETURN                = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+	SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
-+	SYS_SETCONTEXT               = 422 // { int setcontext( const struct __ucontext *ucp); }
-+	SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+	SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
-+	SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+	SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+	SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
-+	SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
-+	SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
-+	SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
-+	SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+	SYS_THR_SUSPEND              = 442 // { int thr_suspend( const struct timespec *timeout); }
-+	SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
-+	SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
-+	SYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }
-+	SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }
-+	SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
-+	SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
-+	SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+	SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+	SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
-+	SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+	SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+	SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+	SYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+	SYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,		const struct mq_attr *attr,		struct mq_attr *oattr); }
-+	SYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,	char *msg_ptr, size_t msg_len,	unsigned *msg_prio,			const struct timespec *abs_timeout); }
-+	SYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,		const char *msg_ptr, size_t msg_len,unsigned msg_prio,			const struct timespec *abs_timeout);}
-+	SYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,		const struct sigevent *sigev); }
-+	SYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }
-+	SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
-+	SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
-+	SYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+	SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+	SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+	SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+	SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+	SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+	SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+	SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+	SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
-+	SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
-+	SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+	SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+	SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
-+	SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
-+	SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+	SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+	SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+	SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+	SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+	SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+	SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+	SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+	SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+	SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+	SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+	SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+	SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+	SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+	SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+	SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
-+	SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
-+	SYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }
-+	SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
-+	SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
-+	SYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+	SYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
-+	SYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
-+	SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
-+	SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
-+	SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
-+	SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+	SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+	SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+	SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
-+	SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+	SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+	SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+	SYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+	SYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+	SYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+	SYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+	SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+	SYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+	SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
-+	SYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+	SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+	SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+	SYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }
-+	SYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+	SYS_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+	SYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+	SYS_FDATASYNC                = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-index 44883141..4a6dfd4a 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,freebsd
-@@ -7,347 +7,390 @@ package unix
- 
- const (
- 	// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
--	SYS_EXIT                   = 1   // { void sys_exit(int rval); } exit \
--	SYS_FORK                   = 2   // { int fork(void); }
--	SYS_READ                   = 3   // { ssize_t read(int fd, void *buf, \
--	SYS_WRITE                  = 4   // { ssize_t write(int fd, const void *buf, \
--	SYS_OPEN                   = 5   // { int open(char *path, int flags, int mode); }
--	SYS_CLOSE                  = 6   // { int close(int fd); }
--	SYS_WAIT4                  = 7   // { int wait4(int pid, int *status, \
--	SYS_LINK                   = 9   // { int link(char *path, char *link); }
--	SYS_UNLINK                 = 10  // { int unlink(char *path); }
--	SYS_CHDIR                  = 12  // { int chdir(char *path); }
--	SYS_FCHDIR                 = 13  // { int fchdir(int fd); }
--	SYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }
--	SYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }
--	SYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }
--	SYS_OBREAK                 = 17  // { int obreak(char *nsize); } break \
--	SYS_GETPID                 = 20  // { pid_t getpid(void); }
--	SYS_MOUNT                  = 21  // { int mount(char *type, char *path, \
--	SYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }
--	SYS_SETUID                 = 23  // { int setuid(uid_t uid); }
--	SYS_GETUID                 = 24  // { uid_t getuid(void); }
--	SYS_GETEUID                = 25  // { uid_t geteuid(void); }
--	SYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, \
--	SYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG                = 28  // { int sendmsg(int s, struct msghdr *msg, \
--	SYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, \
--	SYS_ACCEPT                 = 30  // { int accept(int s, \
--	SYS_GETPEERNAME            = 31  // { int getpeername(int fdes, \
--	SYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, \
--	SYS_ACCESS                 = 33  // { int access(char *path, int amode); }
--	SYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }
--	SYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }
--	SYS_SYNC                   = 36  // { int sync(void); }
--	SYS_KILL                   = 37  // { int kill(int pid, int signum); }
--	SYS_GETPPID                = 39  // { pid_t getppid(void); }
--	SYS_DUP                    = 41  // { int dup(u_int fd); }
--	SYS_PIPE                   = 42  // { int pipe(void); }
--	SYS_GETEGID                = 43  // { gid_t getegid(void); }
--	SYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, \
--	SYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, \
--	SYS_GETGID                 = 47  // { gid_t getgid(void); }
--	SYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, u_int \
--	SYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }
--	SYS_ACCT                   = 51  // { int acct(char *path); }
--	SYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, \
--	SYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, \
--	SYS_REBOOT                 = 55  // { int reboot(int opt); }
--	SYS_REVOKE                 = 56  // { int revoke(char *path); }
--	SYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }
--	SYS_READLINK               = 58  // { ssize_t readlink(char *path, char *buf, \
--	SYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, \
--	SYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args \
--	SYS_CHROOT                 = 61  // { int chroot(char *path); }
--	SYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, \
--	SYS_VFORK                  = 66  // { int vfork(void); }
--	SYS_SBRK                   = 69  // { int sbrk(int incr); }
--	SYS_SSTK                   = 70  // { int sstk(int incr); }
--	SYS_OVADVISE               = 72  // { int ovadvise(int anom); } vadvise \
--	SYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }
--	SYS_MPROTECT               = 74  // { int mprotect(const void *addr, size_t len, \
--	SYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, \
--	SYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, \
--	SYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, \
--	SYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, \
--	SYS_GETPGRP                = 81  // { int getpgrp(void); }
--	SYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }
--	SYS_SETITIMER              = 83  // { int setitimer(u_int which, struct \
--	SYS_SWAPON                 = 85  // { int swapon(char *name); }
--	SYS_GETITIMER              = 86  // { int getitimer(u_int which, \
--	SYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }
--	SYS_DUP2                   = 90  // { int dup2(u_int from, u_int to); }
--	SYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }
--	SYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
--	SYS_FSYNC                  = 95  // { int fsync(int fd); }
--	SYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, \
--	SYS_SOCKET                 = 97  // { int socket(int domain, int type, \
--	SYS_CONNECT                = 98  // { int connect(int s, caddr_t name, \
--	SYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }
--	SYS_BIND                   = 104 // { int bind(int s, caddr_t name, \
--	SYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, \
--	SYS_LISTEN                 = 106 // { int listen(int s, int backlog); }
--	SYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, \
--	SYS_GETRUSAGE              = 117 // { int getrusage(int who, \
--	SYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, \
--	SYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, \
--	SYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, \
--	SYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, \
--	SYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }
--	SYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }
--	SYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }
--	SYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }
--	SYS_RENAME                 = 128 // { int rename(char *from, char *to); }
--	SYS_FLOCK                  = 131 // { int flock(int fd, int how); }
--	SYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }
--	SYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, \
--	SYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }
--	SYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, \
--	SYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }
--	SYS_RMDIR                  = 137 // { int rmdir(char *path); }
--	SYS_UTIMES                 = 138 // { int utimes(char *path, \
--	SYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, \
--	SYS_SETSID                 = 147 // { int setsid(void); }
--	SYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, \
--	SYS_LGETFH                 = 160 // { int lgetfh(char *fname, \
--	SYS_GETFH                  = 161 // { int getfh(char *fname, \
--	SYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }
--	SYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, \
--	SYS_FREEBSD6_PREAD         = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
--	SYS_FREEBSD6_PWRITE        = 174 // { ssize_t freebsd6_pwrite(int fd, \
--	SYS_SETFIB                 = 175 // { int setfib(int fibnum); }
--	SYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }
--	SYS_SETGID                 = 181 // { int setgid(gid_t gid); }
--	SYS_SETEGID                = 182 // { int setegid(gid_t egid); }
--	SYS_SETEUID                = 183 // { int seteuid(uid_t euid); }
--	SYS_STAT                   = 188 // { int stat(char *path, struct stat *ub); }
--	SYS_FSTAT                  = 189 // { int fstat(int fd, struct stat *sb); }
--	SYS_LSTAT                  = 190 // { int lstat(char *path, struct stat *ub); }
--	SYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }
--	SYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }
--	SYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, \
--	SYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, \
--	SYS_GETDIRENTRIES          = 196 // { int getdirentries(int fd, char *buf, \
--	SYS_FREEBSD6_MMAP          = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
--	SYS_FREEBSD6_LSEEK         = 199 // { off_t freebsd6_lseek(int fd, int pad, \
--	SYS_FREEBSD6_TRUNCATE      = 200 // { int freebsd6_truncate(char *path, int pad, \
--	SYS_FREEBSD6_FTRUNCATE     = 201 // { int freebsd6_ftruncate(int fd, int pad, \
--	SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, \
--	SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
--	SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
--	SYS_UNDELETE               = 205 // { int undelete(char *path); }
--	SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
--	SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
--	SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
--	SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME          = 233 // { int clock_settime( \
--	SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
--	SYS_KTIMER_CREATE          = 235 // { int ktimer_create(clockid_t clock_id, \
--	SYS_KTIMER_DELETE          = 236 // { int ktimer_delete(int timerid); }
--	SYS_KTIMER_SETTIME         = 237 // { int ktimer_settime(int timerid, int flags, \
--	SYS_KTIMER_GETTIME         = 238 // { int ktimer_gettime(int timerid, struct \
--	SYS_KTIMER_GETOVERRUN      = 239 // { int ktimer_getoverrun(int timerid); }
--	SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
--	SYS_FFCLOCK_GETCOUNTER     = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
--	SYS_FFCLOCK_SETESTIMATE    = 242 // { int ffclock_setestimate( \
--	SYS_FFCLOCK_GETESTIMATE    = 243 // { int ffclock_getestimate( \
--	SYS_CLOCK_GETCPUCLOCKID2   = 247 // { int clock_getcpuclockid2(id_t id,\
--	SYS_NTP_GETTIME            = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
--	SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, \
--	SYS_RFORK                  = 251 // { int rfork(int flags); }
--	SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, \
--	SYS_ISSETUGID              = 253 // { int issetugid(void); }
--	SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
--	SYS_GETDENTS               = 272 // { int getdents(int fd, char *buf, \
--	SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
--	SYS_LUTIMES                = 276 // { int lutimes(char *path, \
--	SYS_NSTAT                  = 278 // { int nstat(char *path, struct nstat *ub); }
--	SYS_NFSTAT                 = 279 // { int nfstat(int fd, struct nstat *sb); }
--	SYS_NLSTAT                 = 280 // { int nlstat(char *path, struct nstat *ub); }
--	SYS_PREADV                 = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
--	SYS_PWRITEV                = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
--	SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, \
--	SYS_FHSTAT                 = 299 // { int fhstat(const struct fhandle *u_fhp, \
--	SYS_MODNEXT                = 300 // { int modnext(int modid); }
--	SYS_MODSTAT                = 301 // { int modstat(int modid, \
--	SYS_MODFNEXT               = 302 // { int modfnext(int modid); }
--	SYS_MODFIND                = 303 // { int modfind(const char *name); }
--	SYS_KLDLOAD                = 304 // { int kldload(const char *file); }
--	SYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }
--	SYS_KLDFIND                = 306 // { int kldfind(const char *file); }
--	SYS_KLDNEXT                = 307 // { int kldnext(int fileid); }
--	SYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct \
--	SYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }
--	SYS_GETSID                 = 310 // { int getsid(pid_t pid); }
--	SYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, \
--	SYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, \
--	SYS_YIELD                  = 321 // { int yield(void); }
--	SYS_MLOCKALL               = 324 // { int mlockall(int how); }
--	SYS_MUNLOCKALL             = 325 // { int munlockall(void); }
--	SYS___GETCWD               = 326 // { int __getcwd(char *buf, u_int buflen); }
--	SYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, \
--	SYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct \
--	SYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int \
--	SYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }
--	SYS_SCHED_YIELD            = 331 // { int sched_yield (void); }
--	SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
--	SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
--	SYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, \
--	SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
--	SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, \
--	SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
--	SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, \
--	SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
--	SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
--	SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set, \
--	SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set, \
--	SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
--	SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
--	SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, \
--	SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, \
--	SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
--	SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, \
--	SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
--	SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, \
--	SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
--	SYS_EXTATTR_SET_FILE       = 356 // { ssize_t extattr_set_file( \
--	SYS_EXTATTR_GET_FILE       = 357 // { ssize_t extattr_get_file( \
--	SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
--	SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_KQUEUE                 = 362 // { int kqueue(void); }
--	SYS_KEVENT                 = 363 // { int kevent(int fd, \
--	SYS_EXTATTR_SET_FD         = 371 // { ssize_t extattr_set_fd(int fd, \
--	SYS_EXTATTR_GET_FD         = 372 // { ssize_t extattr_get_fd(int fd, \
--	SYS_EXTATTR_DELETE_FD      = 373 // { int extattr_delete_fd(int fd, \
--	SYS___SETUGID              = 374 // { int __setugid(int flag); }
--	SYS_EACCESS                = 376 // { int eaccess(char *path, int amode); }
--	SYS_NMOUNT                 = 378 // { int nmount(struct iovec *iovp, \
--	SYS___MAC_GET_PROC         = 384 // { int __mac_get_proc(struct mac *mac_p); }
--	SYS___MAC_SET_PROC         = 385 // { int __mac_set_proc(struct mac *mac_p); }
--	SYS___MAC_GET_FD           = 386 // { int __mac_get_fd(int fd, \
--	SYS___MAC_GET_FILE         = 387 // { int __mac_get_file(const char *path_p, \
--	SYS___MAC_SET_FD           = 388 // { int __mac_set_fd(int fd, \
--	SYS___MAC_SET_FILE         = 389 // { int __mac_set_file(const char *path_p, \
--	SYS_KENV                   = 390 // { int kenv(int what, const char *name, \
--	SYS_LCHFLAGS               = 391 // { int lchflags(const char *path, \
--	SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, \
--	SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, \
--	SYS_MAC_SYSCALL            = 394 // { int mac_syscall(const char *policy, \
--	SYS_GETFSSTAT              = 395 // { int getfsstat(struct statfs *buf, \
--	SYS_STATFS                 = 396 // { int statfs(char *path, \
--	SYS_FSTATFS                = 397 // { int fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS               = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
--	SYS___MAC_GET_PID          = 409 // { int __mac_get_pid(pid_t pid, \
--	SYS___MAC_GET_LINK         = 410 // { int __mac_get_link(const char *path_p, \
--	SYS___MAC_SET_LINK         = 411 // { int __mac_set_link(const char *path_p, \
--	SYS_EXTATTR_SET_LINK       = 412 // { ssize_t extattr_set_link( \
--	SYS_EXTATTR_GET_LINK       = 413 // { ssize_t extattr_get_link( \
--	SYS_EXTATTR_DELETE_LINK    = 414 // { int extattr_delete_link( \
--	SYS___MAC_EXECVE           = 415 // { int __mac_execve(char *fname, char **argv, \
--	SYS_SIGACTION              = 416 // { int sigaction(int sig, \
--	SYS_SIGRETURN              = 417 // { int sigreturn( \
--	SYS_GETCONTEXT             = 421 // { int getcontext(struct __ucontext *ucp); }
--	SYS_SETCONTEXT             = 422 // { int setcontext( \
--	SYS_SWAPCONTEXT            = 423 // { int swapcontext(struct __ucontext *oucp, \
--	SYS_SWAPOFF                = 424 // { int swapoff(const char *name); }
--	SYS___ACL_GET_LINK         = 425 // { int __acl_get_link(const char *path, \
--	SYS___ACL_SET_LINK         = 426 // { int __acl_set_link(const char *path, \
--	SYS___ACL_DELETE_LINK      = 427 // { int __acl_delete_link(const char *path, \
--	SYS___ACL_ACLCHECK_LINK    = 428 // { int __acl_aclcheck_link(const char *path, \
--	SYS_SIGWAIT                = 429 // { int sigwait(const sigset_t *set, \
--	SYS_THR_CREATE             = 430 // { int thr_create(ucontext_t *ctx, long *id, \
--	SYS_THR_EXIT               = 431 // { void thr_exit(long *state); }
--	SYS_THR_SELF               = 432 // { int thr_self(long *id); }
--	SYS_THR_KILL               = 433 // { int thr_kill(long id, int sig); }
--	SYS__UMTX_LOCK             = 434 // { int _umtx_lock(struct umtx *umtx); }
--	SYS__UMTX_UNLOCK           = 435 // { int _umtx_unlock(struct umtx *umtx); }
--	SYS_JAIL_ATTACH            = 436 // { int jail_attach(int jid); }
--	SYS_EXTATTR_LIST_FD        = 437 // { ssize_t extattr_list_fd(int fd, \
--	SYS_EXTATTR_LIST_FILE      = 438 // { ssize_t extattr_list_file( \
--	SYS_EXTATTR_LIST_LINK      = 439 // { ssize_t extattr_list_link( \
--	SYS_THR_SUSPEND            = 442 // { int thr_suspend( \
--	SYS_THR_WAKE               = 443 // { int thr_wake(long id); }
--	SYS_KLDUNLOADF             = 444 // { int kldunloadf(int fileid, int flags); }
--	SYS_AUDIT                  = 445 // { int audit(const void *record, \
--	SYS_AUDITON                = 446 // { int auditon(int cmd, void *data, \
--	SYS_GETAUID                = 447 // { int getauid(uid_t *auid); }
--	SYS_SETAUID                = 448 // { int setauid(uid_t *auid); }
--	SYS_GETAUDIT               = 449 // { int getaudit(struct auditinfo *auditinfo); }
--	SYS_SETAUDIT               = 450 // { int setaudit(struct auditinfo *auditinfo); }
--	SYS_GETAUDIT_ADDR          = 451 // { int getaudit_addr( \
--	SYS_SETAUDIT_ADDR          = 452 // { int setaudit_addr( \
--	SYS_AUDITCTL               = 453 // { int auditctl(char *path); }
--	SYS__UMTX_OP               = 454 // { int _umtx_op(void *obj, int op, \
--	SYS_THR_NEW                = 455 // { int thr_new(struct thr_param *param, \
--	SYS_SIGQUEUE               = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
--	SYS_ABORT2                 = 463 // { int abort2(const char *why, int nargs, void **args); }
--	SYS_THR_SET_NAME           = 464 // { int thr_set_name(long id, const char *name); }
--	SYS_RTPRIO_THREAD          = 466 // { int rtprio_thread(int function, \
--	SYS_PREAD                  = 475 // { ssize_t pread(int fd, void *buf, \
--	SYS_PWRITE                 = 476 // { ssize_t pwrite(int fd, const void *buf, \
--	SYS_MMAP                   = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
--	SYS_LSEEK                  = 478 // { off_t lseek(int fd, off_t offset, \
--	SYS_TRUNCATE               = 479 // { int truncate(char *path, off_t length); }
--	SYS_FTRUNCATE              = 480 // { int ftruncate(int fd, off_t length); }
--	SYS_THR_KILL2              = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
--	SYS_SHM_OPEN               = 482 // { int shm_open(const char *path, int flags, \
--	SYS_SHM_UNLINK             = 483 // { int shm_unlink(const char *path); }
--	SYS_CPUSET                 = 484 // { int cpuset(cpusetid_t *setid); }
--	SYS_CPUSET_SETID           = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
--	SYS_CPUSET_GETID           = 486 // { int cpuset_getid(cpulevel_t level, \
--	SYS_CPUSET_GETAFFINITY     = 487 // { int cpuset_getaffinity(cpulevel_t level, \
--	SYS_CPUSET_SETAFFINITY     = 488 // { int cpuset_setaffinity(cpulevel_t level, \
--	SYS_FACCESSAT              = 489 // { int faccessat(int fd, char *path, int amode, \
--	SYS_FCHMODAT               = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
--	SYS_FCHOWNAT               = 491 // { int fchownat(int fd, char *path, uid_t uid, \
--	SYS_FEXECVE                = 492 // { int fexecve(int fd, char **argv, \
--	SYS_FSTATAT                = 493 // { int fstatat(int fd, char *path, \
--	SYS_FUTIMESAT              = 494 // { int futimesat(int fd, char *path, \
--	SYS_LINKAT                 = 495 // { int linkat(int fd1, char *path1, int fd2, \
--	SYS_MKDIRAT                = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
--	SYS_MKFIFOAT               = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
--	SYS_MKNODAT                = 498 // { int mknodat(int fd, char *path, mode_t mode, \
--	SYS_OPENAT                 = 499 // { int openat(int fd, char *path, int flag, \
--	SYS_READLINKAT             = 500 // { int readlinkat(int fd, char *path, char *buf, \
--	SYS_RENAMEAT               = 501 // { int renameat(int oldfd, char *old, int newfd, \
--	SYS_SYMLINKAT              = 502 // { int symlinkat(char *path1, int fd, \
--	SYS_UNLINKAT               = 503 // { int unlinkat(int fd, char *path, int flag); }
--	SYS_POSIX_OPENPT           = 504 // { int posix_openpt(int flags); }
--	SYS_JAIL_GET               = 506 // { int jail_get(struct iovec *iovp, \
--	SYS_JAIL_SET               = 507 // { int jail_set(struct iovec *iovp, \
--	SYS_JAIL_REMOVE            = 508 // { int jail_remove(int jid); }
--	SYS_CLOSEFROM              = 509 // { int closefrom(int lowfd); }
--	SYS_LPATHCONF              = 513 // { int lpathconf(char *path, int name); }
--	SYS___CAP_RIGHTS_GET       = 515 // { int __cap_rights_get(int version, \
--	SYS_CAP_ENTER              = 516 // { int cap_enter(void); }
--	SYS_CAP_GETMODE            = 517 // { int cap_getmode(u_int *modep); }
--	SYS_PDFORK                 = 518 // { int pdfork(int *fdp, int flags); }
--	SYS_PDKILL                 = 519 // { int pdkill(int fd, int signum); }
--	SYS_PDGETPID               = 520 // { int pdgetpid(int fd, pid_t *pidp); }
--	SYS_PSELECT                = 522 // { int pselect(int nd, fd_set *in, \
--	SYS_GETLOGINCLASS          = 523 // { int getloginclass(char *namebuf, \
--	SYS_SETLOGINCLASS          = 524 // { int setloginclass(const char *namebuf); }
--	SYS_RCTL_GET_RACCT         = 525 // { int rctl_get_racct(const void *inbufp, \
--	SYS_RCTL_GET_RULES         = 526 // { int rctl_get_rules(const void *inbufp, \
--	SYS_RCTL_GET_LIMITS        = 527 // { int rctl_get_limits(const void *inbufp, \
--	SYS_RCTL_ADD_RULE          = 528 // { int rctl_add_rule(const void *inbufp, \
--	SYS_RCTL_REMOVE_RULE       = 529 // { int rctl_remove_rule(const void *inbufp, \
--	SYS_POSIX_FALLOCATE        = 530 // { int posix_fallocate(int fd, \
--	SYS_POSIX_FADVISE          = 531 // { int posix_fadvise(int fd, off_t offset, \
--	SYS_WAIT6                  = 532 // { int wait6(idtype_t idtype, id_t id, \
--	SYS_CAP_RIGHTS_LIMIT       = 533 // { int cap_rights_limit(int fd, \
--	SYS_CAP_IOCTLS_LIMIT       = 534 // { int cap_ioctls_limit(int fd, \
--	SYS_CAP_IOCTLS_GET         = 535 // { ssize_t cap_ioctls_get(int fd, \
--	SYS_CAP_FCNTLS_LIMIT       = 536 // { int cap_fcntls_limit(int fd, \
--	SYS_CAP_FCNTLS_GET         = 537 // { int cap_fcntls_get(int fd, \
--	SYS_BINDAT                 = 538 // { int bindat(int fd, int s, caddr_t name, \
--	SYS_CONNECTAT              = 539 // { int connectat(int fd, int s, caddr_t name, \
--	SYS_CHFLAGSAT              = 540 // { int chflagsat(int fd, const char *path, \
--	SYS_ACCEPT4                = 541 // { int accept4(int s, \
--	SYS_PIPE2                  = 542 // { int pipe2(int *fildes, int flags); }
--	SYS_PROCCTL                = 544 // { int procctl(idtype_t idtype, id_t id, \
--	SYS_PPOLL                  = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
--	SYS_FUTIMENS               = 546 // { int futimens(int fd, \
--	SYS_UTIMENSAT              = 547 // { int utimensat(int fd, \
-+	SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void
-+	SYS_FORK                     = 2   // { int fork(void); }
-+	SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+	SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
-+	SYS_CLOSE                    = 6   // { int close(int fd); }
-+	SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+	SYS_LINK                     = 9   // { int link(char *path, char *link); }
-+	SYS_UNLINK                   = 10  // { int unlink(char *path); }
-+	SYS_CHDIR                    = 12  // { int chdir(char *path); }
-+	SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
-+	SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
-+	SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
-+	SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
-+	SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break obreak_args int
-+	SYS_GETPID                   = 20  // { pid_t getpid(void); }
-+	SYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
-+	SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
-+	SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
-+	SYS_GETUID                   = 24  // { uid_t getuid(void); }
-+	SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
-+	SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+	SYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+	SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
-+	SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
-+	SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
-+	SYS_SYNC                     = 36  // { int sync(void); }
-+	SYS_KILL                     = 37  // { int kill(int pid, int signum); }
-+	SYS_GETPPID                  = 39  // { pid_t getppid(void); }
-+	SYS_DUP                      = 41  // { int dup(u_int fd); }
-+	SYS_PIPE                     = 42  // { int pipe(void); }
-+	SYS_GETEGID                  = 43  // { gid_t getegid(void); }
-+	SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+	SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+	SYS_GETGID                   = 47  // { gid_t getgid(void); }
-+	SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }
-+	SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
-+	SYS_ACCT                     = 51  // { int acct(char *path); }
-+	SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+	SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
-+	SYS_REBOOT                   = 55  // { int reboot(int opt); }
-+	SYS_REVOKE                   = 56  // { int revoke(char *path); }
-+	SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
-+	SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }
-+	SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }
-+	SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args int
-+	SYS_CHROOT                   = 61  // { int chroot(char *path); }
-+	SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }
-+	SYS_VFORK                    = 66  // { int vfork(void); }
-+	SYS_SBRK                     = 69  // { int sbrk(int incr); }
-+	SYS_SSTK                     = 70  // { int sstk(int incr); }
-+	SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int
-+	SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
-+	SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, int prot); }
-+	SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }
-+	SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_GETPGRP                  = 81  // { int getpgrp(void); }
-+	SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
-+	SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_SWAPON                   = 85  // { int swapon(char *name); }
-+	SYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }
-+	SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
-+	SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
-+	SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
-+	SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_FSYNC                    = 95  // { int fsync(int fd); }
-+	SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }
-+	SYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }
-+	SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }
-+	SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
-+	SYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }
-+	SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+	SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
-+	SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }
-+	SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+	SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+	SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
-+	SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
-+	SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
-+	SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
-+	SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
-+	SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
-+	SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
-+	SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+	SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
-+	SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+	SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
-+	SYS_RMDIR                    = 137 // { int rmdir(char *path); }
-+	SYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }
-+	SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+	SYS_SETSID                   = 147 // { int setsid(void); }
-+	SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+	SYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+	SYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }
-+	SYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+	SYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+	SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
-+	SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+	SYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+	SYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+	SYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+	SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
-+	SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
-+	SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
-+	SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
-+	SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
-+	SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
-+	SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
-+	SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
-+	SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
-+	SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
-+	SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+	SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+	SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+	SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+	SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
-+	SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
-+	SYS_UNDELETE                 = 205 // { int undelete(char *path); }
-+	SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
-+	SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
-+	SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }
-+	SYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }
-+	SYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+	SYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }
-+	SYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+	SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME            = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+	SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+	SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
-+	SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+	SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+	SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
-+	SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+	SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+	SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+	SYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+	SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+	SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+	SYS_RFORK                    = 251 // { int rfork(int flags); }
-+	SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_ISSETUGID                = 253 // { int issetugid(void); }
-+	SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
-+	SYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }
-+	SYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }
-+	SYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+	SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }
-+	SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
-+	SYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+	SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
-+	SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
-+	SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
-+	SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+	SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+	SYS_MODNEXT                  = 300 // { int modnext(int modid); }
-+	SYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat *stat); }
-+	SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
-+	SYS_MODFIND                  = 303 // { int modfind(const char *name); }
-+	SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
-+	SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
-+	SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
-+	SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
-+	SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+	SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
-+	SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
-+	SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+	SYS_AIO_SUSPEND              = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+	SYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+	SYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }
-+	SYS_YIELD                    = 321 // { int yield(void); }
-+	SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
-+	SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
-+	SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
-+	SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+	SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+	SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+	SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
-+	SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
-+	SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
-+	SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
-+	SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+	SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
-+	SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+	SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
-+	SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+	SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+	SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
-+	SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+	SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+	SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+	SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+	SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+	SYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+	SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_KQUEUE                   = 362 // { int kqueue(void); }
-+	SYS_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+	SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+	SYS___SETUGID                = 374 // { int __setugid(int flag); }
-+	SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
-+	SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+	SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+	SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+	SYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+	SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }
-+	SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }
-+	SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+	SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+	SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+	SYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }
-+	SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+	SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+	SYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }
-+	SYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }
-+	SYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }
-+	SYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }
-+	SYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+	SYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+	SYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }
-+	SYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+	SYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }
-+	SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+	SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+	SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+	SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+	SYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+	SYS_SIGRETURN                = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+	SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
-+	SYS_SETCONTEXT               = 422 // { int setcontext( const struct __ucontext *ucp); }
-+	SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+	SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
-+	SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+	SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+	SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
-+	SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
-+	SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
-+	SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
-+	SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+	SYS_THR_SUSPEND              = 442 // { int thr_suspend( const struct timespec *timeout); }
-+	SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
-+	SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
-+	SYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }
-+	SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }
-+	SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
-+	SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
-+	SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+	SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+	SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
-+	SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+	SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+	SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+	SYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+	SYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,		const struct mq_attr *attr,		struct mq_attr *oattr); }
-+	SYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,	char *msg_ptr, size_t msg_len,	unsigned *msg_prio,			const struct timespec *abs_timeout); }
-+	SYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,		const char *msg_ptr, size_t msg_len,unsigned msg_prio,			const struct timespec *abs_timeout);}
-+	SYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,		const struct sigevent *sigev); }
-+	SYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }
-+	SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
-+	SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
-+	SYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+	SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+	SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+	SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+	SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+	SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+	SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+	SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+	SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
-+	SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
-+	SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+	SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+	SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
-+	SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
-+	SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+	SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+	SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+	SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+	SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+	SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+	SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+	SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+	SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+	SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+	SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+	SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+	SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+	SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+	SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+	SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
-+	SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
-+	SYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }
-+	SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
-+	SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
-+	SYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+	SYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
-+	SYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
-+	SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
-+	SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
-+	SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
-+	SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+	SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+	SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+	SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
-+	SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+	SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+	SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+	SYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+	SYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+	SYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+	SYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+	SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+	SYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+	SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
-+	SYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+	SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+	SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+	SYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }
-+	SYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+	SYS_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+	SYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+	SYS_FDATASYNC                = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
-new file mode 100644
-index 00000000..3e51af8e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
-@@ -0,0 +1,396 @@
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build arm64,freebsd
-+
-+package unix
-+
-+const (
-+	// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
-+	SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void
-+	SYS_FORK                     = 2   // { int fork(void); }
-+	SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+	SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
-+	SYS_CLOSE                    = 6   // { int close(int fd); }
-+	SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+	SYS_LINK                     = 9   // { int link(char *path, char *link); }
-+	SYS_UNLINK                   = 10  // { int unlink(char *path); }
-+	SYS_CHDIR                    = 12  // { int chdir(char *path); }
-+	SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
-+	SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
-+	SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
-+	SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
-+	SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break obreak_args int
-+	SYS_GETPID                   = 20  // { pid_t getpid(void); }
-+	SYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
-+	SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
-+	SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
-+	SYS_GETUID                   = 24  // { uid_t getuid(void); }
-+	SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
-+	SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+	SYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+	SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+	SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
-+	SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
-+	SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
-+	SYS_SYNC                     = 36  // { int sync(void); }
-+	SYS_KILL                     = 37  // { int kill(int pid, int signum); }
-+	SYS_GETPPID                  = 39  // { pid_t getppid(void); }
-+	SYS_DUP                      = 41  // { int dup(u_int fd); }
-+	SYS_PIPE                     = 42  // { int pipe(void); }
-+	SYS_GETEGID                  = 43  // { gid_t getegid(void); }
-+	SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+	SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+	SYS_GETGID                   = 47  // { gid_t getgid(void); }
-+	SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }
-+	SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
-+	SYS_ACCT                     = 51  // { int acct(char *path); }
-+	SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+	SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
-+	SYS_REBOOT                   = 55  // { int reboot(int opt); }
-+	SYS_REVOKE                   = 56  // { int revoke(char *path); }
-+	SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
-+	SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }
-+	SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }
-+	SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args int
-+	SYS_CHROOT                   = 61  // { int chroot(char *path); }
-+	SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }
-+	SYS_VFORK                    = 66  // { int vfork(void); }
-+	SYS_SBRK                     = 69  // { int sbrk(int incr); }
-+	SYS_SSTK                     = 70  // { int sstk(int incr); }
-+	SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int
-+	SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
-+	SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, int prot); }
-+	SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }
-+	SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+	SYS_GETPGRP                  = 81  // { int getpgrp(void); }
-+	SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
-+	SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_SWAPON                   = 85  // { int swapon(char *name); }
-+	SYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }
-+	SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
-+	SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
-+	SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
-+	SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_FSYNC                    = 95  // { int fsync(int fd); }
-+	SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }
-+	SYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }
-+	SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }
-+	SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
-+	SYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }
-+	SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+	SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
-+	SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }
-+	SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+	SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+	SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+	SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
-+	SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
-+	SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
-+	SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
-+	SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
-+	SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
-+	SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
-+	SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+	SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
-+	SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+	SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
-+	SYS_RMDIR                    = 137 // { int rmdir(char *path); }
-+	SYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }
-+	SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+	SYS_SETSID                   = 147 // { int setsid(void); }
-+	SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+	SYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+	SYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }
-+	SYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+	SYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+	SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
-+	SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+	SYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+	SYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+	SYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+	SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
-+	SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
-+	SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
-+	SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
-+	SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
-+	SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
-+	SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
-+	SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
-+	SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
-+	SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
-+	SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+	SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+	SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+	SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+	SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
-+	SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
-+	SYS_UNDELETE                 = 205 // { int undelete(char *path); }
-+	SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
-+	SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
-+	SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }
-+	SYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }
-+	SYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV                   = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+	SYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }
-+	SYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+	SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME            = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+	SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+	SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
-+	SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+	SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+	SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
-+	SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+	SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+	SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+	SYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+	SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+	SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+	SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+	SYS_RFORK                    = 251 // { int rfork(int flags); }
-+	SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+	SYS_ISSETUGID                = 253 // { int issetugid(void); }
-+	SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
-+	SYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }
-+	SYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }
-+	SYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+	SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }
-+	SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
-+	SYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+	SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
-+	SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
-+	SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
-+	SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+	SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+	SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+	SYS_MODNEXT                  = 300 // { int modnext(int modid); }
-+	SYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat *stat); }
-+	SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
-+	SYS_MODFIND                  = 303 // { int modfind(const char *name); }
-+	SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
-+	SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
-+	SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
-+	SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
-+	SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+	SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
-+	SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
-+	SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+	SYS_AIO_SUSPEND              = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+	SYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+	SYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }
-+	SYS_YIELD                    = 321 // { int yield(void); }
-+	SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
-+	SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
-+	SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
-+	SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+	SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+	SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+	SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
-+	SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
-+	SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
-+	SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
-+	SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+	SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
-+	SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+	SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
-+	SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+	SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+	SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
-+	SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+	SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+	SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+	SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+	SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+	SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+	SYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+	SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_KQUEUE                   = 362 // { int kqueue(void); }
-+	SYS_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+	SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+	SYS___SETUGID                = 374 // { int __setugid(int flag); }
-+	SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
-+	SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+	SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+	SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+	SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+	SYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+	SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }
-+	SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }
-+	SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+	SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+	SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+	SYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }
-+	SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+	SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+	SYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }
-+	SYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }
-+	SYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }
-+	SYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }
-+	SYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+	SYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+	SYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }
-+	SYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+	SYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }
-+	SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+	SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+	SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+	SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+	SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+	SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+	SYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+	SYS_SIGRETURN                = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+	SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
-+	SYS_SETCONTEXT               = 422 // { int setcontext( const struct __ucontext *ucp); }
-+	SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+	SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
-+	SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+	SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+	SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+	SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+	SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
-+	SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
-+	SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
-+	SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
-+	SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+	SYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+	SYS_THR_SUSPEND              = 442 // { int thr_suspend( const struct timespec *timeout); }
-+	SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
-+	SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
-+	SYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }
-+	SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }
-+	SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
-+	SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
-+	SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+	SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+	SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+	SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
-+	SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+	SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+	SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+	SYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+	SYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd,		const struct mq_attr *attr,		struct mq_attr *oattr); }
-+	SYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,	char *msg_ptr, size_t msg_len,	unsigned *msg_prio,			const struct timespec *abs_timeout); }
-+	SYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,		const char *msg_ptr, size_t msg_len,unsigned msg_prio,			const struct timespec *abs_timeout);}
-+	SYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,		const struct sigevent *sigev); }
-+	SYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }
-+	SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
-+	SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
-+	SYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+	SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+	SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+	SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+	SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+	SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+	SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+	SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+	SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+	SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
-+	SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
-+	SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+	SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+	SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
-+	SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
-+	SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+	SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+	SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+	SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+	SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+	SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+	SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+	SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+	SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+	SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+	SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+	SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+	SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+	SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+	SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+	SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
-+	SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
-+	SYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }
-+	SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+	SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
-+	SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
-+	SYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+	SYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
-+	SYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
-+	SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
-+	SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
-+	SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
-+	SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+	SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+	SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+	SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
-+	SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+	SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+	SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+	SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+	SYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+	SYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+	SYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+	SYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+	SYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+	SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+	SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+	SYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+	SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
-+	SYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+	SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+	SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+	SYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }
-+	SYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+	SYS_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+	SYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+	SYS_FDATASYNC                = 550 // { int fdatasync(int fd); }
-+)
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-index cef4fed0..54559a89 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,linux
-@@ -6,383 +6,431 @@
- package unix
- 
- const (
--	SYS_RESTART_SYSCALL        = 0
--	SYS_EXIT                   = 1
--	SYS_FORK                   = 2
--	SYS_READ                   = 3
--	SYS_WRITE                  = 4
--	SYS_OPEN                   = 5
--	SYS_CLOSE                  = 6
--	SYS_WAITPID                = 7
--	SYS_CREAT                  = 8
--	SYS_LINK                   = 9
--	SYS_UNLINK                 = 10
--	SYS_EXECVE                 = 11
--	SYS_CHDIR                  = 12
--	SYS_TIME                   = 13
--	SYS_MKNOD                  = 14
--	SYS_CHMOD                  = 15
--	SYS_LCHOWN                 = 16
--	SYS_BREAK                  = 17
--	SYS_OLDSTAT                = 18
--	SYS_LSEEK                  = 19
--	SYS_GETPID                 = 20
--	SYS_MOUNT                  = 21
--	SYS_UMOUNT                 = 22
--	SYS_SETUID                 = 23
--	SYS_GETUID                 = 24
--	SYS_STIME                  = 25
--	SYS_PTRACE                 = 26
--	SYS_ALARM                  = 27
--	SYS_OLDFSTAT               = 28
--	SYS_PAUSE                  = 29
--	SYS_UTIME                  = 30
--	SYS_STTY                   = 31
--	SYS_GTTY                   = 32
--	SYS_ACCESS                 = 33
--	SYS_NICE                   = 34
--	SYS_FTIME                  = 35
--	SYS_SYNC                   = 36
--	SYS_KILL                   = 37
--	SYS_RENAME                 = 38
--	SYS_MKDIR                  = 39
--	SYS_RMDIR                  = 40
--	SYS_DUP                    = 41
--	SYS_PIPE                   = 42
--	SYS_TIMES                  = 43
--	SYS_PROF                   = 44
--	SYS_BRK                    = 45
--	SYS_SETGID                 = 46
--	SYS_GETGID                 = 47
--	SYS_SIGNAL                 = 48
--	SYS_GETEUID                = 49
--	SYS_GETEGID                = 50
--	SYS_ACCT                   = 51
--	SYS_UMOUNT2                = 52
--	SYS_LOCK                   = 53
--	SYS_IOCTL                  = 54
--	SYS_FCNTL                  = 55
--	SYS_MPX                    = 56
--	SYS_SETPGID                = 57
--	SYS_ULIMIT                 = 58
--	SYS_OLDOLDUNAME            = 59
--	SYS_UMASK                  = 60
--	SYS_CHROOT                 = 61
--	SYS_USTAT                  = 62
--	SYS_DUP2                   = 63
--	SYS_GETPPID                = 64
--	SYS_GETPGRP                = 65
--	SYS_SETSID                 = 66
--	SYS_SIGACTION              = 67
--	SYS_SGETMASK               = 68
--	SYS_SSETMASK               = 69
--	SYS_SETREUID               = 70
--	SYS_SETREGID               = 71
--	SYS_SIGSUSPEND             = 72
--	SYS_SIGPENDING             = 73
--	SYS_SETHOSTNAME            = 74
--	SYS_SETRLIMIT              = 75
--	SYS_GETRLIMIT              = 76
--	SYS_GETRUSAGE              = 77
--	SYS_GETTIMEOFDAY           = 78
--	SYS_SETTIMEOFDAY           = 79
--	SYS_GETGROUPS              = 80
--	SYS_SETGROUPS              = 81
--	SYS_SELECT                 = 82
--	SYS_SYMLINK                = 83
--	SYS_OLDLSTAT               = 84
--	SYS_READLINK               = 85
--	SYS_USELIB                 = 86
--	SYS_SWAPON                 = 87
--	SYS_REBOOT                 = 88
--	SYS_READDIR                = 89
--	SYS_MMAP                   = 90
--	SYS_MUNMAP                 = 91
--	SYS_TRUNCATE               = 92
--	SYS_FTRUNCATE              = 93
--	SYS_FCHMOD                 = 94
--	SYS_FCHOWN                 = 95
--	SYS_GETPRIORITY            = 96
--	SYS_SETPRIORITY            = 97
--	SYS_PROFIL                 = 98
--	SYS_STATFS                 = 99
--	SYS_FSTATFS                = 100
--	SYS_IOPERM                 = 101
--	SYS_SOCKETCALL             = 102
--	SYS_SYSLOG                 = 103
--	SYS_SETITIMER              = 104
--	SYS_GETITIMER              = 105
--	SYS_STAT                   = 106
--	SYS_LSTAT                  = 107
--	SYS_FSTAT                  = 108
--	SYS_OLDUNAME               = 109
--	SYS_IOPL                   = 110
--	SYS_VHANGUP                = 111
--	SYS_IDLE                   = 112
--	SYS_VM86OLD                = 113
--	SYS_WAIT4                  = 114
--	SYS_SWAPOFF                = 115
--	SYS_SYSINFO                = 116
--	SYS_IPC                    = 117
--	SYS_FSYNC                  = 118
--	SYS_SIGRETURN              = 119
--	SYS_CLONE                  = 120
--	SYS_SETDOMAINNAME          = 121
--	SYS_UNAME                  = 122
--	SYS_MODIFY_LDT             = 123
--	SYS_ADJTIMEX               = 124
--	SYS_MPROTECT               = 125
--	SYS_SIGPROCMASK            = 126
--	SYS_CREATE_MODULE          = 127
--	SYS_INIT_MODULE            = 128
--	SYS_DELETE_MODULE          = 129
--	SYS_GET_KERNEL_SYMS        = 130
--	SYS_QUOTACTL               = 131
--	SYS_GETPGID                = 132
--	SYS_FCHDIR                 = 133
--	SYS_BDFLUSH                = 134
--	SYS_SYSFS                  = 135
--	SYS_PERSONALITY            = 136
--	SYS_AFS_SYSCALL            = 137
--	SYS_SETFSUID               = 138
--	SYS_SETFSGID               = 139
--	SYS__LLSEEK                = 140
--	SYS_GETDENTS               = 141
--	SYS__NEWSELECT             = 142
--	SYS_FLOCK                  = 143
--	SYS_MSYNC                  = 144
--	SYS_READV                  = 145
--	SYS_WRITEV                 = 146
--	SYS_GETSID                 = 147
--	SYS_FDATASYNC              = 148
--	SYS__SYSCTL                = 149
--	SYS_MLOCK                  = 150
--	SYS_MUNLOCK                = 151
--	SYS_MLOCKALL               = 152
--	SYS_MUNLOCKALL             = 153
--	SYS_SCHED_SETPARAM         = 154
--	SYS_SCHED_GETPARAM         = 155
--	SYS_SCHED_SETSCHEDULER     = 156
--	SYS_SCHED_GETSCHEDULER     = 157
--	SYS_SCHED_YIELD            = 158
--	SYS_SCHED_GET_PRIORITY_MAX = 159
--	SYS_SCHED_GET_PRIORITY_MIN = 160
--	SYS_SCHED_RR_GET_INTERVAL  = 161
--	SYS_NANOSLEEP              = 162
--	SYS_MREMAP                 = 163
--	SYS_SETRESUID              = 164
--	SYS_GETRESUID              = 165
--	SYS_VM86                   = 166
--	SYS_QUERY_MODULE           = 167
--	SYS_POLL                   = 168
--	SYS_NFSSERVCTL             = 169
--	SYS_SETRESGID              = 170
--	SYS_GETRESGID              = 171
--	SYS_PRCTL                  = 172
--	SYS_RT_SIGRETURN           = 173
--	SYS_RT_SIGACTION           = 174
--	SYS_RT_SIGPROCMASK         = 175
--	SYS_RT_SIGPENDING          = 176
--	SYS_RT_SIGTIMEDWAIT        = 177
--	SYS_RT_SIGQUEUEINFO        = 178
--	SYS_RT_SIGSUSPEND          = 179
--	SYS_PREAD64                = 180
--	SYS_PWRITE64               = 181
--	SYS_CHOWN                  = 182
--	SYS_GETCWD                 = 183
--	SYS_CAPGET                 = 184
--	SYS_CAPSET                 = 185
--	SYS_SIGALTSTACK            = 186
--	SYS_SENDFILE               = 187
--	SYS_GETPMSG                = 188
--	SYS_PUTPMSG                = 189
--	SYS_VFORK                  = 190
--	SYS_UGETRLIMIT             = 191
--	SYS_MMAP2                  = 192
--	SYS_TRUNCATE64             = 193
--	SYS_FTRUNCATE64            = 194
--	SYS_STAT64                 = 195
--	SYS_LSTAT64                = 196
--	SYS_FSTAT64                = 197
--	SYS_LCHOWN32               = 198
--	SYS_GETUID32               = 199
--	SYS_GETGID32               = 200
--	SYS_GETEUID32              = 201
--	SYS_GETEGID32              = 202
--	SYS_SETREUID32             = 203
--	SYS_SETREGID32             = 204
--	SYS_GETGROUPS32            = 205
--	SYS_SETGROUPS32            = 206
--	SYS_FCHOWN32               = 207
--	SYS_SETRESUID32            = 208
--	SYS_GETRESUID32            = 209
--	SYS_SETRESGID32            = 210
--	SYS_GETRESGID32            = 211
--	SYS_CHOWN32                = 212
--	SYS_SETUID32               = 213
--	SYS_SETGID32               = 214
--	SYS_SETFSUID32             = 215
--	SYS_SETFSGID32             = 216
--	SYS_PIVOT_ROOT             = 217
--	SYS_MINCORE                = 218
--	SYS_MADVISE                = 219
--	SYS_GETDENTS64             = 220
--	SYS_FCNTL64                = 221
--	SYS_GETTID                 = 224
--	SYS_READAHEAD              = 225
--	SYS_SETXATTR               = 226
--	SYS_LSETXATTR              = 227
--	SYS_FSETXATTR              = 228
--	SYS_GETXATTR               = 229
--	SYS_LGETXATTR              = 230
--	SYS_FGETXATTR              = 231
--	SYS_LISTXATTR              = 232
--	SYS_LLISTXATTR             = 233
--	SYS_FLISTXATTR             = 234
--	SYS_REMOVEXATTR            = 235
--	SYS_LREMOVEXATTR           = 236
--	SYS_FREMOVEXATTR           = 237
--	SYS_TKILL                  = 238
--	SYS_SENDFILE64             = 239
--	SYS_FUTEX                  = 240
--	SYS_SCHED_SETAFFINITY      = 241
--	SYS_SCHED_GETAFFINITY      = 242
--	SYS_SET_THREAD_AREA        = 243
--	SYS_GET_THREAD_AREA        = 244
--	SYS_IO_SETUP               = 245
--	SYS_IO_DESTROY             = 246
--	SYS_IO_GETEVENTS           = 247
--	SYS_IO_SUBMIT              = 248
--	SYS_IO_CANCEL              = 249
--	SYS_FADVISE64              = 250
--	SYS_EXIT_GROUP             = 252
--	SYS_LOOKUP_DCOOKIE         = 253
--	SYS_EPOLL_CREATE           = 254
--	SYS_EPOLL_CTL              = 255
--	SYS_EPOLL_WAIT             = 256
--	SYS_REMAP_FILE_PAGES       = 257
--	SYS_SET_TID_ADDRESS        = 258
--	SYS_TIMER_CREATE           = 259
--	SYS_TIMER_SETTIME          = 260
--	SYS_TIMER_GETTIME          = 261
--	SYS_TIMER_GETOVERRUN       = 262
--	SYS_TIMER_DELETE           = 263
--	SYS_CLOCK_SETTIME          = 264
--	SYS_CLOCK_GETTIME          = 265
--	SYS_CLOCK_GETRES           = 266
--	SYS_CLOCK_NANOSLEEP        = 267
--	SYS_STATFS64               = 268
--	SYS_FSTATFS64              = 269
--	SYS_TGKILL                 = 270
--	SYS_UTIMES                 = 271
--	SYS_FADVISE64_64           = 272
--	SYS_VSERVER                = 273
--	SYS_MBIND                  = 274
--	SYS_GET_MEMPOLICY          = 275
--	SYS_SET_MEMPOLICY          = 276
--	SYS_MQ_OPEN                = 277
--	SYS_MQ_UNLINK              = 278
--	SYS_MQ_TIMEDSEND           = 279
--	SYS_MQ_TIMEDRECEIVE        = 280
--	SYS_MQ_NOTIFY              = 281
--	SYS_MQ_GETSETATTR          = 282
--	SYS_KEXEC_LOAD             = 283
--	SYS_WAITID                 = 284
--	SYS_ADD_KEY                = 286
--	SYS_REQUEST_KEY            = 287
--	SYS_KEYCTL                 = 288
--	SYS_IOPRIO_SET             = 289
--	SYS_IOPRIO_GET             = 290
--	SYS_INOTIFY_INIT           = 291
--	SYS_INOTIFY_ADD_WATCH      = 292
--	SYS_INOTIFY_RM_WATCH       = 293
--	SYS_MIGRATE_PAGES          = 294
--	SYS_OPENAT                 = 295
--	SYS_MKDIRAT                = 296
--	SYS_MKNODAT                = 297
--	SYS_FCHOWNAT               = 298
--	SYS_FUTIMESAT              = 299
--	SYS_FSTATAT64              = 300
--	SYS_UNLINKAT               = 301
--	SYS_RENAMEAT               = 302
--	SYS_LINKAT                 = 303
--	SYS_SYMLINKAT              = 304
--	SYS_READLINKAT             = 305
--	SYS_FCHMODAT               = 306
--	SYS_FACCESSAT              = 307
--	SYS_PSELECT6               = 308
--	SYS_PPOLL                  = 309
--	SYS_UNSHARE                = 310
--	SYS_SET_ROBUST_LIST        = 311
--	SYS_GET_ROBUST_LIST        = 312
--	SYS_SPLICE                 = 313
--	SYS_SYNC_FILE_RANGE        = 314
--	SYS_TEE                    = 315
--	SYS_VMSPLICE               = 316
--	SYS_MOVE_PAGES             = 317
--	SYS_GETCPU                 = 318
--	SYS_EPOLL_PWAIT            = 319
--	SYS_UTIMENSAT              = 320
--	SYS_SIGNALFD               = 321
--	SYS_TIMERFD_CREATE         = 322
--	SYS_EVENTFD                = 323
--	SYS_FALLOCATE              = 324
--	SYS_TIMERFD_SETTIME        = 325
--	SYS_TIMERFD_GETTIME        = 326
--	SYS_SIGNALFD4              = 327
--	SYS_EVENTFD2               = 328
--	SYS_EPOLL_CREATE1          = 329
--	SYS_DUP3                   = 330
--	SYS_PIPE2                  = 331
--	SYS_INOTIFY_INIT1          = 332
--	SYS_PREADV                 = 333
--	SYS_PWRITEV                = 334
--	SYS_RT_TGSIGQUEUEINFO      = 335
--	SYS_PERF_EVENT_OPEN        = 336
--	SYS_RECVMMSG               = 337
--	SYS_FANOTIFY_INIT          = 338
--	SYS_FANOTIFY_MARK          = 339
--	SYS_PRLIMIT64              = 340
--	SYS_NAME_TO_HANDLE_AT      = 341
--	SYS_OPEN_BY_HANDLE_AT      = 342
--	SYS_CLOCK_ADJTIME          = 343
--	SYS_SYNCFS                 = 344
--	SYS_SENDMMSG               = 345
--	SYS_SETNS                  = 346
--	SYS_PROCESS_VM_READV       = 347
--	SYS_PROCESS_VM_WRITEV      = 348
--	SYS_KCMP                   = 349
--	SYS_FINIT_MODULE           = 350
--	SYS_SCHED_SETATTR          = 351
--	SYS_SCHED_GETATTR          = 352
--	SYS_RENAMEAT2              = 353
--	SYS_SECCOMP                = 354
--	SYS_GETRANDOM              = 355
--	SYS_MEMFD_CREATE           = 356
--	SYS_BPF                    = 357
--	SYS_EXECVEAT               = 358
--	SYS_SOCKET                 = 359
--	SYS_SOCKETPAIR             = 360
--	SYS_BIND                   = 361
--	SYS_CONNECT                = 362
--	SYS_LISTEN                 = 363
--	SYS_ACCEPT4                = 364
--	SYS_GETSOCKOPT             = 365
--	SYS_SETSOCKOPT             = 366
--	SYS_GETSOCKNAME            = 367
--	SYS_GETPEERNAME            = 368
--	SYS_SENDTO                 = 369
--	SYS_SENDMSG                = 370
--	SYS_RECVFROM               = 371
--	SYS_RECVMSG                = 372
--	SYS_SHUTDOWN               = 373
--	SYS_USERFAULTFD            = 374
--	SYS_MEMBARRIER             = 375
--	SYS_MLOCK2                 = 376
--	SYS_COPY_FILE_RANGE        = 377
--	SYS_PREADV2                = 378
--	SYS_PWRITEV2               = 379
--	SYS_PKEY_MPROTECT          = 380
--	SYS_PKEY_ALLOC             = 381
--	SYS_PKEY_FREE              = 382
-+	SYS_RESTART_SYSCALL              = 0
-+	SYS_EXIT                         = 1
-+	SYS_FORK                         = 2
-+	SYS_READ                         = 3
-+	SYS_WRITE                        = 4
-+	SYS_OPEN                         = 5
-+	SYS_CLOSE                        = 6
-+	SYS_WAITPID                      = 7
-+	SYS_CREAT                        = 8
-+	SYS_LINK                         = 9
-+	SYS_UNLINK                       = 10
-+	SYS_EXECVE                       = 11
-+	SYS_CHDIR                        = 12
-+	SYS_TIME                         = 13
-+	SYS_MKNOD                        = 14
-+	SYS_CHMOD                        = 15
-+	SYS_LCHOWN                       = 16
-+	SYS_BREAK                        = 17
-+	SYS_OLDSTAT                      = 18
-+	SYS_LSEEK                        = 19
-+	SYS_GETPID                       = 20
-+	SYS_MOUNT                        = 21
-+	SYS_UMOUNT                       = 22
-+	SYS_SETUID                       = 23
-+	SYS_GETUID                       = 24
-+	SYS_STIME                        = 25
-+	SYS_PTRACE                       = 26
-+	SYS_ALARM                        = 27
-+	SYS_OLDFSTAT                     = 28
-+	SYS_PAUSE                        = 29
-+	SYS_UTIME                        = 30
-+	SYS_STTY                         = 31
-+	SYS_GTTY                         = 32
-+	SYS_ACCESS                       = 33
-+	SYS_NICE                         = 34
-+	SYS_FTIME                        = 35
-+	SYS_SYNC                         = 36
-+	SYS_KILL                         = 37
-+	SYS_RENAME                       = 38
-+	SYS_MKDIR                        = 39
-+	SYS_RMDIR                        = 40
-+	SYS_DUP                          = 41
-+	SYS_PIPE                         = 42
-+	SYS_TIMES                        = 43
-+	SYS_PROF                         = 44
-+	SYS_BRK                          = 45
-+	SYS_SETGID                       = 46
-+	SYS_GETGID                       = 47
-+	SYS_SIGNAL                       = 48
-+	SYS_GETEUID                      = 49
-+	SYS_GETEGID                      = 50
-+	SYS_ACCT                         = 51
-+	SYS_UMOUNT2                      = 52
-+	SYS_LOCK                         = 53
-+	SYS_IOCTL                        = 54
-+	SYS_FCNTL                        = 55
-+	SYS_MPX                          = 56
-+	SYS_SETPGID                      = 57
-+	SYS_ULIMIT                       = 58
-+	SYS_OLDOLDUNAME                  = 59
-+	SYS_UMASK                        = 60
-+	SYS_CHROOT                       = 61
-+	SYS_USTAT                        = 62
-+	SYS_DUP2                         = 63
-+	SYS_GETPPID                      = 64
-+	SYS_GETPGRP                      = 65
-+	SYS_SETSID                       = 66
-+	SYS_SIGACTION                    = 67
-+	SYS_SGETMASK                     = 68
-+	SYS_SSETMASK                     = 69
-+	SYS_SETREUID                     = 70
-+	SYS_SETREGID                     = 71
-+	SYS_SIGSUSPEND                   = 72
-+	SYS_SIGPENDING                   = 73
-+	SYS_SETHOSTNAME                  = 74
-+	SYS_SETRLIMIT                    = 75
-+	SYS_GETRLIMIT                    = 76
-+	SYS_GETRUSAGE                    = 77
-+	SYS_GETTIMEOFDAY                 = 78
-+	SYS_SETTIMEOFDAY                 = 79
-+	SYS_GETGROUPS                    = 80
-+	SYS_SETGROUPS                    = 81
-+	SYS_SELECT                       = 82
-+	SYS_SYMLINK                      = 83
-+	SYS_OLDLSTAT                     = 84
-+	SYS_READLINK                     = 85
-+	SYS_USELIB                       = 86
-+	SYS_SWAPON                       = 87
-+	SYS_REBOOT                       = 88
-+	SYS_READDIR                      = 89
-+	SYS_MMAP                         = 90
-+	SYS_MUNMAP                       = 91
-+	SYS_TRUNCATE                     = 92
-+	SYS_FTRUNCATE                    = 93
-+	SYS_FCHMOD                       = 94
-+	SYS_FCHOWN                       = 95
-+	SYS_GETPRIORITY                  = 96
-+	SYS_SETPRIORITY                  = 97
-+	SYS_PROFIL                       = 98
-+	SYS_STATFS                       = 99
-+	SYS_FSTATFS                      = 100
-+	SYS_IOPERM                       = 101
-+	SYS_SOCKETCALL                   = 102
-+	SYS_SYSLOG                       = 103
-+	SYS_SETITIMER                    = 104
-+	SYS_GETITIMER                    = 105
-+	SYS_STAT                         = 106
-+	SYS_LSTAT                        = 107
-+	SYS_FSTAT                        = 108
-+	SYS_OLDUNAME                     = 109
-+	SYS_IOPL                         = 110
-+	SYS_VHANGUP                      = 111
-+	SYS_IDLE                         = 112
-+	SYS_VM86OLD                      = 113
-+	SYS_WAIT4                        = 114
-+	SYS_SWAPOFF                      = 115
-+	SYS_SYSINFO                      = 116
-+	SYS_IPC                          = 117
-+	SYS_FSYNC                        = 118
-+	SYS_SIGRETURN                    = 119
-+	SYS_CLONE                        = 120
-+	SYS_SETDOMAINNAME                = 121
-+	SYS_UNAME                        = 122
-+	SYS_MODIFY_LDT                   = 123
-+	SYS_ADJTIMEX                     = 124
-+	SYS_MPROTECT                     = 125
-+	SYS_SIGPROCMASK                  = 126
-+	SYS_CREATE_MODULE                = 127
-+	SYS_INIT_MODULE                  = 128
-+	SYS_DELETE_MODULE                = 129
-+	SYS_GET_KERNEL_SYMS              = 130
-+	SYS_QUOTACTL                     = 131
-+	SYS_GETPGID                      = 132
-+	SYS_FCHDIR                       = 133
-+	SYS_BDFLUSH                      = 134
-+	SYS_SYSFS                        = 135
-+	SYS_PERSONALITY                  = 136
-+	SYS_AFS_SYSCALL                  = 137
-+	SYS_SETFSUID                     = 138
-+	SYS_SETFSGID                     = 139
-+	SYS__LLSEEK                      = 140
-+	SYS_GETDENTS                     = 141
-+	SYS__NEWSELECT                   = 142
-+	SYS_FLOCK                        = 143
-+	SYS_MSYNC                        = 144
-+	SYS_READV                        = 145
-+	SYS_WRITEV                       = 146
-+	SYS_GETSID                       = 147
-+	SYS_FDATASYNC                    = 148
-+	SYS__SYSCTL                      = 149
-+	SYS_MLOCK                        = 150
-+	SYS_MUNLOCK                      = 151
-+	SYS_MLOCKALL                     = 152
-+	SYS_MUNLOCKALL                   = 153
-+	SYS_SCHED_SETPARAM               = 154
-+	SYS_SCHED_GETPARAM               = 155
-+	SYS_SCHED_SETSCHEDULER           = 156
-+	SYS_SCHED_GETSCHEDULER           = 157
-+	SYS_SCHED_YIELD                  = 158
-+	SYS_SCHED_GET_PRIORITY_MAX       = 159
-+	SYS_SCHED_GET_PRIORITY_MIN       = 160
-+	SYS_SCHED_RR_GET_INTERVAL        = 161
-+	SYS_NANOSLEEP                    = 162
-+	SYS_MREMAP                       = 163
-+	SYS_SETRESUID                    = 164
-+	SYS_GETRESUID                    = 165
-+	SYS_VM86                         = 166
-+	SYS_QUERY_MODULE                 = 167
-+	SYS_POLL                         = 168
-+	SYS_NFSSERVCTL                   = 169
-+	SYS_SETRESGID                    = 170
-+	SYS_GETRESGID                    = 171
-+	SYS_PRCTL                        = 172
-+	SYS_RT_SIGRETURN                 = 173
-+	SYS_RT_SIGACTION                 = 174
-+	SYS_RT_SIGPROCMASK               = 175
-+	SYS_RT_SIGPENDING                = 176
-+	SYS_RT_SIGTIMEDWAIT              = 177
-+	SYS_RT_SIGQUEUEINFO              = 178
-+	SYS_RT_SIGSUSPEND                = 179
-+	SYS_PREAD64                      = 180
-+	SYS_PWRITE64                     = 181
-+	SYS_CHOWN                        = 182
-+	SYS_GETCWD                       = 183
-+	SYS_CAPGET                       = 184
-+	SYS_CAPSET                       = 185
-+	SYS_SIGALTSTACK                  = 186
-+	SYS_SENDFILE                     = 187
-+	SYS_GETPMSG                      = 188
-+	SYS_PUTPMSG                      = 189
-+	SYS_VFORK                        = 190
-+	SYS_UGETRLIMIT                   = 191
-+	SYS_MMAP2                        = 192
-+	SYS_TRUNCATE64                   = 193
-+	SYS_FTRUNCATE64                  = 194
-+	SYS_STAT64                       = 195
-+	SYS_LSTAT64                      = 196
-+	SYS_FSTAT64                      = 197
-+	SYS_LCHOWN32                     = 198
-+	SYS_GETUID32                     = 199
-+	SYS_GETGID32                     = 200
-+	SYS_GETEUID32                    = 201
-+	SYS_GETEGID32                    = 202
-+	SYS_SETREUID32                   = 203
-+	SYS_SETREGID32                   = 204
-+	SYS_GETGROUPS32                  = 205
-+	SYS_SETGROUPS32                  = 206
-+	SYS_FCHOWN32                     = 207
-+	SYS_SETRESUID32                  = 208
-+	SYS_GETRESUID32                  = 209
-+	SYS_SETRESGID32                  = 210
-+	SYS_GETRESGID32                  = 211
-+	SYS_CHOWN32                      = 212
-+	SYS_SETUID32                     = 213
-+	SYS_SETGID32                     = 214
-+	SYS_SETFSUID32                   = 215
-+	SYS_SETFSGID32                   = 216
-+	SYS_PIVOT_ROOT                   = 217
-+	SYS_MINCORE                      = 218
-+	SYS_MADVISE                      = 219
-+	SYS_GETDENTS64                   = 220
-+	SYS_FCNTL64                      = 221
-+	SYS_GETTID                       = 224
-+	SYS_READAHEAD                    = 225
-+	SYS_SETXATTR                     = 226
-+	SYS_LSETXATTR                    = 227
-+	SYS_FSETXATTR                    = 228
-+	SYS_GETXATTR                     = 229
-+	SYS_LGETXATTR                    = 230
-+	SYS_FGETXATTR                    = 231
-+	SYS_LISTXATTR                    = 232
-+	SYS_LLISTXATTR                   = 233
-+	SYS_FLISTXATTR                   = 234
-+	SYS_REMOVEXATTR                  = 235
-+	SYS_LREMOVEXATTR                 = 236
-+	SYS_FREMOVEXATTR                 = 237
-+	SYS_TKILL                        = 238
-+	SYS_SENDFILE64                   = 239
-+	SYS_FUTEX                        = 240
-+	SYS_SCHED_SETAFFINITY            = 241
-+	SYS_SCHED_GETAFFINITY            = 242
-+	SYS_SET_THREAD_AREA              = 243
-+	SYS_GET_THREAD_AREA              = 244
-+	SYS_IO_SETUP                     = 245
-+	SYS_IO_DESTROY                   = 246
-+	SYS_IO_GETEVENTS                 = 247
-+	SYS_IO_SUBMIT                    = 248
-+	SYS_IO_CANCEL                    = 249
-+	SYS_FADVISE64                    = 250
-+	SYS_EXIT_GROUP                   = 252
-+	SYS_LOOKUP_DCOOKIE               = 253
-+	SYS_EPOLL_CREATE                 = 254
-+	SYS_EPOLL_CTL                    = 255
-+	SYS_EPOLL_WAIT                   = 256
-+	SYS_REMAP_FILE_PAGES             = 257
-+	SYS_SET_TID_ADDRESS              = 258
-+	SYS_TIMER_CREATE                 = 259
-+	SYS_TIMER_SETTIME                = 260
-+	SYS_TIMER_GETTIME                = 261
-+	SYS_TIMER_GETOVERRUN             = 262
-+	SYS_TIMER_DELETE                 = 263
-+	SYS_CLOCK_SETTIME                = 264
-+	SYS_CLOCK_GETTIME                = 265
-+	SYS_CLOCK_GETRES                 = 266
-+	SYS_CLOCK_NANOSLEEP              = 267
-+	SYS_STATFS64                     = 268
-+	SYS_FSTATFS64                    = 269
-+	SYS_TGKILL                       = 270
-+	SYS_UTIMES                       = 271
-+	SYS_FADVISE64_64                 = 272
-+	SYS_VSERVER                      = 273
-+	SYS_MBIND                        = 274
-+	SYS_GET_MEMPOLICY                = 275
-+	SYS_SET_MEMPOLICY                = 276
-+	SYS_MQ_OPEN                      = 277
-+	SYS_MQ_UNLINK                    = 278
-+	SYS_MQ_TIMEDSEND                 = 279
-+	SYS_MQ_TIMEDRECEIVE              = 280
-+	SYS_MQ_NOTIFY                    = 281
-+	SYS_MQ_GETSETATTR                = 282
-+	SYS_KEXEC_LOAD                   = 283
-+	SYS_WAITID                       = 284
-+	SYS_ADD_KEY                      = 286
-+	SYS_REQUEST_KEY                  = 287
-+	SYS_KEYCTL                       = 288
-+	SYS_IOPRIO_SET                   = 289
-+	SYS_IOPRIO_GET                   = 290
-+	SYS_INOTIFY_INIT                 = 291
-+	SYS_INOTIFY_ADD_WATCH            = 292
-+	SYS_INOTIFY_RM_WATCH             = 293
-+	SYS_MIGRATE_PAGES                = 294
-+	SYS_OPENAT                       = 295
-+	SYS_MKDIRAT                      = 296
-+	SYS_MKNODAT                      = 297
-+	SYS_FCHOWNAT                     = 298
-+	SYS_FUTIMESAT                    = 299
-+	SYS_FSTATAT64                    = 300
-+	SYS_UNLINKAT                     = 301
-+	SYS_RENAMEAT                     = 302
-+	SYS_LINKAT                       = 303
-+	SYS_SYMLINKAT                    = 304
-+	SYS_READLINKAT                   = 305
-+	SYS_FCHMODAT                     = 306
-+	SYS_FACCESSAT                    = 307
-+	SYS_PSELECT6                     = 308
-+	SYS_PPOLL                        = 309
-+	SYS_UNSHARE                      = 310
-+	SYS_SET_ROBUST_LIST              = 311
-+	SYS_GET_ROBUST_LIST              = 312
-+	SYS_SPLICE                       = 313
-+	SYS_SYNC_FILE_RANGE              = 314
-+	SYS_TEE                          = 315
-+	SYS_VMSPLICE                     = 316
-+	SYS_MOVE_PAGES                   = 317
-+	SYS_GETCPU                       = 318
-+	SYS_EPOLL_PWAIT                  = 319
-+	SYS_UTIMENSAT                    = 320
-+	SYS_SIGNALFD                     = 321
-+	SYS_TIMERFD_CREATE               = 322
-+	SYS_EVENTFD                      = 323
-+	SYS_FALLOCATE                    = 324
-+	SYS_TIMERFD_SETTIME              = 325
-+	SYS_TIMERFD_GETTIME              = 326
-+	SYS_SIGNALFD4                    = 327
-+	SYS_EVENTFD2                     = 328
-+	SYS_EPOLL_CREATE1                = 329
-+	SYS_DUP3                         = 330
-+	SYS_PIPE2                        = 331
-+	SYS_INOTIFY_INIT1                = 332
-+	SYS_PREADV                       = 333
-+	SYS_PWRITEV                      = 334
-+	SYS_RT_TGSIGQUEUEINFO            = 335
-+	SYS_PERF_EVENT_OPEN              = 336
-+	SYS_RECVMMSG                     = 337
-+	SYS_FANOTIFY_INIT                = 338
-+	SYS_FANOTIFY_MARK                = 339
-+	SYS_PRLIMIT64                    = 340
-+	SYS_NAME_TO_HANDLE_AT            = 341
-+	SYS_OPEN_BY_HANDLE_AT            = 342
-+	SYS_CLOCK_ADJTIME                = 343
-+	SYS_SYNCFS                       = 344
-+	SYS_SENDMMSG                     = 345
-+	SYS_SETNS                        = 346
-+	SYS_PROCESS_VM_READV             = 347
-+	SYS_PROCESS_VM_WRITEV            = 348
-+	SYS_KCMP                         = 349
-+	SYS_FINIT_MODULE                 = 350
-+	SYS_SCHED_SETATTR                = 351
-+	SYS_SCHED_GETATTR                = 352
-+	SYS_RENAMEAT2                    = 353
-+	SYS_SECCOMP                      = 354
-+	SYS_GETRANDOM                    = 355
-+	SYS_MEMFD_CREATE                 = 356
-+	SYS_BPF                          = 357
-+	SYS_EXECVEAT                     = 358
-+	SYS_SOCKET                       = 359
-+	SYS_SOCKETPAIR                   = 360
-+	SYS_BIND                         = 361
-+	SYS_CONNECT                      = 362
-+	SYS_LISTEN                       = 363
-+	SYS_ACCEPT4                      = 364
-+	SYS_GETSOCKOPT                   = 365
-+	SYS_SETSOCKOPT                   = 366
-+	SYS_GETSOCKNAME                  = 367
-+	SYS_GETPEERNAME                  = 368
-+	SYS_SENDTO                       = 369
-+	SYS_SENDMSG                      = 370
-+	SYS_RECVFROM                     = 371
-+	SYS_RECVMSG                      = 372
-+	SYS_SHUTDOWN                     = 373
-+	SYS_USERFAULTFD                  = 374
-+	SYS_MEMBARRIER                   = 375
-+	SYS_MLOCK2                       = 376
-+	SYS_COPY_FILE_RANGE              = 377
-+	SYS_PREADV2                      = 378
-+	SYS_PWRITEV2                     = 379
-+	SYS_PKEY_MPROTECT                = 380
-+	SYS_PKEY_ALLOC                   = 381
-+	SYS_PKEY_FREE                    = 382
-+	SYS_STATX                        = 383
-+	SYS_ARCH_PRCTL                   = 384
-+	SYS_IO_PGETEVENTS                = 385
-+	SYS_RSEQ                         = 386
-+	SYS_SEMGET                       = 393
-+	SYS_SEMCTL                       = 394
-+	SYS_SHMGET                       = 395
-+	SYS_SHMCTL                       = 396
-+	SYS_SHMAT                        = 397
-+	SYS_SHMDT                        = 398
-+	SYS_MSGGET                       = 399
-+	SYS_MSGSND                       = 400
-+	SYS_MSGRCV                       = 401
-+	SYS_MSGCTL                       = 402
-+	SYS_CLOCK_GETTIME64              = 403
-+	SYS_CLOCK_SETTIME64              = 404
-+	SYS_CLOCK_ADJTIME64              = 405
-+	SYS_CLOCK_GETRES_TIME64          = 406
-+	SYS_CLOCK_NANOSLEEP_TIME64       = 407
-+	SYS_TIMER_GETTIME64              = 408
-+	SYS_TIMER_SETTIME64              = 409
-+	SYS_TIMERFD_GETTIME64            = 410
-+	SYS_TIMERFD_SETTIME64            = 411
-+	SYS_UTIMENSAT_TIME64             = 412
-+	SYS_PSELECT6_TIME64              = 413
-+	SYS_PPOLL_TIME64                 = 414
-+	SYS_IO_PGETEVENTS_TIME64         = 416
-+	SYS_RECVMMSG_TIME64              = 417
-+	SYS_MQ_TIMEDSEND_TIME64          = 418
-+	SYS_MQ_TIMEDRECEIVE_TIME64       = 419
-+	SYS_SEMTIMEDOP_TIME64            = 420
-+	SYS_RT_SIGTIMEDWAIT_TIME64       = 421
-+	SYS_FUTEX_TIME64                 = 422
-+	SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423
-+	SYS_PIDFD_SEND_SIGNAL            = 424
-+	SYS_IO_URING_SETUP               = 425
-+	SYS_IO_URING_ENTER               = 426
-+	SYS_IO_URING_REGISTER            = 427
-+	SYS_OPEN_TREE                    = 428
-+	SYS_MOVE_MOUNT                   = 429
-+	SYS_FSOPEN                       = 430
-+	SYS_FSCONFIG                     = 431
-+	SYS_FSMOUNT                      = 432
-+	SYS_FSPICK                       = 433
-+	SYS_PIDFD_OPEN                   = 434
-+	SYS_CLONE3                       = 435
-+	SYS_OPENAT2                      = 437
-+	SYS_PIDFD_GETFD                  = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-index 49bfa127..054a741b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,linux
-@@ -338,4 +338,21 @@ const (
- 	SYS_PKEY_MPROTECT          = 329
- 	SYS_PKEY_ALLOC             = 330
- 	SYS_PKEY_FREE              = 331
-+	SYS_STATX                  = 332
-+	SYS_IO_PGETEVENTS          = 333
-+	SYS_RSEQ                   = 334
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-index 97b182ef..307f2ba1 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,linux
-@@ -6,356 +6,395 @@
- package unix
- 
- const (
--	SYS_RESTART_SYSCALL        = 0
--	SYS_EXIT                   = 1
--	SYS_FORK                   = 2
--	SYS_READ                   = 3
--	SYS_WRITE                  = 4
--	SYS_OPEN                   = 5
--	SYS_CLOSE                  = 6
--	SYS_CREAT                  = 8
--	SYS_LINK                   = 9
--	SYS_UNLINK                 = 10
--	SYS_EXECVE                 = 11
--	SYS_CHDIR                  = 12
--	SYS_MKNOD                  = 14
--	SYS_CHMOD                  = 15
--	SYS_LCHOWN                 = 16
--	SYS_LSEEK                  = 19
--	SYS_GETPID                 = 20
--	SYS_MOUNT                  = 21
--	SYS_SETUID                 = 23
--	SYS_GETUID                 = 24
--	SYS_PTRACE                 = 26
--	SYS_PAUSE                  = 29
--	SYS_ACCESS                 = 33
--	SYS_NICE                   = 34
--	SYS_SYNC                   = 36
--	SYS_KILL                   = 37
--	SYS_RENAME                 = 38
--	SYS_MKDIR                  = 39
--	SYS_RMDIR                  = 40
--	SYS_DUP                    = 41
--	SYS_PIPE                   = 42
--	SYS_TIMES                  = 43
--	SYS_BRK                    = 45
--	SYS_SETGID                 = 46
--	SYS_GETGID                 = 47
--	SYS_GETEUID                = 49
--	SYS_GETEGID                = 50
--	SYS_ACCT                   = 51
--	SYS_UMOUNT2                = 52
--	SYS_IOCTL                  = 54
--	SYS_FCNTL                  = 55
--	SYS_SETPGID                = 57
--	SYS_UMASK                  = 60
--	SYS_CHROOT                 = 61
--	SYS_USTAT                  = 62
--	SYS_DUP2                   = 63
--	SYS_GETPPID                = 64
--	SYS_GETPGRP                = 65
--	SYS_SETSID                 = 66
--	SYS_SIGACTION              = 67
--	SYS_SETREUID               = 70
--	SYS_SETREGID               = 71
--	SYS_SIGSUSPEND             = 72
--	SYS_SIGPENDING             = 73
--	SYS_SETHOSTNAME            = 74
--	SYS_SETRLIMIT              = 75
--	SYS_GETRUSAGE              = 77
--	SYS_GETTIMEOFDAY           = 78
--	SYS_SETTIMEOFDAY           = 79
--	SYS_GETGROUPS              = 80
--	SYS_SETGROUPS              = 81
--	SYS_SYMLINK                = 83
--	SYS_READLINK               = 85
--	SYS_USELIB                 = 86
--	SYS_SWAPON                 = 87
--	SYS_REBOOT                 = 88
--	SYS_MUNMAP                 = 91
--	SYS_TRUNCATE               = 92
--	SYS_FTRUNCATE              = 93
--	SYS_FCHMOD                 = 94
--	SYS_FCHOWN                 = 95
--	SYS_GETPRIORITY            = 96
--	SYS_SETPRIORITY            = 97
--	SYS_STATFS                 = 99
--	SYS_FSTATFS                = 100
--	SYS_SYSLOG                 = 103
--	SYS_SETITIMER              = 104
--	SYS_GETITIMER              = 105
--	SYS_STAT                   = 106
--	SYS_LSTAT                  = 107
--	SYS_FSTAT                  = 108
--	SYS_VHANGUP                = 111
--	SYS_WAIT4                  = 114
--	SYS_SWAPOFF                = 115
--	SYS_SYSINFO                = 116
--	SYS_FSYNC                  = 118
--	SYS_SIGRETURN              = 119
--	SYS_CLONE                  = 120
--	SYS_SETDOMAINNAME          = 121
--	SYS_UNAME                  = 122
--	SYS_ADJTIMEX               = 124
--	SYS_MPROTECT               = 125
--	SYS_SIGPROCMASK            = 126
--	SYS_INIT_MODULE            = 128
--	SYS_DELETE_MODULE          = 129
--	SYS_QUOTACTL               = 131
--	SYS_GETPGID                = 132
--	SYS_FCHDIR                 = 133
--	SYS_BDFLUSH                = 134
--	SYS_SYSFS                  = 135
--	SYS_PERSONALITY            = 136
--	SYS_SETFSUID               = 138
--	SYS_SETFSGID               = 139
--	SYS__LLSEEK                = 140
--	SYS_GETDENTS               = 141
--	SYS__NEWSELECT             = 142
--	SYS_FLOCK                  = 143
--	SYS_MSYNC                  = 144
--	SYS_READV                  = 145
--	SYS_WRITEV                 = 146
--	SYS_GETSID                 = 147
--	SYS_FDATASYNC              = 148
--	SYS__SYSCTL                = 149
--	SYS_MLOCK                  = 150
--	SYS_MUNLOCK                = 151
--	SYS_MLOCKALL               = 152
--	SYS_MUNLOCKALL             = 153
--	SYS_SCHED_SETPARAM         = 154
--	SYS_SCHED_GETPARAM         = 155
--	SYS_SCHED_SETSCHEDULER     = 156
--	SYS_SCHED_GETSCHEDULER     = 157
--	SYS_SCHED_YIELD            = 158
--	SYS_SCHED_GET_PRIORITY_MAX = 159
--	SYS_SCHED_GET_PRIORITY_MIN = 160
--	SYS_SCHED_RR_GET_INTERVAL  = 161
--	SYS_NANOSLEEP              = 162
--	SYS_MREMAP                 = 163
--	SYS_SETRESUID              = 164
--	SYS_GETRESUID              = 165
--	SYS_POLL                   = 168
--	SYS_NFSSERVCTL             = 169
--	SYS_SETRESGID              = 170
--	SYS_GETRESGID              = 171
--	SYS_PRCTL                  = 172
--	SYS_RT_SIGRETURN           = 173
--	SYS_RT_SIGACTION           = 174
--	SYS_RT_SIGPROCMASK         = 175
--	SYS_RT_SIGPENDING          = 176
--	SYS_RT_SIGTIMEDWAIT        = 177
--	SYS_RT_SIGQUEUEINFO        = 178
--	SYS_RT_SIGSUSPEND          = 179
--	SYS_PREAD64                = 180
--	SYS_PWRITE64               = 181
--	SYS_CHOWN                  = 182
--	SYS_GETCWD                 = 183
--	SYS_CAPGET                 = 184
--	SYS_CAPSET                 = 185
--	SYS_SIGALTSTACK            = 186
--	SYS_SENDFILE               = 187
--	SYS_VFORK                  = 190
--	SYS_UGETRLIMIT             = 191
--	SYS_MMAP2                  = 192
--	SYS_TRUNCATE64             = 193
--	SYS_FTRUNCATE64            = 194
--	SYS_STAT64                 = 195
--	SYS_LSTAT64                = 196
--	SYS_FSTAT64                = 197
--	SYS_LCHOWN32               = 198
--	SYS_GETUID32               = 199
--	SYS_GETGID32               = 200
--	SYS_GETEUID32              = 201
--	SYS_GETEGID32              = 202
--	SYS_SETREUID32             = 203
--	SYS_SETREGID32             = 204
--	SYS_GETGROUPS32            = 205
--	SYS_SETGROUPS32            = 206
--	SYS_FCHOWN32               = 207
--	SYS_SETRESUID32            = 208
--	SYS_GETRESUID32            = 209
--	SYS_SETRESGID32            = 210
--	SYS_GETRESGID32            = 211
--	SYS_CHOWN32                = 212
--	SYS_SETUID32               = 213
--	SYS_SETGID32               = 214
--	SYS_SETFSUID32             = 215
--	SYS_SETFSGID32             = 216
--	SYS_GETDENTS64             = 217
--	SYS_PIVOT_ROOT             = 218
--	SYS_MINCORE                = 219
--	SYS_MADVISE                = 220
--	SYS_FCNTL64                = 221
--	SYS_GETTID                 = 224
--	SYS_READAHEAD              = 225
--	SYS_SETXATTR               = 226
--	SYS_LSETXATTR              = 227
--	SYS_FSETXATTR              = 228
--	SYS_GETXATTR               = 229
--	SYS_LGETXATTR              = 230
--	SYS_FGETXATTR              = 231
--	SYS_LISTXATTR              = 232
--	SYS_LLISTXATTR             = 233
--	SYS_FLISTXATTR             = 234
--	SYS_REMOVEXATTR            = 235
--	SYS_LREMOVEXATTR           = 236
--	SYS_FREMOVEXATTR           = 237
--	SYS_TKILL                  = 238
--	SYS_SENDFILE64             = 239
--	SYS_FUTEX                  = 240
--	SYS_SCHED_SETAFFINITY      = 241
--	SYS_SCHED_GETAFFINITY      = 242
--	SYS_IO_SETUP               = 243
--	SYS_IO_DESTROY             = 244
--	SYS_IO_GETEVENTS           = 245
--	SYS_IO_SUBMIT              = 246
--	SYS_IO_CANCEL              = 247
--	SYS_EXIT_GROUP             = 248
--	SYS_LOOKUP_DCOOKIE         = 249
--	SYS_EPOLL_CREATE           = 250
--	SYS_EPOLL_CTL              = 251
--	SYS_EPOLL_WAIT             = 252
--	SYS_REMAP_FILE_PAGES       = 253
--	SYS_SET_TID_ADDRESS        = 256
--	SYS_TIMER_CREATE           = 257
--	SYS_TIMER_SETTIME          = 258
--	SYS_TIMER_GETTIME          = 259
--	SYS_TIMER_GETOVERRUN       = 260
--	SYS_TIMER_DELETE           = 261
--	SYS_CLOCK_SETTIME          = 262
--	SYS_CLOCK_GETTIME          = 263
--	SYS_CLOCK_GETRES           = 264
--	SYS_CLOCK_NANOSLEEP        = 265
--	SYS_STATFS64               = 266
--	SYS_FSTATFS64              = 267
--	SYS_TGKILL                 = 268
--	SYS_UTIMES                 = 269
--	SYS_ARM_FADVISE64_64       = 270
--	SYS_PCICONFIG_IOBASE       = 271
--	SYS_PCICONFIG_READ         = 272
--	SYS_PCICONFIG_WRITE        = 273
--	SYS_MQ_OPEN                = 274
--	SYS_MQ_UNLINK              = 275
--	SYS_MQ_TIMEDSEND           = 276
--	SYS_MQ_TIMEDRECEIVE        = 277
--	SYS_MQ_NOTIFY              = 278
--	SYS_MQ_GETSETATTR          = 279
--	SYS_WAITID                 = 280
--	SYS_SOCKET                 = 281
--	SYS_BIND                   = 282
--	SYS_CONNECT                = 283
--	SYS_LISTEN                 = 284
--	SYS_ACCEPT                 = 285
--	SYS_GETSOCKNAME            = 286
--	SYS_GETPEERNAME            = 287
--	SYS_SOCKETPAIR             = 288
--	SYS_SEND                   = 289
--	SYS_SENDTO                 = 290
--	SYS_RECV                   = 291
--	SYS_RECVFROM               = 292
--	SYS_SHUTDOWN               = 293
--	SYS_SETSOCKOPT             = 294
--	SYS_GETSOCKOPT             = 295
--	SYS_SENDMSG                = 296
--	SYS_RECVMSG                = 297
--	SYS_SEMOP                  = 298
--	SYS_SEMGET                 = 299
--	SYS_SEMCTL                 = 300
--	SYS_MSGSND                 = 301
--	SYS_MSGRCV                 = 302
--	SYS_MSGGET                 = 303
--	SYS_MSGCTL                 = 304
--	SYS_SHMAT                  = 305
--	SYS_SHMDT                  = 306
--	SYS_SHMGET                 = 307
--	SYS_SHMCTL                 = 308
--	SYS_ADD_KEY                = 309
--	SYS_REQUEST_KEY            = 310
--	SYS_KEYCTL                 = 311
--	SYS_SEMTIMEDOP             = 312
--	SYS_VSERVER                = 313
--	SYS_IOPRIO_SET             = 314
--	SYS_IOPRIO_GET             = 315
--	SYS_INOTIFY_INIT           = 316
--	SYS_INOTIFY_ADD_WATCH      = 317
--	SYS_INOTIFY_RM_WATCH       = 318
--	SYS_MBIND                  = 319
--	SYS_GET_MEMPOLICY          = 320
--	SYS_SET_MEMPOLICY          = 321
--	SYS_OPENAT                 = 322
--	SYS_MKDIRAT                = 323
--	SYS_MKNODAT                = 324
--	SYS_FCHOWNAT               = 325
--	SYS_FUTIMESAT              = 326
--	SYS_FSTATAT64              = 327
--	SYS_UNLINKAT               = 328
--	SYS_RENAMEAT               = 329
--	SYS_LINKAT                 = 330
--	SYS_SYMLINKAT              = 331
--	SYS_READLINKAT             = 332
--	SYS_FCHMODAT               = 333
--	SYS_FACCESSAT              = 334
--	SYS_PSELECT6               = 335
--	SYS_PPOLL                  = 336
--	SYS_UNSHARE                = 337
--	SYS_SET_ROBUST_LIST        = 338
--	SYS_GET_ROBUST_LIST        = 339
--	SYS_SPLICE                 = 340
--	SYS_ARM_SYNC_FILE_RANGE    = 341
--	SYS_TEE                    = 342
--	SYS_VMSPLICE               = 343
--	SYS_MOVE_PAGES             = 344
--	SYS_GETCPU                 = 345
--	SYS_EPOLL_PWAIT            = 346
--	SYS_KEXEC_LOAD             = 347
--	SYS_UTIMENSAT              = 348
--	SYS_SIGNALFD               = 349
--	SYS_TIMERFD_CREATE         = 350
--	SYS_EVENTFD                = 351
--	SYS_FALLOCATE              = 352
--	SYS_TIMERFD_SETTIME        = 353
--	SYS_TIMERFD_GETTIME        = 354
--	SYS_SIGNALFD4              = 355
--	SYS_EVENTFD2               = 356
--	SYS_EPOLL_CREATE1          = 357
--	SYS_DUP3                   = 358
--	SYS_PIPE2                  = 359
--	SYS_INOTIFY_INIT1          = 360
--	SYS_PREADV                 = 361
--	SYS_PWRITEV                = 362
--	SYS_RT_TGSIGQUEUEINFO      = 363
--	SYS_PERF_EVENT_OPEN        = 364
--	SYS_RECVMMSG               = 365
--	SYS_ACCEPT4                = 366
--	SYS_FANOTIFY_INIT          = 367
--	SYS_FANOTIFY_MARK          = 368
--	SYS_PRLIMIT64              = 369
--	SYS_NAME_TO_HANDLE_AT      = 370
--	SYS_OPEN_BY_HANDLE_AT      = 371
--	SYS_CLOCK_ADJTIME          = 372
--	SYS_SYNCFS                 = 373
--	SYS_SENDMMSG               = 374
--	SYS_SETNS                  = 375
--	SYS_PROCESS_VM_READV       = 376
--	SYS_PROCESS_VM_WRITEV      = 377
--	SYS_KCMP                   = 378
--	SYS_FINIT_MODULE           = 379
--	SYS_SCHED_SETATTR          = 380
--	SYS_SCHED_GETATTR          = 381
--	SYS_RENAMEAT2              = 382
--	SYS_SECCOMP                = 383
--	SYS_GETRANDOM              = 384
--	SYS_MEMFD_CREATE           = 385
--	SYS_BPF                    = 386
--	SYS_EXECVEAT               = 387
--	SYS_USERFAULTFD            = 388
--	SYS_MEMBARRIER             = 389
--	SYS_MLOCK2                 = 390
--	SYS_COPY_FILE_RANGE        = 391
--	SYS_PREADV2                = 392
--	SYS_PWRITEV2               = 393
--	SYS_PKEY_MPROTECT          = 394
--	SYS_PKEY_ALLOC             = 395
--	SYS_PKEY_FREE              = 396
-+	SYS_RESTART_SYSCALL              = 0
-+	SYS_EXIT                         = 1
-+	SYS_FORK                         = 2
-+	SYS_READ                         = 3
-+	SYS_WRITE                        = 4
-+	SYS_OPEN                         = 5
-+	SYS_CLOSE                        = 6
-+	SYS_CREAT                        = 8
-+	SYS_LINK                         = 9
-+	SYS_UNLINK                       = 10
-+	SYS_EXECVE                       = 11
-+	SYS_CHDIR                        = 12
-+	SYS_MKNOD                        = 14
-+	SYS_CHMOD                        = 15
-+	SYS_LCHOWN                       = 16
-+	SYS_LSEEK                        = 19
-+	SYS_GETPID                       = 20
-+	SYS_MOUNT                        = 21
-+	SYS_SETUID                       = 23
-+	SYS_GETUID                       = 24
-+	SYS_PTRACE                       = 26
-+	SYS_PAUSE                        = 29
-+	SYS_ACCESS                       = 33
-+	SYS_NICE                         = 34
-+	SYS_SYNC                         = 36
-+	SYS_KILL                         = 37
-+	SYS_RENAME                       = 38
-+	SYS_MKDIR                        = 39
-+	SYS_RMDIR                        = 40
-+	SYS_DUP                          = 41
-+	SYS_PIPE                         = 42
-+	SYS_TIMES                        = 43
-+	SYS_BRK                          = 45
-+	SYS_SETGID                       = 46
-+	SYS_GETGID                       = 47
-+	SYS_GETEUID                      = 49
-+	SYS_GETEGID                      = 50
-+	SYS_ACCT                         = 51
-+	SYS_UMOUNT2                      = 52
-+	SYS_IOCTL                        = 54
-+	SYS_FCNTL                        = 55
-+	SYS_SETPGID                      = 57
-+	SYS_UMASK                        = 60
-+	SYS_CHROOT                       = 61
-+	SYS_USTAT                        = 62
-+	SYS_DUP2                         = 63
-+	SYS_GETPPID                      = 64
-+	SYS_GETPGRP                      = 65
-+	SYS_SETSID                       = 66
-+	SYS_SIGACTION                    = 67
-+	SYS_SETREUID                     = 70
-+	SYS_SETREGID                     = 71
-+	SYS_SIGSUSPEND                   = 72
-+	SYS_SIGPENDING                   = 73
-+	SYS_SETHOSTNAME                  = 74
-+	SYS_SETRLIMIT                    = 75
-+	SYS_GETRUSAGE                    = 77
-+	SYS_GETTIMEOFDAY                 = 78
-+	SYS_SETTIMEOFDAY                 = 79
-+	SYS_GETGROUPS                    = 80
-+	SYS_SETGROUPS                    = 81
-+	SYS_SYMLINK                      = 83
-+	SYS_READLINK                     = 85
-+	SYS_USELIB                       = 86
-+	SYS_SWAPON                       = 87
-+	SYS_REBOOT                       = 88
-+	SYS_MUNMAP                       = 91
-+	SYS_TRUNCATE                     = 92
-+	SYS_FTRUNCATE                    = 93
-+	SYS_FCHMOD                       = 94
-+	SYS_FCHOWN                       = 95
-+	SYS_GETPRIORITY                  = 96
-+	SYS_SETPRIORITY                  = 97
-+	SYS_STATFS                       = 99
-+	SYS_FSTATFS                      = 100
-+	SYS_SYSLOG                       = 103
-+	SYS_SETITIMER                    = 104
-+	SYS_GETITIMER                    = 105
-+	SYS_STAT                         = 106
-+	SYS_LSTAT                        = 107
-+	SYS_FSTAT                        = 108
-+	SYS_VHANGUP                      = 111
-+	SYS_WAIT4                        = 114
-+	SYS_SWAPOFF                      = 115
-+	SYS_SYSINFO                      = 116
-+	SYS_FSYNC                        = 118
-+	SYS_SIGRETURN                    = 119
-+	SYS_CLONE                        = 120
-+	SYS_SETDOMAINNAME                = 121
-+	SYS_UNAME                        = 122
-+	SYS_ADJTIMEX                     = 124
-+	SYS_MPROTECT                     = 125
-+	SYS_SIGPROCMASK                  = 126
-+	SYS_INIT_MODULE                  = 128
-+	SYS_DELETE_MODULE                = 129
-+	SYS_QUOTACTL                     = 131
-+	SYS_GETPGID                      = 132
-+	SYS_FCHDIR                       = 133
-+	SYS_BDFLUSH                      = 134
-+	SYS_SYSFS                        = 135
-+	SYS_PERSONALITY                  = 136
-+	SYS_SETFSUID                     = 138
-+	SYS_SETFSGID                     = 139
-+	SYS__LLSEEK                      = 140
-+	SYS_GETDENTS                     = 141
-+	SYS__NEWSELECT                   = 142
-+	SYS_FLOCK                        = 143
-+	SYS_MSYNC                        = 144
-+	SYS_READV                        = 145
-+	SYS_WRITEV                       = 146
-+	SYS_GETSID                       = 147
-+	SYS_FDATASYNC                    = 148
-+	SYS__SYSCTL                      = 149
-+	SYS_MLOCK                        = 150
-+	SYS_MUNLOCK                      = 151
-+	SYS_MLOCKALL                     = 152
-+	SYS_MUNLOCKALL                   = 153
-+	SYS_SCHED_SETPARAM               = 154
-+	SYS_SCHED_GETPARAM               = 155
-+	SYS_SCHED_SETSCHEDULER           = 156
-+	SYS_SCHED_GETSCHEDULER           = 157
-+	SYS_SCHED_YIELD                  = 158
-+	SYS_SCHED_GET_PRIORITY_MAX       = 159
-+	SYS_SCHED_GET_PRIORITY_MIN       = 160
-+	SYS_SCHED_RR_GET_INTERVAL        = 161
-+	SYS_NANOSLEEP                    = 162
-+	SYS_MREMAP                       = 163
-+	SYS_SETRESUID                    = 164
-+	SYS_GETRESUID                    = 165
-+	SYS_POLL                         = 168
-+	SYS_NFSSERVCTL                   = 169
-+	SYS_SETRESGID                    = 170
-+	SYS_GETRESGID                    = 171
-+	SYS_PRCTL                        = 172
-+	SYS_RT_SIGRETURN                 = 173
-+	SYS_RT_SIGACTION                 = 174
-+	SYS_RT_SIGPROCMASK               = 175
-+	SYS_RT_SIGPENDING                = 176
-+	SYS_RT_SIGTIMEDWAIT              = 177
-+	SYS_RT_SIGQUEUEINFO              = 178
-+	SYS_RT_SIGSUSPEND                = 179
-+	SYS_PREAD64                      = 180
-+	SYS_PWRITE64                     = 181
-+	SYS_CHOWN                        = 182
-+	SYS_GETCWD                       = 183
-+	SYS_CAPGET                       = 184
-+	SYS_CAPSET                       = 185
-+	SYS_SIGALTSTACK                  = 186
-+	SYS_SENDFILE                     = 187
-+	SYS_VFORK                        = 190
-+	SYS_UGETRLIMIT                   = 191
-+	SYS_MMAP2                        = 192
-+	SYS_TRUNCATE64                   = 193
-+	SYS_FTRUNCATE64                  = 194
-+	SYS_STAT64                       = 195
-+	SYS_LSTAT64                      = 196
-+	SYS_FSTAT64                      = 197
-+	SYS_LCHOWN32                     = 198
-+	SYS_GETUID32                     = 199
-+	SYS_GETGID32                     = 200
-+	SYS_GETEUID32                    = 201
-+	SYS_GETEGID32                    = 202
-+	SYS_SETREUID32                   = 203
-+	SYS_SETREGID32                   = 204
-+	SYS_GETGROUPS32                  = 205
-+	SYS_SETGROUPS32                  = 206
-+	SYS_FCHOWN32                     = 207
-+	SYS_SETRESUID32                  = 208
-+	SYS_GETRESUID32                  = 209
-+	SYS_SETRESGID32                  = 210
-+	SYS_GETRESGID32                  = 211
-+	SYS_CHOWN32                      = 212
-+	SYS_SETUID32                     = 213
-+	SYS_SETGID32                     = 214
-+	SYS_SETFSUID32                   = 215
-+	SYS_SETFSGID32                   = 216
-+	SYS_GETDENTS64                   = 217
-+	SYS_PIVOT_ROOT                   = 218
-+	SYS_MINCORE                      = 219
-+	SYS_MADVISE                      = 220
-+	SYS_FCNTL64                      = 221
-+	SYS_GETTID                       = 224
-+	SYS_READAHEAD                    = 225
-+	SYS_SETXATTR                     = 226
-+	SYS_LSETXATTR                    = 227
-+	SYS_FSETXATTR                    = 228
-+	SYS_GETXATTR                     = 229
-+	SYS_LGETXATTR                    = 230
-+	SYS_FGETXATTR                    = 231
-+	SYS_LISTXATTR                    = 232
-+	SYS_LLISTXATTR                   = 233
-+	SYS_FLISTXATTR                   = 234
-+	SYS_REMOVEXATTR                  = 235
-+	SYS_LREMOVEXATTR                 = 236
-+	SYS_FREMOVEXATTR                 = 237
-+	SYS_TKILL                        = 238
-+	SYS_SENDFILE64                   = 239
-+	SYS_FUTEX                        = 240
-+	SYS_SCHED_SETAFFINITY            = 241
-+	SYS_SCHED_GETAFFINITY            = 242
-+	SYS_IO_SETUP                     = 243
-+	SYS_IO_DESTROY                   = 244
-+	SYS_IO_GETEVENTS                 = 245
-+	SYS_IO_SUBMIT                    = 246
-+	SYS_IO_CANCEL                    = 247
-+	SYS_EXIT_GROUP                   = 248
-+	SYS_LOOKUP_DCOOKIE               = 249
-+	SYS_EPOLL_CREATE                 = 250
-+	SYS_EPOLL_CTL                    = 251
-+	SYS_EPOLL_WAIT                   = 252
-+	SYS_REMAP_FILE_PAGES             = 253
-+	SYS_SET_TID_ADDRESS              = 256
-+	SYS_TIMER_CREATE                 = 257
-+	SYS_TIMER_SETTIME                = 258
-+	SYS_TIMER_GETTIME                = 259
-+	SYS_TIMER_GETOVERRUN             = 260
-+	SYS_TIMER_DELETE                 = 261
-+	SYS_CLOCK_SETTIME                = 262
-+	SYS_CLOCK_GETTIME                = 263
-+	SYS_CLOCK_GETRES                 = 264
-+	SYS_CLOCK_NANOSLEEP              = 265
-+	SYS_STATFS64                     = 266
-+	SYS_FSTATFS64                    = 267
-+	SYS_TGKILL                       = 268
-+	SYS_UTIMES                       = 269
-+	SYS_ARM_FADVISE64_64             = 270
-+	SYS_PCICONFIG_IOBASE             = 271
-+	SYS_PCICONFIG_READ               = 272
-+	SYS_PCICONFIG_WRITE              = 273
-+	SYS_MQ_OPEN                      = 274
-+	SYS_MQ_UNLINK                    = 275
-+	SYS_MQ_TIMEDSEND                 = 276
-+	SYS_MQ_TIMEDRECEIVE              = 277
-+	SYS_MQ_NOTIFY                    = 278
-+	SYS_MQ_GETSETATTR                = 279
-+	SYS_WAITID                       = 280
-+	SYS_SOCKET                       = 281
-+	SYS_BIND                         = 282
-+	SYS_CONNECT                      = 283
-+	SYS_LISTEN                       = 284
-+	SYS_ACCEPT                       = 285
-+	SYS_GETSOCKNAME                  = 286
-+	SYS_GETPEERNAME                  = 287
-+	SYS_SOCKETPAIR                   = 288
-+	SYS_SEND                         = 289
-+	SYS_SENDTO                       = 290
-+	SYS_RECV                         = 291
-+	SYS_RECVFROM                     = 292
-+	SYS_SHUTDOWN                     = 293
-+	SYS_SETSOCKOPT                   = 294
-+	SYS_GETSOCKOPT                   = 295
-+	SYS_SENDMSG                      = 296
-+	SYS_RECVMSG                      = 297
-+	SYS_SEMOP                        = 298
-+	SYS_SEMGET                       = 299
-+	SYS_SEMCTL                       = 300
-+	SYS_MSGSND                       = 301
-+	SYS_MSGRCV                       = 302
-+	SYS_MSGGET                       = 303
-+	SYS_MSGCTL                       = 304
-+	SYS_SHMAT                        = 305
-+	SYS_SHMDT                        = 306
-+	SYS_SHMGET                       = 307
-+	SYS_SHMCTL                       = 308
-+	SYS_ADD_KEY                      = 309
-+	SYS_REQUEST_KEY                  = 310
-+	SYS_KEYCTL                       = 311
-+	SYS_SEMTIMEDOP                   = 312
-+	SYS_VSERVER                      = 313
-+	SYS_IOPRIO_SET                   = 314
-+	SYS_IOPRIO_GET                   = 315
-+	SYS_INOTIFY_INIT                 = 316
-+	SYS_INOTIFY_ADD_WATCH            = 317
-+	SYS_INOTIFY_RM_WATCH             = 318
-+	SYS_MBIND                        = 319
-+	SYS_GET_MEMPOLICY                = 320
-+	SYS_SET_MEMPOLICY                = 321
-+	SYS_OPENAT                       = 322
-+	SYS_MKDIRAT                      = 323
-+	SYS_MKNODAT                      = 324
-+	SYS_FCHOWNAT                     = 325
-+	SYS_FUTIMESAT                    = 326
-+	SYS_FSTATAT64                    = 327
-+	SYS_UNLINKAT                     = 328
-+	SYS_RENAMEAT                     = 329
-+	SYS_LINKAT                       = 330
-+	SYS_SYMLINKAT                    = 331
-+	SYS_READLINKAT                   = 332
-+	SYS_FCHMODAT                     = 333
-+	SYS_FACCESSAT                    = 334
-+	SYS_PSELECT6                     = 335
-+	SYS_PPOLL                        = 336
-+	SYS_UNSHARE                      = 337
-+	SYS_SET_ROBUST_LIST              = 338
-+	SYS_GET_ROBUST_LIST              = 339
-+	SYS_SPLICE                       = 340
-+	SYS_ARM_SYNC_FILE_RANGE          = 341
-+	SYS_TEE                          = 342
-+	SYS_VMSPLICE                     = 343
-+	SYS_MOVE_PAGES                   = 344
-+	SYS_GETCPU                       = 345
-+	SYS_EPOLL_PWAIT                  = 346
-+	SYS_KEXEC_LOAD                   = 347
-+	SYS_UTIMENSAT                    = 348
-+	SYS_SIGNALFD                     = 349
-+	SYS_TIMERFD_CREATE               = 350
-+	SYS_EVENTFD                      = 351
-+	SYS_FALLOCATE                    = 352
-+	SYS_TIMERFD_SETTIME              = 353
-+	SYS_TIMERFD_GETTIME              = 354
-+	SYS_SIGNALFD4                    = 355
-+	SYS_EVENTFD2                     = 356
-+	SYS_EPOLL_CREATE1                = 357
-+	SYS_DUP3                         = 358
-+	SYS_PIPE2                        = 359
-+	SYS_INOTIFY_INIT1                = 360
-+	SYS_PREADV                       = 361
-+	SYS_PWRITEV                      = 362
-+	SYS_RT_TGSIGQUEUEINFO            = 363
-+	SYS_PERF_EVENT_OPEN              = 364
-+	SYS_RECVMMSG                     = 365
-+	SYS_ACCEPT4                      = 366
-+	SYS_FANOTIFY_INIT                = 367
-+	SYS_FANOTIFY_MARK                = 368
-+	SYS_PRLIMIT64                    = 369
-+	SYS_NAME_TO_HANDLE_AT            = 370
-+	SYS_OPEN_BY_HANDLE_AT            = 371
-+	SYS_CLOCK_ADJTIME                = 372
-+	SYS_SYNCFS                       = 373
-+	SYS_SENDMMSG                     = 374
-+	SYS_SETNS                        = 375
-+	SYS_PROCESS_VM_READV             = 376
-+	SYS_PROCESS_VM_WRITEV            = 377
-+	SYS_KCMP                         = 378
-+	SYS_FINIT_MODULE                 = 379
-+	SYS_SCHED_SETATTR                = 380
-+	SYS_SCHED_GETATTR                = 381
-+	SYS_RENAMEAT2                    = 382
-+	SYS_SECCOMP                      = 383
-+	SYS_GETRANDOM                    = 384
-+	SYS_MEMFD_CREATE                 = 385
-+	SYS_BPF                          = 386
-+	SYS_EXECVEAT                     = 387
-+	SYS_USERFAULTFD                  = 388
-+	SYS_MEMBARRIER                   = 389
-+	SYS_MLOCK2                       = 390
-+	SYS_COPY_FILE_RANGE              = 391
-+	SYS_PREADV2                      = 392
-+	SYS_PWRITEV2                     = 393
-+	SYS_PKEY_MPROTECT                = 394
-+	SYS_PKEY_ALLOC                   = 395
-+	SYS_PKEY_FREE                    = 396
-+	SYS_STATX                        = 397
-+	SYS_RSEQ                         = 398
-+	SYS_IO_PGETEVENTS                = 399
-+	SYS_MIGRATE_PAGES                = 400
-+	SYS_KEXEC_FILE_LOAD              = 401
-+	SYS_CLOCK_GETTIME64              = 403
-+	SYS_CLOCK_SETTIME64              = 404
-+	SYS_CLOCK_ADJTIME64              = 405
-+	SYS_CLOCK_GETRES_TIME64          = 406
-+	SYS_CLOCK_NANOSLEEP_TIME64       = 407
-+	SYS_TIMER_GETTIME64              = 408
-+	SYS_TIMER_SETTIME64              = 409
-+	SYS_TIMERFD_GETTIME64            = 410
-+	SYS_TIMERFD_SETTIME64            = 411
-+	SYS_UTIMENSAT_TIME64             = 412
-+	SYS_PSELECT6_TIME64              = 413
-+	SYS_PPOLL_TIME64                 = 414
-+	SYS_IO_PGETEVENTS_TIME64         = 416
-+	SYS_RECVMMSG_TIME64              = 417
-+	SYS_MQ_TIMEDSEND_TIME64          = 418
-+	SYS_MQ_TIMEDRECEIVE_TIME64       = 419
-+	SYS_SEMTIMEDOP_TIME64            = 420
-+	SYS_RT_SIGTIMEDWAIT_TIME64       = 421
-+	SYS_FUTEX_TIME64                 = 422
-+	SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423
-+	SYS_PIDFD_SEND_SIGNAL            = 424
-+	SYS_IO_URING_SETUP               = 425
-+	SYS_IO_URING_ENTER               = 426
-+	SYS_IO_URING_REGISTER            = 427
-+	SYS_OPEN_TREE                    = 428
-+	SYS_MOVE_MOUNT                   = 429
-+	SYS_FSOPEN                       = 430
-+	SYS_FSCONFIG                     = 431
-+	SYS_FSMOUNT                      = 432
-+	SYS_FSPICK                       = 433
-+	SYS_PIDFD_OPEN                   = 434
-+	SYS_CLONE3                       = 435
-+	SYS_OPENAT2                      = 437
-+	SYS_PIDFD_GETFD                  = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-index 64078435..e9404dd5 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm64,linux
-@@ -282,4 +282,22 @@ const (
- 	SYS_PKEY_MPROTECT          = 288
- 	SYS_PKEY_ALLOC             = 289
- 	SYS_PKEY_FREE              = 290
-+	SYS_STATX                  = 291
-+	SYS_IO_PGETEVENTS          = 292
-+	SYS_RSEQ                   = 293
-+	SYS_KEXEC_FILE_LOAD        = 294
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-index 939567c0..68bb6d29 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build mips,linux
-@@ -6,369 +6,416 @@
- package unix
- 
- const (
--	SYS_SYSCALL                = 4000
--	SYS_EXIT                   = 4001
--	SYS_FORK                   = 4002
--	SYS_READ                   = 4003
--	SYS_WRITE                  = 4004
--	SYS_OPEN                   = 4005
--	SYS_CLOSE                  = 4006
--	SYS_WAITPID                = 4007
--	SYS_CREAT                  = 4008
--	SYS_LINK                   = 4009
--	SYS_UNLINK                 = 4010
--	SYS_EXECVE                 = 4011
--	SYS_CHDIR                  = 4012
--	SYS_TIME                   = 4013
--	SYS_MKNOD                  = 4014
--	SYS_CHMOD                  = 4015
--	SYS_LCHOWN                 = 4016
--	SYS_BREAK                  = 4017
--	SYS_UNUSED18               = 4018
--	SYS_LSEEK                  = 4019
--	SYS_GETPID                 = 4020
--	SYS_MOUNT                  = 4021
--	SYS_UMOUNT                 = 4022
--	SYS_SETUID                 = 4023
--	SYS_GETUID                 = 4024
--	SYS_STIME                  = 4025
--	SYS_PTRACE                 = 4026
--	SYS_ALARM                  = 4027
--	SYS_UNUSED28               = 4028
--	SYS_PAUSE                  = 4029
--	SYS_UTIME                  = 4030
--	SYS_STTY                   = 4031
--	SYS_GTTY                   = 4032
--	SYS_ACCESS                 = 4033
--	SYS_NICE                   = 4034
--	SYS_FTIME                  = 4035
--	SYS_SYNC                   = 4036
--	SYS_KILL                   = 4037
--	SYS_RENAME                 = 4038
--	SYS_MKDIR                  = 4039
--	SYS_RMDIR                  = 4040
--	SYS_DUP                    = 4041
--	SYS_PIPE                   = 4042
--	SYS_TIMES                  = 4043
--	SYS_PROF                   = 4044
--	SYS_BRK                    = 4045
--	SYS_SETGID                 = 4046
--	SYS_GETGID                 = 4047
--	SYS_SIGNAL                 = 4048
--	SYS_GETEUID                = 4049
--	SYS_GETEGID                = 4050
--	SYS_ACCT                   = 4051
--	SYS_UMOUNT2                = 4052
--	SYS_LOCK                   = 4053
--	SYS_IOCTL                  = 4054
--	SYS_FCNTL                  = 4055
--	SYS_MPX                    = 4056
--	SYS_SETPGID                = 4057
--	SYS_ULIMIT                 = 4058
--	SYS_UNUSED59               = 4059
--	SYS_UMASK                  = 4060
--	SYS_CHROOT                 = 4061
--	SYS_USTAT                  = 4062
--	SYS_DUP2                   = 4063
--	SYS_GETPPID                = 4064
--	SYS_GETPGRP                = 4065
--	SYS_SETSID                 = 4066
--	SYS_SIGACTION              = 4067
--	SYS_SGETMASK               = 4068
--	SYS_SSETMASK               = 4069
--	SYS_SETREUID               = 4070
--	SYS_SETREGID               = 4071
--	SYS_SIGSUSPEND             = 4072
--	SYS_SIGPENDING             = 4073
--	SYS_SETHOSTNAME            = 4074
--	SYS_SETRLIMIT              = 4075
--	SYS_GETRLIMIT              = 4076
--	SYS_GETRUSAGE              = 4077
--	SYS_GETTIMEOFDAY           = 4078
--	SYS_SETTIMEOFDAY           = 4079
--	SYS_GETGROUPS              = 4080
--	SYS_SETGROUPS              = 4081
--	SYS_RESERVED82             = 4082
--	SYS_SYMLINK                = 4083
--	SYS_UNUSED84               = 4084
--	SYS_READLINK               = 4085
--	SYS_USELIB                 = 4086
--	SYS_SWAPON                 = 4087
--	SYS_REBOOT                 = 4088
--	SYS_READDIR                = 4089
--	SYS_MMAP                   = 4090
--	SYS_MUNMAP                 = 4091
--	SYS_TRUNCATE               = 4092
--	SYS_FTRUNCATE              = 4093
--	SYS_FCHMOD                 = 4094
--	SYS_FCHOWN                 = 4095
--	SYS_GETPRIORITY            = 4096
--	SYS_SETPRIORITY            = 4097
--	SYS_PROFIL                 = 4098
--	SYS_STATFS                 = 4099
--	SYS_FSTATFS                = 4100
--	SYS_IOPERM                 = 4101
--	SYS_SOCKETCALL             = 4102
--	SYS_SYSLOG                 = 4103
--	SYS_SETITIMER              = 4104
--	SYS_GETITIMER              = 4105
--	SYS_STAT                   = 4106
--	SYS_LSTAT                  = 4107
--	SYS_FSTAT                  = 4108
--	SYS_UNUSED109              = 4109
--	SYS_IOPL                   = 4110
--	SYS_VHANGUP                = 4111
--	SYS_IDLE                   = 4112
--	SYS_VM86                   = 4113
--	SYS_WAIT4                  = 4114
--	SYS_SWAPOFF                = 4115
--	SYS_SYSINFO                = 4116
--	SYS_IPC                    = 4117
--	SYS_FSYNC                  = 4118
--	SYS_SIGRETURN              = 4119
--	SYS_CLONE                  = 4120
--	SYS_SETDOMAINNAME          = 4121
--	SYS_UNAME                  = 4122
--	SYS_MODIFY_LDT             = 4123
--	SYS_ADJTIMEX               = 4124
--	SYS_MPROTECT               = 4125
--	SYS_SIGPROCMASK            = 4126
--	SYS_CREATE_MODULE          = 4127
--	SYS_INIT_MODULE            = 4128
--	SYS_DELETE_MODULE          = 4129
--	SYS_GET_KERNEL_SYMS        = 4130
--	SYS_QUOTACTL               = 4131
--	SYS_GETPGID                = 4132
--	SYS_FCHDIR                 = 4133
--	SYS_BDFLUSH                = 4134
--	SYS_SYSFS                  = 4135
--	SYS_PERSONALITY            = 4136
--	SYS_AFS_SYSCALL            = 4137
--	SYS_SETFSUID               = 4138
--	SYS_SETFSGID               = 4139
--	SYS__LLSEEK                = 4140
--	SYS_GETDENTS               = 4141
--	SYS__NEWSELECT             = 4142
--	SYS_FLOCK                  = 4143
--	SYS_MSYNC                  = 4144
--	SYS_READV                  = 4145
--	SYS_WRITEV                 = 4146
--	SYS_CACHEFLUSH             = 4147
--	SYS_CACHECTL               = 4148
--	SYS_SYSMIPS                = 4149
--	SYS_UNUSED150              = 4150
--	SYS_GETSID                 = 4151
--	SYS_FDATASYNC              = 4152
--	SYS__SYSCTL                = 4153
--	SYS_MLOCK                  = 4154
--	SYS_MUNLOCK                = 4155
--	SYS_MLOCKALL               = 4156
--	SYS_MUNLOCKALL             = 4157
--	SYS_SCHED_SETPARAM         = 4158
--	SYS_SCHED_GETPARAM         = 4159
--	SYS_SCHED_SETSCHEDULER     = 4160
--	SYS_SCHED_GETSCHEDULER     = 4161
--	SYS_SCHED_YIELD            = 4162
--	SYS_SCHED_GET_PRIORITY_MAX = 4163
--	SYS_SCHED_GET_PRIORITY_MIN = 4164
--	SYS_SCHED_RR_GET_INTERVAL  = 4165
--	SYS_NANOSLEEP              = 4166
--	SYS_MREMAP                 = 4167
--	SYS_ACCEPT                 = 4168
--	SYS_BIND                   = 4169
--	SYS_CONNECT                = 4170
--	SYS_GETPEERNAME            = 4171
--	SYS_GETSOCKNAME            = 4172
--	SYS_GETSOCKOPT             = 4173
--	SYS_LISTEN                 = 4174
--	SYS_RECV                   = 4175
--	SYS_RECVFROM               = 4176
--	SYS_RECVMSG                = 4177
--	SYS_SEND                   = 4178
--	SYS_SENDMSG                = 4179
--	SYS_SENDTO                 = 4180
--	SYS_SETSOCKOPT             = 4181
--	SYS_SHUTDOWN               = 4182
--	SYS_SOCKET                 = 4183
--	SYS_SOCKETPAIR             = 4184
--	SYS_SETRESUID              = 4185
--	SYS_GETRESUID              = 4186
--	SYS_QUERY_MODULE           = 4187
--	SYS_POLL                   = 4188
--	SYS_NFSSERVCTL             = 4189
--	SYS_SETRESGID              = 4190
--	SYS_GETRESGID              = 4191
--	SYS_PRCTL                  = 4192
--	SYS_RT_SIGRETURN           = 4193
--	SYS_RT_SIGACTION           = 4194
--	SYS_RT_SIGPROCMASK         = 4195
--	SYS_RT_SIGPENDING          = 4196
--	SYS_RT_SIGTIMEDWAIT        = 4197
--	SYS_RT_SIGQUEUEINFO        = 4198
--	SYS_RT_SIGSUSPEND          = 4199
--	SYS_PREAD64                = 4200
--	SYS_PWRITE64               = 4201
--	SYS_CHOWN                  = 4202
--	SYS_GETCWD                 = 4203
--	SYS_CAPGET                 = 4204
--	SYS_CAPSET                 = 4205
--	SYS_SIGALTSTACK            = 4206
--	SYS_SENDFILE               = 4207
--	SYS_GETPMSG                = 4208
--	SYS_PUTPMSG                = 4209
--	SYS_MMAP2                  = 4210
--	SYS_TRUNCATE64             = 4211
--	SYS_FTRUNCATE64            = 4212
--	SYS_STAT64                 = 4213
--	SYS_LSTAT64                = 4214
--	SYS_FSTAT64                = 4215
--	SYS_PIVOT_ROOT             = 4216
--	SYS_MINCORE                = 4217
--	SYS_MADVISE                = 4218
--	SYS_GETDENTS64             = 4219
--	SYS_FCNTL64                = 4220
--	SYS_RESERVED221            = 4221
--	SYS_GETTID                 = 4222
--	SYS_READAHEAD              = 4223
--	SYS_SETXATTR               = 4224
--	SYS_LSETXATTR              = 4225
--	SYS_FSETXATTR              = 4226
--	SYS_GETXATTR               = 4227
--	SYS_LGETXATTR              = 4228
--	SYS_FGETXATTR              = 4229
--	SYS_LISTXATTR              = 4230
--	SYS_LLISTXATTR             = 4231
--	SYS_FLISTXATTR             = 4232
--	SYS_REMOVEXATTR            = 4233
--	SYS_LREMOVEXATTR           = 4234
--	SYS_FREMOVEXATTR           = 4235
--	SYS_TKILL                  = 4236
--	SYS_SENDFILE64             = 4237
--	SYS_FUTEX                  = 4238
--	SYS_SCHED_SETAFFINITY      = 4239
--	SYS_SCHED_GETAFFINITY      = 4240
--	SYS_IO_SETUP               = 4241
--	SYS_IO_DESTROY             = 4242
--	SYS_IO_GETEVENTS           = 4243
--	SYS_IO_SUBMIT              = 4244
--	SYS_IO_CANCEL              = 4245
--	SYS_EXIT_GROUP             = 4246
--	SYS_LOOKUP_DCOOKIE         = 4247
--	SYS_EPOLL_CREATE           = 4248
--	SYS_EPOLL_CTL              = 4249
--	SYS_EPOLL_WAIT             = 4250
--	SYS_REMAP_FILE_PAGES       = 4251
--	SYS_SET_TID_ADDRESS        = 4252
--	SYS_RESTART_SYSCALL        = 4253
--	SYS_FADVISE64              = 4254
--	SYS_STATFS64               = 4255
--	SYS_FSTATFS64              = 4256
--	SYS_TIMER_CREATE           = 4257
--	SYS_TIMER_SETTIME          = 4258
--	SYS_TIMER_GETTIME          = 4259
--	SYS_TIMER_GETOVERRUN       = 4260
--	SYS_TIMER_DELETE           = 4261
--	SYS_CLOCK_SETTIME          = 4262
--	SYS_CLOCK_GETTIME          = 4263
--	SYS_CLOCK_GETRES           = 4264
--	SYS_CLOCK_NANOSLEEP        = 4265
--	SYS_TGKILL                 = 4266
--	SYS_UTIMES                 = 4267
--	SYS_MBIND                  = 4268
--	SYS_GET_MEMPOLICY          = 4269
--	SYS_SET_MEMPOLICY          = 4270
--	SYS_MQ_OPEN                = 4271
--	SYS_MQ_UNLINK              = 4272
--	SYS_MQ_TIMEDSEND           = 4273
--	SYS_MQ_TIMEDRECEIVE        = 4274
--	SYS_MQ_NOTIFY              = 4275
--	SYS_MQ_GETSETATTR          = 4276
--	SYS_VSERVER                = 4277
--	SYS_WAITID                 = 4278
--	SYS_ADD_KEY                = 4280
--	SYS_REQUEST_KEY            = 4281
--	SYS_KEYCTL                 = 4282
--	SYS_SET_THREAD_AREA        = 4283
--	SYS_INOTIFY_INIT           = 4284
--	SYS_INOTIFY_ADD_WATCH      = 4285
--	SYS_INOTIFY_RM_WATCH       = 4286
--	SYS_MIGRATE_PAGES          = 4287
--	SYS_OPENAT                 = 4288
--	SYS_MKDIRAT                = 4289
--	SYS_MKNODAT                = 4290
--	SYS_FCHOWNAT               = 4291
--	SYS_FUTIMESAT              = 4292
--	SYS_FSTATAT64              = 4293
--	SYS_UNLINKAT               = 4294
--	SYS_RENAMEAT               = 4295
--	SYS_LINKAT                 = 4296
--	SYS_SYMLINKAT              = 4297
--	SYS_READLINKAT             = 4298
--	SYS_FCHMODAT               = 4299
--	SYS_FACCESSAT              = 4300
--	SYS_PSELECT6               = 4301
--	SYS_PPOLL                  = 4302
--	SYS_UNSHARE                = 4303
--	SYS_SPLICE                 = 4304
--	SYS_SYNC_FILE_RANGE        = 4305
--	SYS_TEE                    = 4306
--	SYS_VMSPLICE               = 4307
--	SYS_MOVE_PAGES             = 4308
--	SYS_SET_ROBUST_LIST        = 4309
--	SYS_GET_ROBUST_LIST        = 4310
--	SYS_KEXEC_LOAD             = 4311
--	SYS_GETCPU                 = 4312
--	SYS_EPOLL_PWAIT            = 4313
--	SYS_IOPRIO_SET             = 4314
--	SYS_IOPRIO_GET             = 4315
--	SYS_UTIMENSAT              = 4316
--	SYS_SIGNALFD               = 4317
--	SYS_TIMERFD                = 4318
--	SYS_EVENTFD                = 4319
--	SYS_FALLOCATE              = 4320
--	SYS_TIMERFD_CREATE         = 4321
--	SYS_TIMERFD_GETTIME        = 4322
--	SYS_TIMERFD_SETTIME        = 4323
--	SYS_SIGNALFD4              = 4324
--	SYS_EVENTFD2               = 4325
--	SYS_EPOLL_CREATE1          = 4326
--	SYS_DUP3                   = 4327
--	SYS_PIPE2                  = 4328
--	SYS_INOTIFY_INIT1          = 4329
--	SYS_PREADV                 = 4330
--	SYS_PWRITEV                = 4331
--	SYS_RT_TGSIGQUEUEINFO      = 4332
--	SYS_PERF_EVENT_OPEN        = 4333
--	SYS_ACCEPT4                = 4334
--	SYS_RECVMMSG               = 4335
--	SYS_FANOTIFY_INIT          = 4336
--	SYS_FANOTIFY_MARK          = 4337
--	SYS_PRLIMIT64              = 4338
--	SYS_NAME_TO_HANDLE_AT      = 4339
--	SYS_OPEN_BY_HANDLE_AT      = 4340
--	SYS_CLOCK_ADJTIME          = 4341
--	SYS_SYNCFS                 = 4342
--	SYS_SENDMMSG               = 4343
--	SYS_SETNS                  = 4344
--	SYS_PROCESS_VM_READV       = 4345
--	SYS_PROCESS_VM_WRITEV      = 4346
--	SYS_KCMP                   = 4347
--	SYS_FINIT_MODULE           = 4348
--	SYS_SCHED_SETATTR          = 4349
--	SYS_SCHED_GETATTR          = 4350
--	SYS_RENAMEAT2              = 4351
--	SYS_SECCOMP                = 4352
--	SYS_GETRANDOM              = 4353
--	SYS_MEMFD_CREATE           = 4354
--	SYS_BPF                    = 4355
--	SYS_EXECVEAT               = 4356
--	SYS_USERFAULTFD            = 4357
--	SYS_MEMBARRIER             = 4358
--	SYS_MLOCK2                 = 4359
--	SYS_COPY_FILE_RANGE        = 4360
--	SYS_PREADV2                = 4361
--	SYS_PWRITEV2               = 4362
--	SYS_PKEY_MPROTECT          = 4363
--	SYS_PKEY_ALLOC             = 4364
--	SYS_PKEY_FREE              = 4365
-+	SYS_SYSCALL                      = 4000
-+	SYS_EXIT                         = 4001
-+	SYS_FORK                         = 4002
-+	SYS_READ                         = 4003
-+	SYS_WRITE                        = 4004
-+	SYS_OPEN                         = 4005
-+	SYS_CLOSE                        = 4006
-+	SYS_WAITPID                      = 4007
-+	SYS_CREAT                        = 4008
-+	SYS_LINK                         = 4009
-+	SYS_UNLINK                       = 4010
-+	SYS_EXECVE                       = 4011
-+	SYS_CHDIR                        = 4012
-+	SYS_TIME                         = 4013
-+	SYS_MKNOD                        = 4014
-+	SYS_CHMOD                        = 4015
-+	SYS_LCHOWN                       = 4016
-+	SYS_BREAK                        = 4017
-+	SYS_UNUSED18                     = 4018
-+	SYS_LSEEK                        = 4019
-+	SYS_GETPID                       = 4020
-+	SYS_MOUNT                        = 4021
-+	SYS_UMOUNT                       = 4022
-+	SYS_SETUID                       = 4023
-+	SYS_GETUID                       = 4024
-+	SYS_STIME                        = 4025
-+	SYS_PTRACE                       = 4026
-+	SYS_ALARM                        = 4027
-+	SYS_UNUSED28                     = 4028
-+	SYS_PAUSE                        = 4029
-+	SYS_UTIME                        = 4030
-+	SYS_STTY                         = 4031
-+	SYS_GTTY                         = 4032
-+	SYS_ACCESS                       = 4033
-+	SYS_NICE                         = 4034
-+	SYS_FTIME                        = 4035
-+	SYS_SYNC                         = 4036
-+	SYS_KILL                         = 4037
-+	SYS_RENAME                       = 4038
-+	SYS_MKDIR                        = 4039
-+	SYS_RMDIR                        = 4040
-+	SYS_DUP                          = 4041
-+	SYS_PIPE                         = 4042
-+	SYS_TIMES                        = 4043
-+	SYS_PROF                         = 4044
-+	SYS_BRK                          = 4045
-+	SYS_SETGID                       = 4046
-+	SYS_GETGID                       = 4047
-+	SYS_SIGNAL                       = 4048
-+	SYS_GETEUID                      = 4049
-+	SYS_GETEGID                      = 4050
-+	SYS_ACCT                         = 4051
-+	SYS_UMOUNT2                      = 4052
-+	SYS_LOCK                         = 4053
-+	SYS_IOCTL                        = 4054
-+	SYS_FCNTL                        = 4055
-+	SYS_MPX                          = 4056
-+	SYS_SETPGID                      = 4057
-+	SYS_ULIMIT                       = 4058
-+	SYS_UNUSED59                     = 4059
-+	SYS_UMASK                        = 4060
-+	SYS_CHROOT                       = 4061
-+	SYS_USTAT                        = 4062
-+	SYS_DUP2                         = 4063
-+	SYS_GETPPID                      = 4064
-+	SYS_GETPGRP                      = 4065
-+	SYS_SETSID                       = 4066
-+	SYS_SIGACTION                    = 4067
-+	SYS_SGETMASK                     = 4068
-+	SYS_SSETMASK                     = 4069
-+	SYS_SETREUID                     = 4070
-+	SYS_SETREGID                     = 4071
-+	SYS_SIGSUSPEND                   = 4072
-+	SYS_SIGPENDING                   = 4073
-+	SYS_SETHOSTNAME                  = 4074
-+	SYS_SETRLIMIT                    = 4075
-+	SYS_GETRLIMIT                    = 4076
-+	SYS_GETRUSAGE                    = 4077
-+	SYS_GETTIMEOFDAY                 = 4078
-+	SYS_SETTIMEOFDAY                 = 4079
-+	SYS_GETGROUPS                    = 4080
-+	SYS_SETGROUPS                    = 4081
-+	SYS_RESERVED82                   = 4082
-+	SYS_SYMLINK                      = 4083
-+	SYS_UNUSED84                     = 4084
-+	SYS_READLINK                     = 4085
-+	SYS_USELIB                       = 4086
-+	SYS_SWAPON                       = 4087
-+	SYS_REBOOT                       = 4088
-+	SYS_READDIR                      = 4089
-+	SYS_MMAP                         = 4090
-+	SYS_MUNMAP                       = 4091
-+	SYS_TRUNCATE                     = 4092
-+	SYS_FTRUNCATE                    = 4093
-+	SYS_FCHMOD                       = 4094
-+	SYS_FCHOWN                       = 4095
-+	SYS_GETPRIORITY                  = 4096
-+	SYS_SETPRIORITY                  = 4097
-+	SYS_PROFIL                       = 4098
-+	SYS_STATFS                       = 4099
-+	SYS_FSTATFS                      = 4100
-+	SYS_IOPERM                       = 4101
-+	SYS_SOCKETCALL                   = 4102
-+	SYS_SYSLOG                       = 4103
-+	SYS_SETITIMER                    = 4104
-+	SYS_GETITIMER                    = 4105
-+	SYS_STAT                         = 4106
-+	SYS_LSTAT                        = 4107
-+	SYS_FSTAT                        = 4108
-+	SYS_UNUSED109                    = 4109
-+	SYS_IOPL                         = 4110
-+	SYS_VHANGUP                      = 4111
-+	SYS_IDLE                         = 4112
-+	SYS_VM86                         = 4113
-+	SYS_WAIT4                        = 4114
-+	SYS_SWAPOFF                      = 4115
-+	SYS_SYSINFO                      = 4116
-+	SYS_IPC                          = 4117
-+	SYS_FSYNC                        = 4118
-+	SYS_SIGRETURN                    = 4119
-+	SYS_CLONE                        = 4120
-+	SYS_SETDOMAINNAME                = 4121
-+	SYS_UNAME                        = 4122
-+	SYS_MODIFY_LDT                   = 4123
-+	SYS_ADJTIMEX                     = 4124
-+	SYS_MPROTECT                     = 4125
-+	SYS_SIGPROCMASK                  = 4126
-+	SYS_CREATE_MODULE                = 4127
-+	SYS_INIT_MODULE                  = 4128
-+	SYS_DELETE_MODULE                = 4129
-+	SYS_GET_KERNEL_SYMS              = 4130
-+	SYS_QUOTACTL                     = 4131
-+	SYS_GETPGID                      = 4132
-+	SYS_FCHDIR                       = 4133
-+	SYS_BDFLUSH                      = 4134
-+	SYS_SYSFS                        = 4135
-+	SYS_PERSONALITY                  = 4136
-+	SYS_AFS_SYSCALL                  = 4137
-+	SYS_SETFSUID                     = 4138
-+	SYS_SETFSGID                     = 4139
-+	SYS__LLSEEK                      = 4140
-+	SYS_GETDENTS                     = 4141
-+	SYS__NEWSELECT                   = 4142
-+	SYS_FLOCK                        = 4143
-+	SYS_MSYNC                        = 4144
-+	SYS_READV                        = 4145
-+	SYS_WRITEV                       = 4146
-+	SYS_CACHEFLUSH                   = 4147
-+	SYS_CACHECTL                     = 4148
-+	SYS_SYSMIPS                      = 4149
-+	SYS_UNUSED150                    = 4150
-+	SYS_GETSID                       = 4151
-+	SYS_FDATASYNC                    = 4152
-+	SYS__SYSCTL                      = 4153
-+	SYS_MLOCK                        = 4154
-+	SYS_MUNLOCK                      = 4155
-+	SYS_MLOCKALL                     = 4156
-+	SYS_MUNLOCKALL                   = 4157
-+	SYS_SCHED_SETPARAM               = 4158
-+	SYS_SCHED_GETPARAM               = 4159
-+	SYS_SCHED_SETSCHEDULER           = 4160
-+	SYS_SCHED_GETSCHEDULER           = 4161
-+	SYS_SCHED_YIELD                  = 4162
-+	SYS_SCHED_GET_PRIORITY_MAX       = 4163
-+	SYS_SCHED_GET_PRIORITY_MIN       = 4164
-+	SYS_SCHED_RR_GET_INTERVAL        = 4165
-+	SYS_NANOSLEEP                    = 4166
-+	SYS_MREMAP                       = 4167
-+	SYS_ACCEPT                       = 4168
-+	SYS_BIND                         = 4169
-+	SYS_CONNECT                      = 4170
-+	SYS_GETPEERNAME                  = 4171
-+	SYS_GETSOCKNAME                  = 4172
-+	SYS_GETSOCKOPT                   = 4173
-+	SYS_LISTEN                       = 4174
-+	SYS_RECV                         = 4175
-+	SYS_RECVFROM                     = 4176
-+	SYS_RECVMSG                      = 4177
-+	SYS_SEND                         = 4178
-+	SYS_SENDMSG                      = 4179
-+	SYS_SENDTO                       = 4180
-+	SYS_SETSOCKOPT                   = 4181
-+	SYS_SHUTDOWN                     = 4182
-+	SYS_SOCKET                       = 4183
-+	SYS_SOCKETPAIR                   = 4184
-+	SYS_SETRESUID                    = 4185
-+	SYS_GETRESUID                    = 4186
-+	SYS_QUERY_MODULE                 = 4187
-+	SYS_POLL                         = 4188
-+	SYS_NFSSERVCTL                   = 4189
-+	SYS_SETRESGID                    = 4190
-+	SYS_GETRESGID                    = 4191
-+	SYS_PRCTL                        = 4192
-+	SYS_RT_SIGRETURN                 = 4193
-+	SYS_RT_SIGACTION                 = 4194
-+	SYS_RT_SIGPROCMASK               = 4195
-+	SYS_RT_SIGPENDING                = 4196
-+	SYS_RT_SIGTIMEDWAIT              = 4197
-+	SYS_RT_SIGQUEUEINFO              = 4198
-+	SYS_RT_SIGSUSPEND                = 4199
-+	SYS_PREAD64                      = 4200
-+	SYS_PWRITE64                     = 4201
-+	SYS_CHOWN                        = 4202
-+	SYS_GETCWD                       = 4203
-+	SYS_CAPGET                       = 4204
-+	SYS_CAPSET                       = 4205
-+	SYS_SIGALTSTACK                  = 4206
-+	SYS_SENDFILE                     = 4207
-+	SYS_GETPMSG                      = 4208
-+	SYS_PUTPMSG                      = 4209
-+	SYS_MMAP2                        = 4210
-+	SYS_TRUNCATE64                   = 4211
-+	SYS_FTRUNCATE64                  = 4212
-+	SYS_STAT64                       = 4213
-+	SYS_LSTAT64                      = 4214
-+	SYS_FSTAT64                      = 4215
-+	SYS_PIVOT_ROOT                   = 4216
-+	SYS_MINCORE                      = 4217
-+	SYS_MADVISE                      = 4218
-+	SYS_GETDENTS64                   = 4219
-+	SYS_FCNTL64                      = 4220
-+	SYS_RESERVED221                  = 4221
-+	SYS_GETTID                       = 4222
-+	SYS_READAHEAD                    = 4223
-+	SYS_SETXATTR                     = 4224
-+	SYS_LSETXATTR                    = 4225
-+	SYS_FSETXATTR                    = 4226
-+	SYS_GETXATTR                     = 4227
-+	SYS_LGETXATTR                    = 4228
-+	SYS_FGETXATTR                    = 4229
-+	SYS_LISTXATTR                    = 4230
-+	SYS_LLISTXATTR                   = 4231
-+	SYS_FLISTXATTR                   = 4232
-+	SYS_REMOVEXATTR                  = 4233
-+	SYS_LREMOVEXATTR                 = 4234
-+	SYS_FREMOVEXATTR                 = 4235
-+	SYS_TKILL                        = 4236
-+	SYS_SENDFILE64                   = 4237
-+	SYS_FUTEX                        = 4238
-+	SYS_SCHED_SETAFFINITY            = 4239
-+	SYS_SCHED_GETAFFINITY            = 4240
-+	SYS_IO_SETUP                     = 4241
-+	SYS_IO_DESTROY                   = 4242
-+	SYS_IO_GETEVENTS                 = 4243
-+	SYS_IO_SUBMIT                    = 4244
-+	SYS_IO_CANCEL                    = 4245
-+	SYS_EXIT_GROUP                   = 4246
-+	SYS_LOOKUP_DCOOKIE               = 4247
-+	SYS_EPOLL_CREATE                 = 4248
-+	SYS_EPOLL_CTL                    = 4249
-+	SYS_EPOLL_WAIT                   = 4250
-+	SYS_REMAP_FILE_PAGES             = 4251
-+	SYS_SET_TID_ADDRESS              = 4252
-+	SYS_RESTART_SYSCALL              = 4253
-+	SYS_FADVISE64                    = 4254
-+	SYS_STATFS64                     = 4255
-+	SYS_FSTATFS64                    = 4256
-+	SYS_TIMER_CREATE                 = 4257
-+	SYS_TIMER_SETTIME                = 4258
-+	SYS_TIMER_GETTIME                = 4259
-+	SYS_TIMER_GETOVERRUN             = 4260
-+	SYS_TIMER_DELETE                 = 4261
-+	SYS_CLOCK_SETTIME                = 4262
-+	SYS_CLOCK_GETTIME                = 4263
-+	SYS_CLOCK_GETRES                 = 4264
-+	SYS_CLOCK_NANOSLEEP              = 4265
-+	SYS_TGKILL                       = 4266
-+	SYS_UTIMES                       = 4267
-+	SYS_MBIND                        = 4268
-+	SYS_GET_MEMPOLICY                = 4269
-+	SYS_SET_MEMPOLICY                = 4270
-+	SYS_MQ_OPEN                      = 4271
-+	SYS_MQ_UNLINK                    = 4272
-+	SYS_MQ_TIMEDSEND                 = 4273
-+	SYS_MQ_TIMEDRECEIVE              = 4274
-+	SYS_MQ_NOTIFY                    = 4275
-+	SYS_MQ_GETSETATTR                = 4276
-+	SYS_VSERVER                      = 4277
-+	SYS_WAITID                       = 4278
-+	SYS_ADD_KEY                      = 4280
-+	SYS_REQUEST_KEY                  = 4281
-+	SYS_KEYCTL                       = 4282
-+	SYS_SET_THREAD_AREA              = 4283
-+	SYS_INOTIFY_INIT                 = 4284
-+	SYS_INOTIFY_ADD_WATCH            = 4285
-+	SYS_INOTIFY_RM_WATCH             = 4286
-+	SYS_MIGRATE_PAGES                = 4287
-+	SYS_OPENAT                       = 4288
-+	SYS_MKDIRAT                      = 4289
-+	SYS_MKNODAT                      = 4290
-+	SYS_FCHOWNAT                     = 4291
-+	SYS_FUTIMESAT                    = 4292
-+	SYS_FSTATAT64                    = 4293
-+	SYS_UNLINKAT                     = 4294
-+	SYS_RENAMEAT                     = 4295
-+	SYS_LINKAT                       = 4296
-+	SYS_SYMLINKAT                    = 4297
-+	SYS_READLINKAT                   = 4298
-+	SYS_FCHMODAT                     = 4299
-+	SYS_FACCESSAT                    = 4300
-+	SYS_PSELECT6                     = 4301
-+	SYS_PPOLL                        = 4302
-+	SYS_UNSHARE                      = 4303
-+	SYS_SPLICE                       = 4304
-+	SYS_SYNC_FILE_RANGE              = 4305
-+	SYS_TEE                          = 4306
-+	SYS_VMSPLICE                     = 4307
-+	SYS_MOVE_PAGES                   = 4308
-+	SYS_SET_ROBUST_LIST              = 4309
-+	SYS_GET_ROBUST_LIST              = 4310
-+	SYS_KEXEC_LOAD                   = 4311
-+	SYS_GETCPU                       = 4312
-+	SYS_EPOLL_PWAIT                  = 4313
-+	SYS_IOPRIO_SET                   = 4314
-+	SYS_IOPRIO_GET                   = 4315
-+	SYS_UTIMENSAT                    = 4316
-+	SYS_SIGNALFD                     = 4317
-+	SYS_TIMERFD                      = 4318
-+	SYS_EVENTFD                      = 4319
-+	SYS_FALLOCATE                    = 4320
-+	SYS_TIMERFD_CREATE               = 4321
-+	SYS_TIMERFD_GETTIME              = 4322
-+	SYS_TIMERFD_SETTIME              = 4323
-+	SYS_SIGNALFD4                    = 4324
-+	SYS_EVENTFD2                     = 4325
-+	SYS_EPOLL_CREATE1                = 4326
-+	SYS_DUP3                         = 4327
-+	SYS_PIPE2                        = 4328
-+	SYS_INOTIFY_INIT1                = 4329
-+	SYS_PREADV                       = 4330
-+	SYS_PWRITEV                      = 4331
-+	SYS_RT_TGSIGQUEUEINFO            = 4332
-+	SYS_PERF_EVENT_OPEN              = 4333
-+	SYS_ACCEPT4                      = 4334
-+	SYS_RECVMMSG                     = 4335
-+	SYS_FANOTIFY_INIT                = 4336
-+	SYS_FANOTIFY_MARK                = 4337
-+	SYS_PRLIMIT64                    = 4338
-+	SYS_NAME_TO_HANDLE_AT            = 4339
-+	SYS_OPEN_BY_HANDLE_AT            = 4340
-+	SYS_CLOCK_ADJTIME                = 4341
-+	SYS_SYNCFS                       = 4342
-+	SYS_SENDMMSG                     = 4343
-+	SYS_SETNS                        = 4344
-+	SYS_PROCESS_VM_READV             = 4345
-+	SYS_PROCESS_VM_WRITEV            = 4346
-+	SYS_KCMP                         = 4347
-+	SYS_FINIT_MODULE                 = 4348
-+	SYS_SCHED_SETATTR                = 4349
-+	SYS_SCHED_GETATTR                = 4350
-+	SYS_RENAMEAT2                    = 4351
-+	SYS_SECCOMP                      = 4352
-+	SYS_GETRANDOM                    = 4353
-+	SYS_MEMFD_CREATE                 = 4354
-+	SYS_BPF                          = 4355
-+	SYS_EXECVEAT                     = 4356
-+	SYS_USERFAULTFD                  = 4357
-+	SYS_MEMBARRIER                   = 4358
-+	SYS_MLOCK2                       = 4359
-+	SYS_COPY_FILE_RANGE              = 4360
-+	SYS_PREADV2                      = 4361
-+	SYS_PWRITEV2                     = 4362
-+	SYS_PKEY_MPROTECT                = 4363
-+	SYS_PKEY_ALLOC                   = 4364
-+	SYS_PKEY_FREE                    = 4365
-+	SYS_STATX                        = 4366
-+	SYS_RSEQ                         = 4367
-+	SYS_IO_PGETEVENTS                = 4368
-+	SYS_SEMGET                       = 4393
-+	SYS_SEMCTL                       = 4394
-+	SYS_SHMGET                       = 4395
-+	SYS_SHMCTL                       = 4396
-+	SYS_SHMAT                        = 4397
-+	SYS_SHMDT                        = 4398
-+	SYS_MSGGET                       = 4399
-+	SYS_MSGSND                       = 4400
-+	SYS_MSGRCV                       = 4401
-+	SYS_MSGCTL                       = 4402
-+	SYS_CLOCK_GETTIME64              = 4403
-+	SYS_CLOCK_SETTIME64              = 4404
-+	SYS_CLOCK_ADJTIME64              = 4405
-+	SYS_CLOCK_GETRES_TIME64          = 4406
-+	SYS_CLOCK_NANOSLEEP_TIME64       = 4407
-+	SYS_TIMER_GETTIME64              = 4408
-+	SYS_TIMER_SETTIME64              = 4409
-+	SYS_TIMERFD_GETTIME64            = 4410
-+	SYS_TIMERFD_SETTIME64            = 4411
-+	SYS_UTIMENSAT_TIME64             = 4412
-+	SYS_PSELECT6_TIME64              = 4413
-+	SYS_PPOLL_TIME64                 = 4414
-+	SYS_IO_PGETEVENTS_TIME64         = 4416
-+	SYS_RECVMMSG_TIME64              = 4417
-+	SYS_MQ_TIMEDSEND_TIME64          = 4418
-+	SYS_MQ_TIMEDRECEIVE_TIME64       = 4419
-+	SYS_SEMTIMEDOP_TIME64            = 4420
-+	SYS_RT_SIGTIMEDWAIT_TIME64       = 4421
-+	SYS_FUTEX_TIME64                 = 4422
-+	SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423
-+	SYS_PIDFD_SEND_SIGNAL            = 4424
-+	SYS_IO_URING_SETUP               = 4425
-+	SYS_IO_URING_ENTER               = 4426
-+	SYS_IO_URING_REGISTER            = 4427
-+	SYS_OPEN_TREE                    = 4428
-+	SYS_MOVE_MOUNT                   = 4429
-+	SYS_FSOPEN                       = 4430
-+	SYS_FSCONFIG                     = 4431
-+	SYS_FSMOUNT                      = 4432
-+	SYS_FSPICK                       = 4433
-+	SYS_PIDFD_OPEN                   = 4434
-+	SYS_CLONE3                       = 4435
-+	SYS_OPENAT2                      = 4437
-+	SYS_PIDFD_GETFD                  = 4438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-index 09db9596..4e525118 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build mips64,linux
-@@ -331,4 +331,21 @@ const (
- 	SYS_PKEY_MPROTECT          = 5323
- 	SYS_PKEY_ALLOC             = 5324
- 	SYS_PKEY_FREE              = 5325
-+	SYS_STATX                  = 5326
-+	SYS_RSEQ                   = 5327
-+	SYS_IO_PGETEVENTS          = 5328
-+	SYS_PIDFD_SEND_SIGNAL      = 5424
-+	SYS_IO_URING_SETUP         = 5425
-+	SYS_IO_URING_ENTER         = 5426
-+	SYS_IO_URING_REGISTER      = 5427
-+	SYS_OPEN_TREE              = 5428
-+	SYS_MOVE_MOUNT             = 5429
-+	SYS_FSOPEN                 = 5430
-+	SYS_FSCONFIG               = 5431
-+	SYS_FSMOUNT                = 5432
-+	SYS_FSPICK                 = 5433
-+	SYS_PIDFD_OPEN             = 5434
-+	SYS_CLONE3                 = 5435
-+	SYS_OPENAT2                = 5437
-+	SYS_PIDFD_GETFD            = 5438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-index d1b872a0..4d9aa300 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build mips64le,linux
-@@ -331,4 +331,21 @@ const (
- 	SYS_PKEY_MPROTECT          = 5323
- 	SYS_PKEY_ALLOC             = 5324
- 	SYS_PKEY_FREE              = 5325
-+	SYS_STATX                  = 5326
-+	SYS_RSEQ                   = 5327
-+	SYS_IO_PGETEVENTS          = 5328
-+	SYS_PIDFD_SEND_SIGNAL      = 5424
-+	SYS_IO_URING_SETUP         = 5425
-+	SYS_IO_URING_ENTER         = 5426
-+	SYS_IO_URING_REGISTER      = 5427
-+	SYS_OPEN_TREE              = 5428
-+	SYS_MOVE_MOUNT             = 5429
-+	SYS_FSOPEN                 = 5430
-+	SYS_FSCONFIG               = 5431
-+	SYS_FSMOUNT                = 5432
-+	SYS_FSPICK                 = 5433
-+	SYS_PIDFD_OPEN             = 5434
-+	SYS_CLONE3                 = 5435
-+	SYS_OPENAT2                = 5437
-+	SYS_PIDFD_GETFD            = 5438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-index 82ba20f2..64af0707 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build mipsle,linux
-@@ -6,369 +6,416 @@
- package unix
- 
- const (
--	SYS_SYSCALL                = 4000
--	SYS_EXIT                   = 4001
--	SYS_FORK                   = 4002
--	SYS_READ                   = 4003
--	SYS_WRITE                  = 4004
--	SYS_OPEN                   = 4005
--	SYS_CLOSE                  = 4006
--	SYS_WAITPID                = 4007
--	SYS_CREAT                  = 4008
--	SYS_LINK                   = 4009
--	SYS_UNLINK                 = 4010
--	SYS_EXECVE                 = 4011
--	SYS_CHDIR                  = 4012
--	SYS_TIME                   = 4013
--	SYS_MKNOD                  = 4014
--	SYS_CHMOD                  = 4015
--	SYS_LCHOWN                 = 4016
--	SYS_BREAK                  = 4017
--	SYS_UNUSED18               = 4018
--	SYS_LSEEK                  = 4019
--	SYS_GETPID                 = 4020
--	SYS_MOUNT                  = 4021
--	SYS_UMOUNT                 = 4022
--	SYS_SETUID                 = 4023
--	SYS_GETUID                 = 4024
--	SYS_STIME                  = 4025
--	SYS_PTRACE                 = 4026
--	SYS_ALARM                  = 4027
--	SYS_UNUSED28               = 4028
--	SYS_PAUSE                  = 4029
--	SYS_UTIME                  = 4030
--	SYS_STTY                   = 4031
--	SYS_GTTY                   = 4032
--	SYS_ACCESS                 = 4033
--	SYS_NICE                   = 4034
--	SYS_FTIME                  = 4035
--	SYS_SYNC                   = 4036
--	SYS_KILL                   = 4037
--	SYS_RENAME                 = 4038
--	SYS_MKDIR                  = 4039
--	SYS_RMDIR                  = 4040
--	SYS_DUP                    = 4041
--	SYS_PIPE                   = 4042
--	SYS_TIMES                  = 4043
--	SYS_PROF                   = 4044
--	SYS_BRK                    = 4045
--	SYS_SETGID                 = 4046
--	SYS_GETGID                 = 4047
--	SYS_SIGNAL                 = 4048
--	SYS_GETEUID                = 4049
--	SYS_GETEGID                = 4050
--	SYS_ACCT                   = 4051
--	SYS_UMOUNT2                = 4052
--	SYS_LOCK                   = 4053
--	SYS_IOCTL                  = 4054
--	SYS_FCNTL                  = 4055
--	SYS_MPX                    = 4056
--	SYS_SETPGID                = 4057
--	SYS_ULIMIT                 = 4058
--	SYS_UNUSED59               = 4059
--	SYS_UMASK                  = 4060
--	SYS_CHROOT                 = 4061
--	SYS_USTAT                  = 4062
--	SYS_DUP2                   = 4063
--	SYS_GETPPID                = 4064
--	SYS_GETPGRP                = 4065
--	SYS_SETSID                 = 4066
--	SYS_SIGACTION              = 4067
--	SYS_SGETMASK               = 4068
--	SYS_SSETMASK               = 4069
--	SYS_SETREUID               = 4070
--	SYS_SETREGID               = 4071
--	SYS_SIGSUSPEND             = 4072
--	SYS_SIGPENDING             = 4073
--	SYS_SETHOSTNAME            = 4074
--	SYS_SETRLIMIT              = 4075
--	SYS_GETRLIMIT              = 4076
--	SYS_GETRUSAGE              = 4077
--	SYS_GETTIMEOFDAY           = 4078
--	SYS_SETTIMEOFDAY           = 4079
--	SYS_GETGROUPS              = 4080
--	SYS_SETGROUPS              = 4081
--	SYS_RESERVED82             = 4082
--	SYS_SYMLINK                = 4083
--	SYS_UNUSED84               = 4084
--	SYS_READLINK               = 4085
--	SYS_USELIB                 = 4086
--	SYS_SWAPON                 = 4087
--	SYS_REBOOT                 = 4088
--	SYS_READDIR                = 4089
--	SYS_MMAP                   = 4090
--	SYS_MUNMAP                 = 4091
--	SYS_TRUNCATE               = 4092
--	SYS_FTRUNCATE              = 4093
--	SYS_FCHMOD                 = 4094
--	SYS_FCHOWN                 = 4095
--	SYS_GETPRIORITY            = 4096
--	SYS_SETPRIORITY            = 4097
--	SYS_PROFIL                 = 4098
--	SYS_STATFS                 = 4099
--	SYS_FSTATFS                = 4100
--	SYS_IOPERM                 = 4101
--	SYS_SOCKETCALL             = 4102
--	SYS_SYSLOG                 = 4103
--	SYS_SETITIMER              = 4104
--	SYS_GETITIMER              = 4105
--	SYS_STAT                   = 4106
--	SYS_LSTAT                  = 4107
--	SYS_FSTAT                  = 4108
--	SYS_UNUSED109              = 4109
--	SYS_IOPL                   = 4110
--	SYS_VHANGUP                = 4111
--	SYS_IDLE                   = 4112
--	SYS_VM86                   = 4113
--	SYS_WAIT4                  = 4114
--	SYS_SWAPOFF                = 4115
--	SYS_SYSINFO                = 4116
--	SYS_IPC                    = 4117
--	SYS_FSYNC                  = 4118
--	SYS_SIGRETURN              = 4119
--	SYS_CLONE                  = 4120
--	SYS_SETDOMAINNAME          = 4121
--	SYS_UNAME                  = 4122
--	SYS_MODIFY_LDT             = 4123
--	SYS_ADJTIMEX               = 4124
--	SYS_MPROTECT               = 4125
--	SYS_SIGPROCMASK            = 4126
--	SYS_CREATE_MODULE          = 4127
--	SYS_INIT_MODULE            = 4128
--	SYS_DELETE_MODULE          = 4129
--	SYS_GET_KERNEL_SYMS        = 4130
--	SYS_QUOTACTL               = 4131
--	SYS_GETPGID                = 4132
--	SYS_FCHDIR                 = 4133
--	SYS_BDFLUSH                = 4134
--	SYS_SYSFS                  = 4135
--	SYS_PERSONALITY            = 4136
--	SYS_AFS_SYSCALL            = 4137
--	SYS_SETFSUID               = 4138
--	SYS_SETFSGID               = 4139
--	SYS__LLSEEK                = 4140
--	SYS_GETDENTS               = 4141
--	SYS__NEWSELECT             = 4142
--	SYS_FLOCK                  = 4143
--	SYS_MSYNC                  = 4144
--	SYS_READV                  = 4145
--	SYS_WRITEV                 = 4146
--	SYS_CACHEFLUSH             = 4147
--	SYS_CACHECTL               = 4148
--	SYS_SYSMIPS                = 4149
--	SYS_UNUSED150              = 4150
--	SYS_GETSID                 = 4151
--	SYS_FDATASYNC              = 4152
--	SYS__SYSCTL                = 4153
--	SYS_MLOCK                  = 4154
--	SYS_MUNLOCK                = 4155
--	SYS_MLOCKALL               = 4156
--	SYS_MUNLOCKALL             = 4157
--	SYS_SCHED_SETPARAM         = 4158
--	SYS_SCHED_GETPARAM         = 4159
--	SYS_SCHED_SETSCHEDULER     = 4160
--	SYS_SCHED_GETSCHEDULER     = 4161
--	SYS_SCHED_YIELD            = 4162
--	SYS_SCHED_GET_PRIORITY_MAX = 4163
--	SYS_SCHED_GET_PRIORITY_MIN = 4164
--	SYS_SCHED_RR_GET_INTERVAL  = 4165
--	SYS_NANOSLEEP              = 4166
--	SYS_MREMAP                 = 4167
--	SYS_ACCEPT                 = 4168
--	SYS_BIND                   = 4169
--	SYS_CONNECT                = 4170
--	SYS_GETPEERNAME            = 4171
--	SYS_GETSOCKNAME            = 4172
--	SYS_GETSOCKOPT             = 4173
--	SYS_LISTEN                 = 4174
--	SYS_RECV                   = 4175
--	SYS_RECVFROM               = 4176
--	SYS_RECVMSG                = 4177
--	SYS_SEND                   = 4178
--	SYS_SENDMSG                = 4179
--	SYS_SENDTO                 = 4180
--	SYS_SETSOCKOPT             = 4181
--	SYS_SHUTDOWN               = 4182
--	SYS_SOCKET                 = 4183
--	SYS_SOCKETPAIR             = 4184
--	SYS_SETRESUID              = 4185
--	SYS_GETRESUID              = 4186
--	SYS_QUERY_MODULE           = 4187
--	SYS_POLL                   = 4188
--	SYS_NFSSERVCTL             = 4189
--	SYS_SETRESGID              = 4190
--	SYS_GETRESGID              = 4191
--	SYS_PRCTL                  = 4192
--	SYS_RT_SIGRETURN           = 4193
--	SYS_RT_SIGACTION           = 4194
--	SYS_RT_SIGPROCMASK         = 4195
--	SYS_RT_SIGPENDING          = 4196
--	SYS_RT_SIGTIMEDWAIT        = 4197
--	SYS_RT_SIGQUEUEINFO        = 4198
--	SYS_RT_SIGSUSPEND          = 4199
--	SYS_PREAD64                = 4200
--	SYS_PWRITE64               = 4201
--	SYS_CHOWN                  = 4202
--	SYS_GETCWD                 = 4203
--	SYS_CAPGET                 = 4204
--	SYS_CAPSET                 = 4205
--	SYS_SIGALTSTACK            = 4206
--	SYS_SENDFILE               = 4207
--	SYS_GETPMSG                = 4208
--	SYS_PUTPMSG                = 4209
--	SYS_MMAP2                  = 4210
--	SYS_TRUNCATE64             = 4211
--	SYS_FTRUNCATE64            = 4212
--	SYS_STAT64                 = 4213
--	SYS_LSTAT64                = 4214
--	SYS_FSTAT64                = 4215
--	SYS_PIVOT_ROOT             = 4216
--	SYS_MINCORE                = 4217
--	SYS_MADVISE                = 4218
--	SYS_GETDENTS64             = 4219
--	SYS_FCNTL64                = 4220
--	SYS_RESERVED221            = 4221
--	SYS_GETTID                 = 4222
--	SYS_READAHEAD              = 4223
--	SYS_SETXATTR               = 4224
--	SYS_LSETXATTR              = 4225
--	SYS_FSETXATTR              = 4226
--	SYS_GETXATTR               = 4227
--	SYS_LGETXATTR              = 4228
--	SYS_FGETXATTR              = 4229
--	SYS_LISTXATTR              = 4230
--	SYS_LLISTXATTR             = 4231
--	SYS_FLISTXATTR             = 4232
--	SYS_REMOVEXATTR            = 4233
--	SYS_LREMOVEXATTR           = 4234
--	SYS_FREMOVEXATTR           = 4235
--	SYS_TKILL                  = 4236
--	SYS_SENDFILE64             = 4237
--	SYS_FUTEX                  = 4238
--	SYS_SCHED_SETAFFINITY      = 4239
--	SYS_SCHED_GETAFFINITY      = 4240
--	SYS_IO_SETUP               = 4241
--	SYS_IO_DESTROY             = 4242
--	SYS_IO_GETEVENTS           = 4243
--	SYS_IO_SUBMIT              = 4244
--	SYS_IO_CANCEL              = 4245
--	SYS_EXIT_GROUP             = 4246
--	SYS_LOOKUP_DCOOKIE         = 4247
--	SYS_EPOLL_CREATE           = 4248
--	SYS_EPOLL_CTL              = 4249
--	SYS_EPOLL_WAIT             = 4250
--	SYS_REMAP_FILE_PAGES       = 4251
--	SYS_SET_TID_ADDRESS        = 4252
--	SYS_RESTART_SYSCALL        = 4253
--	SYS_FADVISE64              = 4254
--	SYS_STATFS64               = 4255
--	SYS_FSTATFS64              = 4256
--	SYS_TIMER_CREATE           = 4257
--	SYS_TIMER_SETTIME          = 4258
--	SYS_TIMER_GETTIME          = 4259
--	SYS_TIMER_GETOVERRUN       = 4260
--	SYS_TIMER_DELETE           = 4261
--	SYS_CLOCK_SETTIME          = 4262
--	SYS_CLOCK_GETTIME          = 4263
--	SYS_CLOCK_GETRES           = 4264
--	SYS_CLOCK_NANOSLEEP        = 4265
--	SYS_TGKILL                 = 4266
--	SYS_UTIMES                 = 4267
--	SYS_MBIND                  = 4268
--	SYS_GET_MEMPOLICY          = 4269
--	SYS_SET_MEMPOLICY          = 4270
--	SYS_MQ_OPEN                = 4271
--	SYS_MQ_UNLINK              = 4272
--	SYS_MQ_TIMEDSEND           = 4273
--	SYS_MQ_TIMEDRECEIVE        = 4274
--	SYS_MQ_NOTIFY              = 4275
--	SYS_MQ_GETSETATTR          = 4276
--	SYS_VSERVER                = 4277
--	SYS_WAITID                 = 4278
--	SYS_ADD_KEY                = 4280
--	SYS_REQUEST_KEY            = 4281
--	SYS_KEYCTL                 = 4282
--	SYS_SET_THREAD_AREA        = 4283
--	SYS_INOTIFY_INIT           = 4284
--	SYS_INOTIFY_ADD_WATCH      = 4285
--	SYS_INOTIFY_RM_WATCH       = 4286
--	SYS_MIGRATE_PAGES          = 4287
--	SYS_OPENAT                 = 4288
--	SYS_MKDIRAT                = 4289
--	SYS_MKNODAT                = 4290
--	SYS_FCHOWNAT               = 4291
--	SYS_FUTIMESAT              = 4292
--	SYS_FSTATAT64              = 4293
--	SYS_UNLINKAT               = 4294
--	SYS_RENAMEAT               = 4295
--	SYS_LINKAT                 = 4296
--	SYS_SYMLINKAT              = 4297
--	SYS_READLINKAT             = 4298
--	SYS_FCHMODAT               = 4299
--	SYS_FACCESSAT              = 4300
--	SYS_PSELECT6               = 4301
--	SYS_PPOLL                  = 4302
--	SYS_UNSHARE                = 4303
--	SYS_SPLICE                 = 4304
--	SYS_SYNC_FILE_RANGE        = 4305
--	SYS_TEE                    = 4306
--	SYS_VMSPLICE               = 4307
--	SYS_MOVE_PAGES             = 4308
--	SYS_SET_ROBUST_LIST        = 4309
--	SYS_GET_ROBUST_LIST        = 4310
--	SYS_KEXEC_LOAD             = 4311
--	SYS_GETCPU                 = 4312
--	SYS_EPOLL_PWAIT            = 4313
--	SYS_IOPRIO_SET             = 4314
--	SYS_IOPRIO_GET             = 4315
--	SYS_UTIMENSAT              = 4316
--	SYS_SIGNALFD               = 4317
--	SYS_TIMERFD                = 4318
--	SYS_EVENTFD                = 4319
--	SYS_FALLOCATE              = 4320
--	SYS_TIMERFD_CREATE         = 4321
--	SYS_TIMERFD_GETTIME        = 4322
--	SYS_TIMERFD_SETTIME        = 4323
--	SYS_SIGNALFD4              = 4324
--	SYS_EVENTFD2               = 4325
--	SYS_EPOLL_CREATE1          = 4326
--	SYS_DUP3                   = 4327
--	SYS_PIPE2                  = 4328
--	SYS_INOTIFY_INIT1          = 4329
--	SYS_PREADV                 = 4330
--	SYS_PWRITEV                = 4331
--	SYS_RT_TGSIGQUEUEINFO      = 4332
--	SYS_PERF_EVENT_OPEN        = 4333
--	SYS_ACCEPT4                = 4334
--	SYS_RECVMMSG               = 4335
--	SYS_FANOTIFY_INIT          = 4336
--	SYS_FANOTIFY_MARK          = 4337
--	SYS_PRLIMIT64              = 4338
--	SYS_NAME_TO_HANDLE_AT      = 4339
--	SYS_OPEN_BY_HANDLE_AT      = 4340
--	SYS_CLOCK_ADJTIME          = 4341
--	SYS_SYNCFS                 = 4342
--	SYS_SENDMMSG               = 4343
--	SYS_SETNS                  = 4344
--	SYS_PROCESS_VM_READV       = 4345
--	SYS_PROCESS_VM_WRITEV      = 4346
--	SYS_KCMP                   = 4347
--	SYS_FINIT_MODULE           = 4348
--	SYS_SCHED_SETATTR          = 4349
--	SYS_SCHED_GETATTR          = 4350
--	SYS_RENAMEAT2              = 4351
--	SYS_SECCOMP                = 4352
--	SYS_GETRANDOM              = 4353
--	SYS_MEMFD_CREATE           = 4354
--	SYS_BPF                    = 4355
--	SYS_EXECVEAT               = 4356
--	SYS_USERFAULTFD            = 4357
--	SYS_MEMBARRIER             = 4358
--	SYS_MLOCK2                 = 4359
--	SYS_COPY_FILE_RANGE        = 4360
--	SYS_PREADV2                = 4361
--	SYS_PWRITEV2               = 4362
--	SYS_PKEY_MPROTECT          = 4363
--	SYS_PKEY_ALLOC             = 4364
--	SYS_PKEY_FREE              = 4365
-+	SYS_SYSCALL                      = 4000
-+	SYS_EXIT                         = 4001
-+	SYS_FORK                         = 4002
-+	SYS_READ                         = 4003
-+	SYS_WRITE                        = 4004
-+	SYS_OPEN                         = 4005
-+	SYS_CLOSE                        = 4006
-+	SYS_WAITPID                      = 4007
-+	SYS_CREAT                        = 4008
-+	SYS_LINK                         = 4009
-+	SYS_UNLINK                       = 4010
-+	SYS_EXECVE                       = 4011
-+	SYS_CHDIR                        = 4012
-+	SYS_TIME                         = 4013
-+	SYS_MKNOD                        = 4014
-+	SYS_CHMOD                        = 4015
-+	SYS_LCHOWN                       = 4016
-+	SYS_BREAK                        = 4017
-+	SYS_UNUSED18                     = 4018
-+	SYS_LSEEK                        = 4019
-+	SYS_GETPID                       = 4020
-+	SYS_MOUNT                        = 4021
-+	SYS_UMOUNT                       = 4022
-+	SYS_SETUID                       = 4023
-+	SYS_GETUID                       = 4024
-+	SYS_STIME                        = 4025
-+	SYS_PTRACE                       = 4026
-+	SYS_ALARM                        = 4027
-+	SYS_UNUSED28                     = 4028
-+	SYS_PAUSE                        = 4029
-+	SYS_UTIME                        = 4030
-+	SYS_STTY                         = 4031
-+	SYS_GTTY                         = 4032
-+	SYS_ACCESS                       = 4033
-+	SYS_NICE                         = 4034
-+	SYS_FTIME                        = 4035
-+	SYS_SYNC                         = 4036
-+	SYS_KILL                         = 4037
-+	SYS_RENAME                       = 4038
-+	SYS_MKDIR                        = 4039
-+	SYS_RMDIR                        = 4040
-+	SYS_DUP                          = 4041
-+	SYS_PIPE                         = 4042
-+	SYS_TIMES                        = 4043
-+	SYS_PROF                         = 4044
-+	SYS_BRK                          = 4045
-+	SYS_SETGID                       = 4046
-+	SYS_GETGID                       = 4047
-+	SYS_SIGNAL                       = 4048
-+	SYS_GETEUID                      = 4049
-+	SYS_GETEGID                      = 4050
-+	SYS_ACCT                         = 4051
-+	SYS_UMOUNT2                      = 4052
-+	SYS_LOCK                         = 4053
-+	SYS_IOCTL                        = 4054
-+	SYS_FCNTL                        = 4055
-+	SYS_MPX                          = 4056
-+	SYS_SETPGID                      = 4057
-+	SYS_ULIMIT                       = 4058
-+	SYS_UNUSED59                     = 4059
-+	SYS_UMASK                        = 4060
-+	SYS_CHROOT                       = 4061
-+	SYS_USTAT                        = 4062
-+	SYS_DUP2                         = 4063
-+	SYS_GETPPID                      = 4064
-+	SYS_GETPGRP                      = 4065
-+	SYS_SETSID                       = 4066
-+	SYS_SIGACTION                    = 4067
-+	SYS_SGETMASK                     = 4068
-+	SYS_SSETMASK                     = 4069
-+	SYS_SETREUID                     = 4070
-+	SYS_SETREGID                     = 4071
-+	SYS_SIGSUSPEND                   = 4072
-+	SYS_SIGPENDING                   = 4073
-+	SYS_SETHOSTNAME                  = 4074
-+	SYS_SETRLIMIT                    = 4075
-+	SYS_GETRLIMIT                    = 4076
-+	SYS_GETRUSAGE                    = 4077
-+	SYS_GETTIMEOFDAY                 = 4078
-+	SYS_SETTIMEOFDAY                 = 4079
-+	SYS_GETGROUPS                    = 4080
-+	SYS_SETGROUPS                    = 4081
-+	SYS_RESERVED82                   = 4082
-+	SYS_SYMLINK                      = 4083
-+	SYS_UNUSED84                     = 4084
-+	SYS_READLINK                     = 4085
-+	SYS_USELIB                       = 4086
-+	SYS_SWAPON                       = 4087
-+	SYS_REBOOT                       = 4088
-+	SYS_READDIR                      = 4089
-+	SYS_MMAP                         = 4090
-+	SYS_MUNMAP                       = 4091
-+	SYS_TRUNCATE                     = 4092
-+	SYS_FTRUNCATE                    = 4093
-+	SYS_FCHMOD                       = 4094
-+	SYS_FCHOWN                       = 4095
-+	SYS_GETPRIORITY                  = 4096
-+	SYS_SETPRIORITY                  = 4097
-+	SYS_PROFIL                       = 4098
-+	SYS_STATFS                       = 4099
-+	SYS_FSTATFS                      = 4100
-+	SYS_IOPERM                       = 4101
-+	SYS_SOCKETCALL                   = 4102
-+	SYS_SYSLOG                       = 4103
-+	SYS_SETITIMER                    = 4104
-+	SYS_GETITIMER                    = 4105
-+	SYS_STAT                         = 4106
-+	SYS_LSTAT                        = 4107
-+	SYS_FSTAT                        = 4108
-+	SYS_UNUSED109                    = 4109
-+	SYS_IOPL                         = 4110
-+	SYS_VHANGUP                      = 4111
-+	SYS_IDLE                         = 4112
-+	SYS_VM86                         = 4113
-+	SYS_WAIT4                        = 4114
-+	SYS_SWAPOFF                      = 4115
-+	SYS_SYSINFO                      = 4116
-+	SYS_IPC                          = 4117
-+	SYS_FSYNC                        = 4118
-+	SYS_SIGRETURN                    = 4119
-+	SYS_CLONE                        = 4120
-+	SYS_SETDOMAINNAME                = 4121
-+	SYS_UNAME                        = 4122
-+	SYS_MODIFY_LDT                   = 4123
-+	SYS_ADJTIMEX                     = 4124
-+	SYS_MPROTECT                     = 4125
-+	SYS_SIGPROCMASK                  = 4126
-+	SYS_CREATE_MODULE                = 4127
-+	SYS_INIT_MODULE                  = 4128
-+	SYS_DELETE_MODULE                = 4129
-+	SYS_GET_KERNEL_SYMS              = 4130
-+	SYS_QUOTACTL                     = 4131
-+	SYS_GETPGID                      = 4132
-+	SYS_FCHDIR                       = 4133
-+	SYS_BDFLUSH                      = 4134
-+	SYS_SYSFS                        = 4135
-+	SYS_PERSONALITY                  = 4136
-+	SYS_AFS_SYSCALL                  = 4137
-+	SYS_SETFSUID                     = 4138
-+	SYS_SETFSGID                     = 4139
-+	SYS__LLSEEK                      = 4140
-+	SYS_GETDENTS                     = 4141
-+	SYS__NEWSELECT                   = 4142
-+	SYS_FLOCK                        = 4143
-+	SYS_MSYNC                        = 4144
-+	SYS_READV                        = 4145
-+	SYS_WRITEV                       = 4146
-+	SYS_CACHEFLUSH                   = 4147
-+	SYS_CACHECTL                     = 4148
-+	SYS_SYSMIPS                      = 4149
-+	SYS_UNUSED150                    = 4150
-+	SYS_GETSID                       = 4151
-+	SYS_FDATASYNC                    = 4152
-+	SYS__SYSCTL                      = 4153
-+	SYS_MLOCK                        = 4154
-+	SYS_MUNLOCK                      = 4155
-+	SYS_MLOCKALL                     = 4156
-+	SYS_MUNLOCKALL                   = 4157
-+	SYS_SCHED_SETPARAM               = 4158
-+	SYS_SCHED_GETPARAM               = 4159
-+	SYS_SCHED_SETSCHEDULER           = 4160
-+	SYS_SCHED_GETSCHEDULER           = 4161
-+	SYS_SCHED_YIELD                  = 4162
-+	SYS_SCHED_GET_PRIORITY_MAX       = 4163
-+	SYS_SCHED_GET_PRIORITY_MIN       = 4164
-+	SYS_SCHED_RR_GET_INTERVAL        = 4165
-+	SYS_NANOSLEEP                    = 4166
-+	SYS_MREMAP                       = 4167
-+	SYS_ACCEPT                       = 4168
-+	SYS_BIND                         = 4169
-+	SYS_CONNECT                      = 4170
-+	SYS_GETPEERNAME                  = 4171
-+	SYS_GETSOCKNAME                  = 4172
-+	SYS_GETSOCKOPT                   = 4173
-+	SYS_LISTEN                       = 4174
-+	SYS_RECV                         = 4175
-+	SYS_RECVFROM                     = 4176
-+	SYS_RECVMSG                      = 4177
-+	SYS_SEND                         = 4178
-+	SYS_SENDMSG                      = 4179
-+	SYS_SENDTO                       = 4180
-+	SYS_SETSOCKOPT                   = 4181
-+	SYS_SHUTDOWN                     = 4182
-+	SYS_SOCKET                       = 4183
-+	SYS_SOCKETPAIR                   = 4184
-+	SYS_SETRESUID                    = 4185
-+	SYS_GETRESUID                    = 4186
-+	SYS_QUERY_MODULE                 = 4187
-+	SYS_POLL                         = 4188
-+	SYS_NFSSERVCTL                   = 4189
-+	SYS_SETRESGID                    = 4190
-+	SYS_GETRESGID                    = 4191
-+	SYS_PRCTL                        = 4192
-+	SYS_RT_SIGRETURN                 = 4193
-+	SYS_RT_SIGACTION                 = 4194
-+	SYS_RT_SIGPROCMASK               = 4195
-+	SYS_RT_SIGPENDING                = 4196
-+	SYS_RT_SIGTIMEDWAIT              = 4197
-+	SYS_RT_SIGQUEUEINFO              = 4198
-+	SYS_RT_SIGSUSPEND                = 4199
-+	SYS_PREAD64                      = 4200
-+	SYS_PWRITE64                     = 4201
-+	SYS_CHOWN                        = 4202
-+	SYS_GETCWD                       = 4203
-+	SYS_CAPGET                       = 4204
-+	SYS_CAPSET                       = 4205
-+	SYS_SIGALTSTACK                  = 4206
-+	SYS_SENDFILE                     = 4207
-+	SYS_GETPMSG                      = 4208
-+	SYS_PUTPMSG                      = 4209
-+	SYS_MMAP2                        = 4210
-+	SYS_TRUNCATE64                   = 4211
-+	SYS_FTRUNCATE64                  = 4212
-+	SYS_STAT64                       = 4213
-+	SYS_LSTAT64                      = 4214
-+	SYS_FSTAT64                      = 4215
-+	SYS_PIVOT_ROOT                   = 4216
-+	SYS_MINCORE                      = 4217
-+	SYS_MADVISE                      = 4218
-+	SYS_GETDENTS64                   = 4219
-+	SYS_FCNTL64                      = 4220
-+	SYS_RESERVED221                  = 4221
-+	SYS_GETTID                       = 4222
-+	SYS_READAHEAD                    = 4223
-+	SYS_SETXATTR                     = 4224
-+	SYS_LSETXATTR                    = 4225
-+	SYS_FSETXATTR                    = 4226
-+	SYS_GETXATTR                     = 4227
-+	SYS_LGETXATTR                    = 4228
-+	SYS_FGETXATTR                    = 4229
-+	SYS_LISTXATTR                    = 4230
-+	SYS_LLISTXATTR                   = 4231
-+	SYS_FLISTXATTR                   = 4232
-+	SYS_REMOVEXATTR                  = 4233
-+	SYS_LREMOVEXATTR                 = 4234
-+	SYS_FREMOVEXATTR                 = 4235
-+	SYS_TKILL                        = 4236
-+	SYS_SENDFILE64                   = 4237
-+	SYS_FUTEX                        = 4238
-+	SYS_SCHED_SETAFFINITY            = 4239
-+	SYS_SCHED_GETAFFINITY            = 4240
-+	SYS_IO_SETUP                     = 4241
-+	SYS_IO_DESTROY                   = 4242
-+	SYS_IO_GETEVENTS                 = 4243
-+	SYS_IO_SUBMIT                    = 4244
-+	SYS_IO_CANCEL                    = 4245
-+	SYS_EXIT_GROUP                   = 4246
-+	SYS_LOOKUP_DCOOKIE               = 4247
-+	SYS_EPOLL_CREATE                 = 4248
-+	SYS_EPOLL_CTL                    = 4249
-+	SYS_EPOLL_WAIT                   = 4250
-+	SYS_REMAP_FILE_PAGES             = 4251
-+	SYS_SET_TID_ADDRESS              = 4252
-+	SYS_RESTART_SYSCALL              = 4253
-+	SYS_FADVISE64                    = 4254
-+	SYS_STATFS64                     = 4255
-+	SYS_FSTATFS64                    = 4256
-+	SYS_TIMER_CREATE                 = 4257
-+	SYS_TIMER_SETTIME                = 4258
-+	SYS_TIMER_GETTIME                = 4259
-+	SYS_TIMER_GETOVERRUN             = 4260
-+	SYS_TIMER_DELETE                 = 4261
-+	SYS_CLOCK_SETTIME                = 4262
-+	SYS_CLOCK_GETTIME                = 4263
-+	SYS_CLOCK_GETRES                 = 4264
-+	SYS_CLOCK_NANOSLEEP              = 4265
-+	SYS_TGKILL                       = 4266
-+	SYS_UTIMES                       = 4267
-+	SYS_MBIND                        = 4268
-+	SYS_GET_MEMPOLICY                = 4269
-+	SYS_SET_MEMPOLICY                = 4270
-+	SYS_MQ_OPEN                      = 4271
-+	SYS_MQ_UNLINK                    = 4272
-+	SYS_MQ_TIMEDSEND                 = 4273
-+	SYS_MQ_TIMEDRECEIVE              = 4274
-+	SYS_MQ_NOTIFY                    = 4275
-+	SYS_MQ_GETSETATTR                = 4276
-+	SYS_VSERVER                      = 4277
-+	SYS_WAITID                       = 4278
-+	SYS_ADD_KEY                      = 4280
-+	SYS_REQUEST_KEY                  = 4281
-+	SYS_KEYCTL                       = 4282
-+	SYS_SET_THREAD_AREA              = 4283
-+	SYS_INOTIFY_INIT                 = 4284
-+	SYS_INOTIFY_ADD_WATCH            = 4285
-+	SYS_INOTIFY_RM_WATCH             = 4286
-+	SYS_MIGRATE_PAGES                = 4287
-+	SYS_OPENAT                       = 4288
-+	SYS_MKDIRAT                      = 4289
-+	SYS_MKNODAT                      = 4290
-+	SYS_FCHOWNAT                     = 4291
-+	SYS_FUTIMESAT                    = 4292
-+	SYS_FSTATAT64                    = 4293
-+	SYS_UNLINKAT                     = 4294
-+	SYS_RENAMEAT                     = 4295
-+	SYS_LINKAT                       = 4296
-+	SYS_SYMLINKAT                    = 4297
-+	SYS_READLINKAT                   = 4298
-+	SYS_FCHMODAT                     = 4299
-+	SYS_FACCESSAT                    = 4300
-+	SYS_PSELECT6                     = 4301
-+	SYS_PPOLL                        = 4302
-+	SYS_UNSHARE                      = 4303
-+	SYS_SPLICE                       = 4304
-+	SYS_SYNC_FILE_RANGE              = 4305
-+	SYS_TEE                          = 4306
-+	SYS_VMSPLICE                     = 4307
-+	SYS_MOVE_PAGES                   = 4308
-+	SYS_SET_ROBUST_LIST              = 4309
-+	SYS_GET_ROBUST_LIST              = 4310
-+	SYS_KEXEC_LOAD                   = 4311
-+	SYS_GETCPU                       = 4312
-+	SYS_EPOLL_PWAIT                  = 4313
-+	SYS_IOPRIO_SET                   = 4314
-+	SYS_IOPRIO_GET                   = 4315
-+	SYS_UTIMENSAT                    = 4316
-+	SYS_SIGNALFD                     = 4317
-+	SYS_TIMERFD                      = 4318
-+	SYS_EVENTFD                      = 4319
-+	SYS_FALLOCATE                    = 4320
-+	SYS_TIMERFD_CREATE               = 4321
-+	SYS_TIMERFD_GETTIME              = 4322
-+	SYS_TIMERFD_SETTIME              = 4323
-+	SYS_SIGNALFD4                    = 4324
-+	SYS_EVENTFD2                     = 4325
-+	SYS_EPOLL_CREATE1                = 4326
-+	SYS_DUP3                         = 4327
-+	SYS_PIPE2                        = 4328
-+	SYS_INOTIFY_INIT1                = 4329
-+	SYS_PREADV                       = 4330
-+	SYS_PWRITEV                      = 4331
-+	SYS_RT_TGSIGQUEUEINFO            = 4332
-+	SYS_PERF_EVENT_OPEN              = 4333
-+	SYS_ACCEPT4                      = 4334
-+	SYS_RECVMMSG                     = 4335
-+	SYS_FANOTIFY_INIT                = 4336
-+	SYS_FANOTIFY_MARK                = 4337
-+	SYS_PRLIMIT64                    = 4338
-+	SYS_NAME_TO_HANDLE_AT            = 4339
-+	SYS_OPEN_BY_HANDLE_AT            = 4340
-+	SYS_CLOCK_ADJTIME                = 4341
-+	SYS_SYNCFS                       = 4342
-+	SYS_SENDMMSG                     = 4343
-+	SYS_SETNS                        = 4344
-+	SYS_PROCESS_VM_READV             = 4345
-+	SYS_PROCESS_VM_WRITEV            = 4346
-+	SYS_KCMP                         = 4347
-+	SYS_FINIT_MODULE                 = 4348
-+	SYS_SCHED_SETATTR                = 4349
-+	SYS_SCHED_GETATTR                = 4350
-+	SYS_RENAMEAT2                    = 4351
-+	SYS_SECCOMP                      = 4352
-+	SYS_GETRANDOM                    = 4353
-+	SYS_MEMFD_CREATE                 = 4354
-+	SYS_BPF                          = 4355
-+	SYS_EXECVEAT                     = 4356
-+	SYS_USERFAULTFD                  = 4357
-+	SYS_MEMBARRIER                   = 4358
-+	SYS_MLOCK2                       = 4359
-+	SYS_COPY_FILE_RANGE              = 4360
-+	SYS_PREADV2                      = 4361
-+	SYS_PWRITEV2                     = 4362
-+	SYS_PKEY_MPROTECT                = 4363
-+	SYS_PKEY_ALLOC                   = 4364
-+	SYS_PKEY_FREE                    = 4365
-+	SYS_STATX                        = 4366
-+	SYS_RSEQ                         = 4367
-+	SYS_IO_PGETEVENTS                = 4368
-+	SYS_SEMGET                       = 4393
-+	SYS_SEMCTL                       = 4394
-+	SYS_SHMGET                       = 4395
-+	SYS_SHMCTL                       = 4396
-+	SYS_SHMAT                        = 4397
-+	SYS_SHMDT                        = 4398
-+	SYS_MSGGET                       = 4399
-+	SYS_MSGSND                       = 4400
-+	SYS_MSGRCV                       = 4401
-+	SYS_MSGCTL                       = 4402
-+	SYS_CLOCK_GETTIME64              = 4403
-+	SYS_CLOCK_SETTIME64              = 4404
-+	SYS_CLOCK_ADJTIME64              = 4405
-+	SYS_CLOCK_GETRES_TIME64          = 4406
-+	SYS_CLOCK_NANOSLEEP_TIME64       = 4407
-+	SYS_TIMER_GETTIME64              = 4408
-+	SYS_TIMER_SETTIME64              = 4409
-+	SYS_TIMERFD_GETTIME64            = 4410
-+	SYS_TIMERFD_SETTIME64            = 4411
-+	SYS_UTIMENSAT_TIME64             = 4412
-+	SYS_PSELECT6_TIME64              = 4413
-+	SYS_PPOLL_TIME64                 = 4414
-+	SYS_IO_PGETEVENTS_TIME64         = 4416
-+	SYS_RECVMMSG_TIME64              = 4417
-+	SYS_MQ_TIMEDSEND_TIME64          = 4418
-+	SYS_MQ_TIMEDRECEIVE_TIME64       = 4419
-+	SYS_SEMTIMEDOP_TIME64            = 4420
-+	SYS_RT_SIGTIMEDWAIT_TIME64       = 4421
-+	SYS_FUTEX_TIME64                 = 4422
-+	SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423
-+	SYS_PIDFD_SEND_SIGNAL            = 4424
-+	SYS_IO_URING_SETUP               = 4425
-+	SYS_IO_URING_ENTER               = 4426
-+	SYS_IO_URING_REGISTER            = 4427
-+	SYS_OPEN_TREE                    = 4428
-+	SYS_MOVE_MOUNT                   = 4429
-+	SYS_FSOPEN                       = 4430
-+	SYS_FSCONFIG                     = 4431
-+	SYS_FSMOUNT                      = 4432
-+	SYS_FSPICK                       = 4433
-+	SYS_PIDFD_OPEN                   = 4434
-+	SYS_CLONE3                       = 4435
-+	SYS_OPENAT2                      = 4437
-+	SYS_PIDFD_GETFD                  = 4438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-index 8944448a..cc3c067b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build ppc64,linux
-@@ -366,4 +366,35 @@ const (
- 	SYS_PREADV2                = 380
- 	SYS_PWRITEV2               = 381
- 	SYS_KEXEC_FILE_LOAD        = 382
-+	SYS_STATX                  = 383
-+	SYS_PKEY_ALLOC             = 384
-+	SYS_PKEY_FREE              = 385
-+	SYS_PKEY_MPROTECT          = 386
-+	SYS_RSEQ                   = 387
-+	SYS_IO_PGETEVENTS          = 388
-+	SYS_SEMTIMEDOP             = 392
-+	SYS_SEMGET                 = 393
-+	SYS_SEMCTL                 = 394
-+	SYS_SHMGET                 = 395
-+	SYS_SHMCTL                 = 396
-+	SYS_SHMAT                  = 397
-+	SYS_SHMDT                  = 398
-+	SYS_MSGGET                 = 399
-+	SYS_MSGSND                 = 400
-+	SYS_MSGRCV                 = 401
-+	SYS_MSGCTL                 = 402
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-index 90a039be..4050ff98 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build ppc64le,linux
-@@ -366,4 +366,35 @@ const (
- 	SYS_PREADV2                = 380
- 	SYS_PWRITEV2               = 381
- 	SYS_KEXEC_FILE_LOAD        = 382
-+	SYS_STATX                  = 383
-+	SYS_PKEY_ALLOC             = 384
-+	SYS_PKEY_FREE              = 385
-+	SYS_PKEY_MPROTECT          = 386
-+	SYS_RSEQ                   = 387
-+	SYS_IO_PGETEVENTS          = 388
-+	SYS_SEMTIMEDOP             = 392
-+	SYS_SEMGET                 = 393
-+	SYS_SEMCTL                 = 394
-+	SYS_SHMGET                 = 395
-+	SYS_SHMCTL                 = 396
-+	SYS_SHMAT                  = 397
-+	SYS_SHMDT                  = 398
-+	SYS_MSGGET                 = 399
-+	SYS_MSGSND                 = 400
-+	SYS_MSGRCV                 = 401
-+	SYS_MSGCTL                 = 402
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-similarity index 92%
-copy from vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-index 64078435..529abb6a 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-@@ -1,7 +1,7 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build arm64,linux
-+// +build riscv64,linux
- 
- package unix
- 
-@@ -44,7 +44,6 @@ const (
- 	SYS_UNLINKAT               = 35
- 	SYS_SYMLINKAT              = 36
- 	SYS_LINKAT                 = 37
--	SYS_RENAMEAT               = 38
- 	SYS_UMOUNT2                = 39
- 	SYS_MOUNT                  = 40
- 	SYS_PIVOT_ROOT             = 41
-@@ -282,4 +281,22 @@ const (
- 	SYS_PKEY_MPROTECT          = 288
- 	SYS_PKEY_ALLOC             = 289
- 	SYS_PKEY_FREE              = 290
-+	SYS_STATX                  = 291
-+	SYS_IO_PGETEVENTS          = 292
-+	SYS_RSEQ                   = 293
-+	SYS_KEXEC_FILE_LOAD        = 294
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-index aab0cdb1..27665001 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build s390x,linux
-@@ -109,6 +109,7 @@ const (
- 	SYS_PERSONALITY            = 136
- 	SYS_AFS_SYSCALL            = 137
- 	SYS_GETDENTS               = 141
-+	SYS_SELECT                 = 142
- 	SYS_FLOCK                  = 143
- 	SYS_MSYNC                  = 144
- 	SYS_READV                  = 145
-@@ -151,6 +152,26 @@ const (
- 	SYS_GETPMSG                = 188
- 	SYS_PUTPMSG                = 189
- 	SYS_VFORK                  = 190
-+	SYS_GETRLIMIT              = 191
-+	SYS_LCHOWN                 = 198
-+	SYS_GETUID                 = 199
-+	SYS_GETGID                 = 200
-+	SYS_GETEUID                = 201
-+	SYS_GETEGID                = 202
-+	SYS_SETREUID               = 203
-+	SYS_SETREGID               = 204
-+	SYS_GETGROUPS              = 205
-+	SYS_SETGROUPS              = 206
-+	SYS_FCHOWN                 = 207
-+	SYS_SETRESUID              = 208
-+	SYS_GETRESUID              = 209
-+	SYS_SETRESGID              = 210
-+	SYS_GETRESGID              = 211
-+	SYS_CHOWN                  = 212
-+	SYS_SETUID                 = 213
-+	SYS_SETGID                 = 214
-+	SYS_SETFSUID               = 215
-+	SYS_SETFSGID               = 216
- 	SYS_PIVOT_ROOT             = 217
- 	SYS_MINCORE                = 218
- 	SYS_MADVISE                = 219
-@@ -222,6 +243,7 @@ const (
- 	SYS_MKNODAT                = 290
- 	SYS_FCHOWNAT               = 291
- 	SYS_FUTIMESAT              = 292
-+	SYS_NEWFSTATAT             = 293
- 	SYS_UNLINKAT               = 294
- 	SYS_RENAMEAT               = 295
- 	SYS_LINKAT                 = 296
-@@ -306,26 +328,38 @@ const (
- 	SYS_COPY_FILE_RANGE        = 375
- 	SYS_PREADV2                = 376
- 	SYS_PWRITEV2               = 377
--	SYS_SELECT                 = 142
--	SYS_GETRLIMIT              = 191
--	SYS_LCHOWN                 = 198
--	SYS_GETUID                 = 199
--	SYS_GETGID                 = 200
--	SYS_GETEUID                = 201
--	SYS_GETEGID                = 202
--	SYS_SETREUID               = 203
--	SYS_SETREGID               = 204
--	SYS_GETGROUPS              = 205
--	SYS_SETGROUPS              = 206
--	SYS_FCHOWN                 = 207
--	SYS_SETRESUID              = 208
--	SYS_GETRESUID              = 209
--	SYS_SETRESGID              = 210
--	SYS_GETRESGID              = 211
--	SYS_CHOWN                  = 212
--	SYS_SETUID                 = 213
--	SYS_SETGID                 = 214
--	SYS_SETFSUID               = 215
--	SYS_SETFSGID               = 216
--	SYS_NEWFSTATAT             = 293
-+	SYS_S390_GUARDED_STORAGE   = 378
-+	SYS_STATX                  = 379
-+	SYS_S390_STHYI             = 380
-+	SYS_KEXEC_FILE_LOAD        = 381
-+	SYS_IO_PGETEVENTS          = 382
-+	SYS_RSEQ                   = 383
-+	SYS_PKEY_MPROTECT          = 384
-+	SYS_PKEY_ALLOC             = 385
-+	SYS_PKEY_FREE              = 386
-+	SYS_SEMTIMEDOP             = 392
-+	SYS_SEMGET                 = 393
-+	SYS_SEMCTL                 = 394
-+	SYS_SHMGET                 = 395
-+	SYS_SHMCTL                 = 396
-+	SYS_SHMAT                  = 397
-+	SYS_SHMDT                  = 398
-+	SYS_MSGGET                 = 399
-+	SYS_MSGSND                 = 400
-+	SYS_MSGRCV                 = 401
-+	SYS_MSGCTL                 = 402
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_CLONE3                 = 435
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-index c9c129dc..4dc82bb2 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-@@ -1,5 +1,5 @@
--// mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build sparc64,linux
- 
-@@ -253,6 +253,7 @@ const (
- 	SYS_TIMER_GETOVERRUN       = 264
- 	SYS_TIMER_DELETE           = 265
- 	SYS_TIMER_CREATE           = 266
-+	SYS_VSERVER                = 267
- 	SYS_IO_SETUP               = 268
- 	SYS_IO_DESTROY             = 269
- 	SYS_IO_SUBMIT              = 270
-@@ -345,4 +346,34 @@ const (
- 	SYS_COPY_FILE_RANGE        = 357
- 	SYS_PREADV2                = 358
- 	SYS_PWRITEV2               = 359
-+	SYS_STATX                  = 360
-+	SYS_IO_PGETEVENTS          = 361
-+	SYS_PKEY_MPROTECT          = 362
-+	SYS_PKEY_ALLOC             = 363
-+	SYS_PKEY_FREE              = 364
-+	SYS_RSEQ                   = 365
-+	SYS_SEMTIMEDOP             = 392
-+	SYS_SEMGET                 = 393
-+	SYS_SEMCTL                 = 394
-+	SYS_SHMGET                 = 395
-+	SYS_SHMCTL                 = 396
-+	SYS_SHMAT                  = 397
-+	SYS_SHMDT                  = 398
-+	SYS_MSGGET                 = 399
-+	SYS_MSGSND                 = 400
-+	SYS_MSGRCV                 = 401
-+	SYS_MSGCTL                 = 402
-+	SYS_PIDFD_SEND_SIGNAL      = 424
-+	SYS_IO_URING_SETUP         = 425
-+	SYS_IO_URING_ENTER         = 426
-+	SYS_IO_URING_REGISTER      = 427
-+	SYS_OPEN_TREE              = 428
-+	SYS_MOVE_MOUNT             = 429
-+	SYS_FSOPEN                 = 430
-+	SYS_FSCONFIG               = 431
-+	SYS_FSMOUNT                = 432
-+	SYS_FSPICK                 = 433
-+	SYS_PIDFD_OPEN             = 434
-+	SYS_OPENAT2                = 437
-+	SYS_PIDFD_GETFD            = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-index 8afda9c4..e66a8c9d 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,netbsd
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-index aea8dbec..42c788f2 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,netbsd
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-index c6158a7e..0a075717 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,netbsd
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-index 8afda9c4..0291c093 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; DO NOT EDIT.
- 
--// +build 386,netbsd
-+// +build arm64,netbsd
- 
- package unix
- 
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-index 3e8ce2a1..b0207d1c 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,openbsd
- 
-@@ -9,109 +9,119 @@ const (
- 	SYS_EXIT           = 1   // { void sys_exit(int rval); }
- 	SYS_FORK           = 2   // { int sys_fork(void); }
- 	SYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
--	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \
--	SYS_OPEN           = 5   // { int sys_open(const char *path, \
-+	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }
- 	SYS_CLOSE          = 6   // { int sys_close(int fd); }
--	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
-+	SYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }
-+	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }
- 	SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
- 	SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
--	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
-+	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- 	SYS_CHDIR          = 12  // { int sys_chdir(const char *path); }
- 	SYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }
--	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \
-+	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- 	SYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }
--	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \
-+	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break
- 	SYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
--	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
-+	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }
- 	SYS_GETPID         = 20  // { pid_t sys_getpid(void); }
--	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \
-+	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- 	SYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }
- 	SYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }
- 	SYS_GETUID         = 24  // { uid_t sys_getuid(void); }
- 	SYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }
--	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
--	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \
--	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
--	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \
--	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \
--	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \
--	SYS_ACCESS         = 33  // { int sys_access(const char *path, int flags); }
-+	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }
- 	SYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }
- 	SYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }
- 	SYS_SYNC           = 36  // { void sys_sync(void); }
--	SYS_KILL           = 37  // { int sys_kill(int pid, int signum); }
- 	SYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }
- 	SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
- 	SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
- 	SYS_DUP            = 41  // { int sys_dup(int fd); }
--	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
-+	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- 	SYS_GETEGID        = 43  // { gid_t sys_getegid(void); }
--	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \
--	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \
--	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \
-+	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- 	SYS_GETGID         = 47  // { gid_t sys_getgid(void); }
- 	SYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }
--	SYS_GETLOGIN       = 49  // { int sys_getlogin(char *namebuf, u_int namelen); }
- 	SYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }
- 	SYS_ACCT           = 51  // { int sys_acct(const char *path); }
- 	SYS_SIGPENDING     = 52  // { int sys_sigpending(void); }
- 	SYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
--	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, \
-+	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }
- 	SYS_REBOOT         = 55  // { int sys_reboot(int opt); }
- 	SYS_REVOKE         = 56  // { int sys_revoke(const char *path); }
--	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \
--	SYS_READLINK       = 58  // { int sys_readlink(const char *path, char *buf, \
--	SYS_EXECVE         = 59  // { int sys_execve(const char *path, \
-+	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }
-+	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+	SYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- 	SYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }
- 	SYS_CHROOT         = 61  // { int sys_chroot(const char *path); }
--	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
--	SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
-+	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+	SYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }
- 	SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
-+	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- 	SYS_VFORK          = 66  // { int sys_vfork(void); }
--	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
--	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
--	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
--	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
--	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
--	SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
-+	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }
-+	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- 	SYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }
--	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \
--	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \
--	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, \
--	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
--	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \
--	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \
--	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \
-+	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }
-+	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }
-+	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }
-+	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- 	SYS_GETPGRP        = 81  // { int sys_getpgrp(void); }
--	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, int pgid); }
--	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
--	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
--	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
--	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
-+	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }
-+	SYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }
-+	SYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- 	SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
--	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
-+	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- 	SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
--	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
-+	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- 	SYS_FSYNC          = 95  // { int sys_fsync(int fd); }
- 	SYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }
- 	SYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }
--	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \
-+	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- 	SYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
- 	SYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }
-+	SYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }
-+	SYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }
- 	SYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
--	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \
--	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \
-+	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- 	SYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }
--	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
--	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+	SYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- 	SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
--	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \
--	SYS_READV          = 120 // { ssize_t sys_readv(int fd, \
--	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \
-+	SYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+	SYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+	SYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+	SYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_KILL           = 122 // { int sys_kill(int pid, int signum); }
- 	SYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- 	SYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }
- 	SYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
-@@ -119,89 +129,90 @@ const (
- 	SYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }
- 	SYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }
- 	SYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
--	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- 	SYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }
--	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \
-+	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- 	SYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- 	SYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }
--	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \
-+	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+	SYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- 	SYS_SETSID         = 147 // { int sys_setsid(void); }
--	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \
-+	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- 	SYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }
- 	SYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- 	SYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }
--	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \
--	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- 	SYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }
- 	SYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }
- 	SYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }
- 	SYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }
- 	SYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }
- 	SYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
--	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \
--	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \
--	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
--	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
--	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \
-+	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- 	SYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
--	SYS___SYSCTL       = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+	SYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- 	SYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }
- 	SYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }
- 	SYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
--	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
-+	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- 	SYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- 	SYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }
--	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
--	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
--	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- 	SYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }
--	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
--	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \
-+	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- 	SYS_ISSETUGID      = 253 // { int sys_issetugid(void); }
- 	SYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }
- 	SYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- 	SYS_PIPE           = 263 // { int sys_pipe(int *fdp); }
- 	SYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
--	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \
--	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \
-+	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- 	SYS_KQUEUE         = 269 // { int sys_kqueue(void); }
- 	SYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }
- 	SYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }
--	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
--	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
--	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- 	SYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }
--	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- 	SYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
--	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \
--	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \
--	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
--	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \
--	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \
-+	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- 	SYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }
- 	SYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }
--	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- 	SYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }
--	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- 	SYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }
--	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \
-+	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- 	SYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
- 	SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
--	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \
--	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \
--	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \
--	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
--	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \
--	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \
--	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \
--	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \
--	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
--	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \
--	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \
--	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \
-+	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- 	SYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
- 	SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-index bd28146d..f0dec6f0 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,openbsd
- 
-@@ -9,109 +9,119 @@ const (
- 	SYS_EXIT           = 1   // { void sys_exit(int rval); }
- 	SYS_FORK           = 2   // { int sys_fork(void); }
- 	SYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
--	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \
--	SYS_OPEN           = 5   // { int sys_open(const char *path, \
-+	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }
- 	SYS_CLOSE          = 6   // { int sys_close(int fd); }
--	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
-+	SYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }
-+	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }
- 	SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
- 	SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
--	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
-+	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- 	SYS_CHDIR          = 12  // { int sys_chdir(const char *path); }
- 	SYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }
--	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \
-+	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- 	SYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }
--	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \
-+	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break
- 	SYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
--	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
-+	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }
- 	SYS_GETPID         = 20  // { pid_t sys_getpid(void); }
--	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \
-+	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- 	SYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }
- 	SYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }
- 	SYS_GETUID         = 24  // { uid_t sys_getuid(void); }
- 	SYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }
--	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
--	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \
--	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
--	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \
--	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \
--	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \
--	SYS_ACCESS         = 33  // { int sys_access(const char *path, int flags); }
-+	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }
- 	SYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }
- 	SYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }
- 	SYS_SYNC           = 36  // { void sys_sync(void); }
--	SYS_KILL           = 37  // { int sys_kill(int pid, int signum); }
- 	SYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }
- 	SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
- 	SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
- 	SYS_DUP            = 41  // { int sys_dup(int fd); }
--	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
-+	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- 	SYS_GETEGID        = 43  // { gid_t sys_getegid(void); }
--	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \
--	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \
--	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \
-+	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- 	SYS_GETGID         = 47  // { gid_t sys_getgid(void); }
- 	SYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }
--	SYS_GETLOGIN       = 49  // { int sys_getlogin(char *namebuf, u_int namelen); }
- 	SYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }
- 	SYS_ACCT           = 51  // { int sys_acct(const char *path); }
- 	SYS_SIGPENDING     = 52  // { int sys_sigpending(void); }
- 	SYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
--	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, \
-+	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }
- 	SYS_REBOOT         = 55  // { int sys_reboot(int opt); }
- 	SYS_REVOKE         = 56  // { int sys_revoke(const char *path); }
--	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \
--	SYS_READLINK       = 58  // { int sys_readlink(const char *path, char *buf, \
--	SYS_EXECVE         = 59  // { int sys_execve(const char *path, \
-+	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }
-+	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+	SYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- 	SYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }
- 	SYS_CHROOT         = 61  // { int sys_chroot(const char *path); }
--	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
--	SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
-+	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+	SYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }
- 	SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
-+	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- 	SYS_VFORK          = 66  // { int sys_vfork(void); }
--	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
--	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
--	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
--	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
--	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
--	SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
-+	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }
-+	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- 	SYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }
--	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \
--	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \
--	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, \
--	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
--	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \
--	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \
--	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \
-+	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }
-+	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }
-+	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }
-+	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- 	SYS_GETPGRP        = 81  // { int sys_getpgrp(void); }
--	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, int pgid); }
--	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
--	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
--	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
--	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
-+	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }
-+	SYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }
-+	SYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- 	SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
--	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
-+	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- 	SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
--	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
-+	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- 	SYS_FSYNC          = 95  // { int sys_fsync(int fd); }
- 	SYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }
- 	SYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }
--	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \
-+	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- 	SYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
- 	SYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }
-+	SYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }
-+	SYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }
- 	SYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
--	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \
--	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \
-+	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- 	SYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }
--	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
--	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+	SYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- 	SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
--	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \
--	SYS_READV          = 120 // { ssize_t sys_readv(int fd, \
--	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \
-+	SYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+	SYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+	SYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+	SYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_KILL           = 122 // { int sys_kill(int pid, int signum); }
- 	SYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- 	SYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }
- 	SYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
-@@ -119,89 +129,90 @@ const (
- 	SYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }
- 	SYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }
- 	SYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
--	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- 	SYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }
--	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \
-+	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- 	SYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- 	SYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }
--	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \
-+	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+	SYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- 	SYS_SETSID         = 147 // { int sys_setsid(void); }
--	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \
-+	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- 	SYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }
- 	SYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- 	SYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }
--	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \
--	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- 	SYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }
- 	SYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }
- 	SYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }
- 	SYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }
- 	SYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }
- 	SYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
--	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \
--	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \
--	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
--	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
--	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \
-+	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- 	SYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
--	SYS___SYSCTL       = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+	SYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- 	SYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }
- 	SYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }
- 	SYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
--	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
-+	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- 	SYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- 	SYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }
--	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
--	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
--	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- 	SYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }
--	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
--	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \
-+	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- 	SYS_ISSETUGID      = 253 // { int sys_issetugid(void); }
- 	SYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }
- 	SYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- 	SYS_PIPE           = 263 // { int sys_pipe(int *fdp); }
- 	SYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
--	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \
--	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \
-+	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- 	SYS_KQUEUE         = 269 // { int sys_kqueue(void); }
- 	SYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }
- 	SYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }
--	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
--	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
--	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- 	SYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }
--	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- 	SYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
--	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \
--	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \
--	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
--	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \
--	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \
-+	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- 	SYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }
- 	SYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }
--	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- 	SYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }
--	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- 	SYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }
--	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \
-+	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- 	SYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
- 	SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
--	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \
--	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \
--	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \
--	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
--	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \
--	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \
--	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \
--	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \
--	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
--	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \
--	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \
--	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \
-+	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- 	SYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
- 	SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-index 32653e53..33d1dc54 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,openbsd
- 
-@@ -9,35 +9,35 @@ const (
- 	SYS_EXIT           = 1   // { void sys_exit(int rval); }
- 	SYS_FORK           = 2   // { int sys_fork(void); }
- 	SYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
--	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \
--	SYS_OPEN           = 5   // { int sys_open(const char *path, \
-+	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }
- 	SYS_CLOSE          = 6   // { int sys_close(int fd); }
- 	SYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }
--	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
-+	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }
- 	SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
- 	SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
--	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
-+	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- 	SYS_CHDIR          = 12  // { int sys_chdir(const char *path); }
- 	SYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }
--	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \
-+	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- 	SYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }
--	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \
-+	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break
- 	SYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
--	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
-+	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }
- 	SYS_GETPID         = 20  // { pid_t sys_getpid(void); }
--	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \
-+	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- 	SYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }
- 	SYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }
- 	SYS_GETUID         = 24  // { uid_t sys_getuid(void); }
- 	SYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }
--	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
--	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \
--	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
--	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \
--	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \
--	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-+	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
- 	SYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }
- 	SYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }
- 	SYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }
-@@ -46,77 +46,81 @@ const (
- 	SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
- 	SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
- 	SYS_DUP            = 41  // { int sys_dup(int fd); }
--	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
-+	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- 	SYS_GETEGID        = 43  // { gid_t sys_getegid(void); }
--	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \
--	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \
--	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \
-+	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- 	SYS_GETGID         = 47  // { gid_t sys_getgid(void); }
- 	SYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }
--	SYS_GETLOGIN       = 49  // { int sys_getlogin(char *namebuf, u_int namelen); }
- 	SYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }
- 	SYS_ACCT           = 51  // { int sys_acct(const char *path); }
- 	SYS_SIGPENDING     = 52  // { int sys_sigpending(void); }
- 	SYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
--	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, \
-+	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }
- 	SYS_REBOOT         = 55  // { int sys_reboot(int opt); }
- 	SYS_REVOKE         = 56  // { int sys_revoke(const char *path); }
--	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \
--	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, \
--	SYS_EXECVE         = 59  // { int sys_execve(const char *path, \
-+	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }
-+	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+	SYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- 	SYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }
- 	SYS_CHROOT         = 61  // { int sys_chroot(const char *path); }
--	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
--	SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
-+	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+	SYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }
- 	SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
-+	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- 	SYS_VFORK          = 66  // { int sys_vfork(void); }
--	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
--	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
--	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
--	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
--	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
--	SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
-+	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }
-+	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- 	SYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }
--	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \
--	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \
--	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, \
--	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
--	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \
--	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \
--	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \
-+	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }
-+	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }
-+	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }
-+	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }
-+	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- 	SYS_GETPGRP        = 81  // { int sys_getpgrp(void); }
- 	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }
--	SYS_SENDSYSLOG     = 83  // { int sys_sendsyslog(const void *buf, size_t nbyte); }
--	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
--	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
--	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
--	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
-+	SYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }
-+	SYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- 	SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
--	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
-+	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- 	SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
--	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, \
--	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
-+	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- 	SYS_FSYNC          = 95  // { int sys_fsync(int fd); }
- 	SYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }
- 	SYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }
--	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \
-+	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- 	SYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
- 	SYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }
- 	SYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }
- 	SYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }
- 	SYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
--	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \
--	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \
-+	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- 	SYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }
--	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, \
--	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
--	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+	SYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- 	SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
--	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \
--	SYS_READV          = 120 // { ssize_t sys_readv(int fd, \
--	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \
-+	SYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+	SYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+	SYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+	SYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
- 	SYS_KILL           = 122 // { int sys_kill(int pid, int signum); }
- 	SYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- 	SYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }
-@@ -125,89 +129,90 @@ const (
- 	SYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }
- 	SYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }
- 	SYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
--	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- 	SYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }
--	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \
-+	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- 	SYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- 	SYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }
--	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \
-+	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+	SYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- 	SYS_SETSID         = 147 // { int sys_setsid(void); }
--	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \
-+	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- 	SYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }
- 	SYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- 	SYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }
--	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \
--	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- 	SYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }
- 	SYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }
- 	SYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }
- 	SYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }
- 	SYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }
- 	SYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
--	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \
--	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \
--	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
--	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
--	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \
-+	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- 	SYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
--	SYS___SYSCTL       = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+	SYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- 	SYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }
- 	SYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }
- 	SYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
--	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
-+	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- 	SYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- 	SYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }
--	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
--	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
--	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- 	SYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }
--	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
--	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \
-+	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- 	SYS_ISSETUGID      = 253 // { int sys_issetugid(void); }
- 	SYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }
- 	SYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- 	SYS_PIPE           = 263 // { int sys_pipe(int *fdp); }
- 	SYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
--	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \
--	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \
-+	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- 	SYS_KQUEUE         = 269 // { int sys_kqueue(void); }
- 	SYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }
- 	SYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }
--	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
--	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
--	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- 	SYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }
--	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- 	SYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
--	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \
--	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \
--	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
--	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \
--	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \
-+	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- 	SYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }
- 	SYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }
--	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- 	SYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }
--	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- 	SYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }
--	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \
-+	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- 	SYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
- 	SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
--	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \
--	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \
--	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \
--	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
--	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \
--	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \
--	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \
--	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \
--	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
--	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \
--	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \
--	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \
-+	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- 	SYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
- 	SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-similarity index 67%
-copy from vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-index 32653e53..fe2b689b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build arm,openbsd
-+// +build arm64,openbsd
- 
- package unix
- 
-@@ -9,35 +9,35 @@ const (
- 	SYS_EXIT           = 1   // { void sys_exit(int rval); }
- 	SYS_FORK           = 2   // { int sys_fork(void); }
- 	SYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
--	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, \
--	SYS_OPEN           = 5   // { int sys_open(const char *path, \
-+	SYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+	SYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }
- 	SYS_CLOSE          = 6   // { int sys_close(int fd); }
- 	SYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }
--	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
-+	SYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }
- 	SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
- 	SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
--	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
-+	SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- 	SYS_CHDIR          = 12  // { int sys_chdir(const char *path); }
- 	SYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }
--	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, \
-+	SYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- 	SYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }
--	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, \
-+	SYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break
- 	SYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
--	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
-+	SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }
- 	SYS_GETPID         = 20  // { pid_t sys_getpid(void); }
--	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, \
-+	SYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- 	SYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }
- 	SYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }
- 	SYS_GETUID         = 24  // { uid_t sys_getuid(void); }
- 	SYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }
--	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
--	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
--	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, \
--	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
--	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, \
--	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \
--	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-+	SYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+	SYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+	SYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+	SYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+	SYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+	SYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+	SYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
- 	SYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }
- 	SYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }
- 	SYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }
-@@ -46,77 +46,80 @@ const (
- 	SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
- 	SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
- 	SYS_DUP            = 41  // { int sys_dup(int fd); }
--	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
-+	SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- 	SYS_GETEGID        = 43  // { gid_t sys_getegid(void); }
--	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, \
--	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, \
--	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, \
-+	SYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+	SYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+	SYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- 	SYS_GETGID         = 47  // { gid_t sys_getgid(void); }
- 	SYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }
--	SYS_GETLOGIN       = 49  // { int sys_getlogin(char *namebuf, u_int namelen); }
- 	SYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }
- 	SYS_ACCT           = 51  // { int sys_acct(const char *path); }
- 	SYS_SIGPENDING     = 52  // { int sys_sigpending(void); }
- 	SYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
--	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, \
-+	SYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }
- 	SYS_REBOOT         = 55  // { int sys_reboot(int opt); }
- 	SYS_REVOKE         = 56  // { int sys_revoke(const char *path); }
--	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, \
--	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, \
--	SYS_EXECVE         = 59  // { int sys_execve(const char *path, \
-+	SYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }
-+	SYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+	SYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- 	SYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }
- 	SYS_CHROOT         = 61  // { int sys_chroot(const char *path); }
--	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
--	SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
-+	SYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+	SYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }
- 	SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
--	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
-+	SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- 	SYS_VFORK          = 66  // { int sys_vfork(void); }
--	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
--	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
--	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
--	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
--	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
--	SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
-+	SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+	SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+	SYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+	SYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }
-+	SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+	SYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- 	SYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }
--	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, \
--	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, \
--	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, \
--	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
--	SYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, \
--	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, \
--	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, \
-+	SYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }
-+	SYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }
-+	SYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+	SYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }
-+	SYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+	SYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- 	SYS_GETPGRP        = 81  // { int sys_getpgrp(void); }
- 	SYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }
--	SYS_SENDSYSLOG     = 83  // { int sys_sendsyslog(const void *buf, size_t nbyte); }
--	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
--	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
--	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
--	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
--	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
-+	SYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+	SYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+	SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }
-+	SYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+	SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+	SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+	SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- 	SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
--	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
-+	SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- 	SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
--	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, \
--	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
-+	SYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+	SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- 	SYS_FSYNC          = 95  // { int sys_fsync(int fd); }
- 	SYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }
- 	SYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }
--	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, \
-+	SYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- 	SYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
- 	SYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }
- 	SYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }
- 	SYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }
- 	SYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
--	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, \
--	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, \
-+	SYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+	SYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- 	SYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }
--	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, \
--	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
--	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+	SYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+	SYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+	SYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+	SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- 	SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
--	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, \
--	SYS_READV          = 120 // { ssize_t sys_readv(int fd, \
--	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, \
-+	SYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+	SYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+	SYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+	SYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+	SYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+	SYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
- 	SYS_KILL           = 122 // { int sys_kill(int pid, int signum); }
- 	SYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- 	SYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }
-@@ -125,89 +128,90 @@ const (
- 	SYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }
- 	SYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }
- 	SYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
--	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+	SYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- 	SYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }
--	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, \
-+	SYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- 	SYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- 	SYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }
--	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, \
-+	SYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+	SYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- 	SYS_SETSID         = 147 // { int sys_setsid(void); }
--	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, \
-+	SYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- 	SYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }
- 	SYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- 	SYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }
--	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, \
--	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+	SYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+	SYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- 	SYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }
- 	SYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }
- 	SYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }
- 	SYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }
- 	SYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }
- 	SYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
--	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, \
--	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, \
--	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
--	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
--	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, \
-+	SYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+	SYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+	SYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+	SYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+	SYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- 	SYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
--	SYS___SYSCTL       = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+	SYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- 	SYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }
- 	SYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }
- 	SYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
--	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
-+	SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- 	SYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- 	SYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }
--	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
--	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
--	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+	SYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+	SYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+	SYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- 	SYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }
--	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
--	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, \
-+	SYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+	SYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- 	SYS_ISSETUGID      = 253 // { int sys_issetugid(void); }
- 	SYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- 	SYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }
- 	SYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- 	SYS_PIPE           = 263 // { int sys_pipe(int *fdp); }
- 	SYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
--	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, \
--	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, \
-+	SYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+	SYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- 	SYS_KQUEUE         = 269 // { int sys_kqueue(void); }
- 	SYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }
- 	SYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }
--	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
--	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
--	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
--	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
--	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+	SYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+	SYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+	SYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+	SYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+	SYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- 	SYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }
--	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+	SYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- 	SYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
--	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, \
--	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, \
--	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
--	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, \
--	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, \
-+	SYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+	SYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+	SYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+	SYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+	SYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- 	SYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }
- 	SYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }
--	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+	SYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- 	SYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }
--	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+	SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- 	SYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }
--	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, \
-+	SYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- 	SYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
- 	SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
--	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, \
--	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, \
--	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, \
--	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
--	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, \
--	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, \
--	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, \
--	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, \
--	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
--	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, \
--	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, \
--	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, \
-+	SYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+	SYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+	SYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+	SYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+	SYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+	SYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+	SYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+	SYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+	SYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+	SYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+	SYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+	SYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- 	SYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
- 	SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
-deleted file mode 100644
-index c7086598..00000000
---- a/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
-+++ /dev/null
-@@ -1,13 +0,0 @@
--// Copyright 2014 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build amd64,solaris
--
--package unix
--
--// TODO(aram): remove these before Go 1.3.
--const (
--	SYS_EXECVE = 59
--	SYS_FCNTL  = 62
--)
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
-new file mode 100644
-index 00000000..2c1f815e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
-@@ -0,0 +1,352 @@
-+// cgo -godefs types_aix.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc,aix
-+
-+package unix
-+
-+const (
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
-+	PathMax        = 0x3ff
-+)
-+
-+type (
-+	_C_short     int16
-+	_C_int       int32
-+	_C_long      int32
-+	_C_long_long int64
-+)
-+
-+type off64 int64
-+type off int32
-+type Mode_t uint32
-+
-+type Timespec struct {
-+	Sec  int32
-+	Nsec int32
-+}
-+
-+type Timeval struct {
-+	Sec  int32
-+	Usec int32
-+}
-+
-+type Timeval32 struct {
-+	Sec  int32
-+	Usec int32
-+}
-+
-+type Timex struct{}
-+
-+type Time_t int32
-+
-+type Tms struct{}
-+
-+type Utimbuf struct {
-+	Actime  int32
-+	Modtime int32
-+}
-+
-+type Timezone struct {
-+	Minuteswest int32
-+	Dsttime     int32
-+}
-+
-+type Rusage struct {
-+	Utime    Timeval
-+	Stime    Timeval
-+	Maxrss   int32
-+	Ixrss    int32
-+	Idrss    int32
-+	Isrss    int32
-+	Minflt   int32
-+	Majflt   int32
-+	Nswap    int32
-+	Inblock  int32
-+	Oublock  int32
-+	Msgsnd   int32
-+	Msgrcv   int32
-+	Nsignals int32
-+	Nvcsw    int32
-+	Nivcsw   int32
-+}
-+
-+type Rlimit struct {
-+	Cur uint64
-+	Max uint64
-+}
-+
-+type Pid_t int32
-+
-+type _Gid_t uint32
-+
-+type dev_t uint32
-+
-+type Stat_t struct {
-+	Dev      uint32
-+	Ino      uint32
-+	Mode     uint32
-+	Nlink    int16
-+	Flag     uint16
-+	Uid      uint32
-+	Gid      uint32
-+	Rdev     uint32
-+	Size     int32
-+	Atim     Timespec
-+	Mtim     Timespec
-+	Ctim     Timespec
-+	Blksize  int32
-+	Blocks   int32
-+	Vfstype  int32
-+	Vfs      uint32
-+	Type     uint32
-+	Gen      uint32
-+	Reserved [9]uint32
-+}
-+
-+type StatxTimestamp struct{}
-+
-+type Statx_t struct{}
-+
-+type Dirent struct {
-+	Offset uint32
-+	Ino    uint32
-+	Reclen uint16
-+	Namlen uint16
-+	Name   [256]uint8
-+}
-+
-+type RawSockaddrInet4 struct {
-+	Len    uint8
-+	Family uint8
-+	Port   uint16
-+	Addr   [4]byte /* in_addr */
-+	Zero   [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+	Len      uint8
-+	Family   uint8
-+	Port     uint16
-+	Flowinfo uint32
-+	Addr     [16]byte /* in6_addr */
-+	Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+	Len    uint8
-+	Family uint8
-+	Path   [1023]uint8
-+}
-+
-+type RawSockaddrDatalink struct {
-+	Len    uint8
-+	Family uint8
-+	Index  uint16
-+	Type   uint8
-+	Nlen   uint8
-+	Alen   uint8
-+	Slen   uint8
-+	Data   [120]uint8
-+}
-+
-+type RawSockaddr struct {
-+	Len    uint8
-+	Family uint8
-+	Data   [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+	Addr RawSockaddr
-+	Pad  [1012]uint8
-+}
-+
-+type _Socklen uint32
-+
-+type Cmsghdr struct {
-+	Len   uint32
-+	Level int32
-+	Type  int32
-+}
-+
-+type ICMPv6Filter struct {
-+	Filt [8]uint32
-+}
-+
-+type Iovec struct {
-+	Base *byte
-+	Len  uint32
-+}
-+
-+type IPMreq struct {
-+	Multiaddr [4]byte /* in_addr */
-+	Interface [4]byte /* in_addr */
-+}
-+
-+type IPv6Mreq struct {
-+	Multiaddr [16]byte /* in6_addr */
-+	Interface uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+	Addr RawSockaddrInet6
-+	Mtu  uint32
-+}
-+
-+type Linger struct {
-+	Onoff  int32
-+	Linger int32
-+}
-+
-+type Msghdr struct {
-+	Name       *byte
-+	Namelen    uint32
-+	Iov        *Iovec
-+	Iovlen     int32
-+	Control    *byte
-+	Controllen uint32
-+	Flags      int32
-+}
-+
-+const (
-+	SizeofSockaddrInet4    = 0x10
-+	SizeofSockaddrInet6    = 0x1c
-+	SizeofSockaddrAny      = 0x404
-+	SizeofSockaddrUnix     = 0x401
-+	SizeofSockaddrDatalink = 0x80
-+	SizeofLinger           = 0x8
-+	SizeofIPMreq           = 0x8
-+	SizeofIPv6Mreq         = 0x14
-+	SizeofIPv6MTUInfo      = 0x20
-+	SizeofMsghdr           = 0x1c
-+	SizeofCmsghdr          = 0xc
-+	SizeofICMPv6Filter     = 0x20
-+)
-+
-+const (
-+	SizeofIfMsghdr = 0x10
-+)
-+
-+type IfMsgHdr struct {
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	Addrlen uint8
-+	_       [1]byte
-+}
-+
-+type FdSet struct {
-+	Bits [2048]int32
-+}
-+
-+type Utsname struct {
-+	Sysname  [32]byte
-+	Nodename [32]byte
-+	Release  [32]byte
-+	Version  [32]byte
-+	Machine  [32]byte
-+}
-+
-+type Ustat_t struct{}
-+
-+type Sigset_t struct {
-+	Losigs uint32
-+	Hisigs uint32
-+}
-+
-+const (
-+	AT_FDCWD            = -0x2
-+	AT_REMOVEDIR        = 0x1
-+	AT_SYMLINK_NOFOLLOW = 0x1
-+)
-+
-+type Termios struct {
-+	Iflag uint32
-+	Oflag uint32
-+	Cflag uint32
-+	Lflag uint32
-+	Cc    [16]uint8
-+}
-+
-+type Termio struct {
-+	Iflag uint16
-+	Oflag uint16
-+	Cflag uint16
-+	Lflag uint16
-+	Line  uint8
-+	Cc    [8]uint8
-+	_     [1]byte
-+}
-+
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  uint16
-+	Revents uint16
-+}
-+
-+const (
-+	POLLERR    = 0x4000
-+	POLLHUP    = 0x2000
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x8000
-+	POLLOUT    = 0x2
-+	POLLPRI    = 0x4
-+	POLLRDBAND = 0x20
-+	POLLRDNORM = 0x10
-+	POLLWRBAND = 0x40
-+	POLLWRNORM = 0x2
-+)
-+
-+type Flock_t struct {
-+	Type   int16
-+	Whence int16
-+	Sysid  uint32
-+	Pid    int32
-+	Vfs    int32
-+	Start  int64
-+	Len    int64
-+}
-+
-+type Fsid_t struct {
-+	Val [2]uint32
-+}
-+type Fsid64_t struct {
-+	Val [2]uint64
-+}
-+
-+type Statfs_t struct {
-+	Version   int32
-+	Type      int32
-+	Bsize     uint32
-+	Blocks    uint32
-+	Bfree     uint32
-+	Bavail    uint32
-+	Files     uint32
-+	Ffree     uint32
-+	Fsid      Fsid_t
-+	Vfstype   int32
-+	Fsize     uint32
-+	Vfsnumber int32
-+	Vfsoff    int32
-+	Vfslen    int32
-+	Vfsvers   int32
-+	Fname     [32]uint8
-+	Fpack     [32]uint8
-+	Name_max  int32
-+}
-+
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
-new file mode 100644
-index 00000000..b4a069ec
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
-@@ -0,0 +1,356 @@
-+// cgo -godefs types_aix.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc64,aix
-+
-+package unix
-+
-+const (
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
-+	PathMax        = 0x3ff
-+)
-+
-+type (
-+	_C_short     int16
-+	_C_int       int32
-+	_C_long      int64
-+	_C_long_long int64
-+)
-+
-+type off64 int64
-+type off int64
-+type Mode_t uint32
-+
-+type Timespec struct {
-+	Sec  int64
-+	Nsec int64
-+}
-+
-+type Timeval struct {
-+	Sec  int64
-+	Usec int32
-+	_    [4]byte
-+}
-+
-+type Timeval32 struct {
-+	Sec  int32
-+	Usec int32
-+}
-+
-+type Timex struct{}
-+
-+type Time_t int64
-+
-+type Tms struct{}
-+
-+type Utimbuf struct {
-+	Actime  int64
-+	Modtime int64
-+}
-+
-+type Timezone struct {
-+	Minuteswest int32
-+	Dsttime     int32
-+}
-+
-+type Rusage struct {
-+	Utime    Timeval
-+	Stime    Timeval
-+	Maxrss   int64
-+	Ixrss    int64
-+	Idrss    int64
-+	Isrss    int64
-+	Minflt   int64
-+	Majflt   int64
-+	Nswap    int64
-+	Inblock  int64
-+	Oublock  int64
-+	Msgsnd   int64
-+	Msgrcv   int64
-+	Nsignals int64
-+	Nvcsw    int64
-+	Nivcsw   int64
-+}
-+
-+type Rlimit struct {
-+	Cur uint64
-+	Max uint64
-+}
-+
-+type Pid_t int32
-+
-+type _Gid_t uint32
-+
-+type dev_t uint64
-+
-+type Stat_t struct {
-+	Dev      uint64
-+	Ino      uint64
-+	Mode     uint32
-+	Nlink    int16
-+	Flag     uint16
-+	Uid      uint32
-+	Gid      uint32
-+	Rdev     uint64
-+	Ssize    int32
-+	Atim     Timespec
-+	Mtim     Timespec
-+	Ctim     Timespec
-+	Blksize  int64
-+	Blocks   int64
-+	Vfstype  int32
-+	Vfs      uint32
-+	Type     uint32
-+	Gen      uint32
-+	Reserved [9]uint32
-+	Padto_ll uint32
-+	Size     int64
-+}
-+
-+type StatxTimestamp struct{}
-+
-+type Statx_t struct{}
-+
-+type Dirent struct {
-+	Offset uint64
-+	Ino    uint64
-+	Reclen uint16
-+	Namlen uint16
-+	Name   [256]uint8
-+	_      [4]byte
-+}
-+
-+type RawSockaddrInet4 struct {
-+	Len    uint8
-+	Family uint8
-+	Port   uint16
-+	Addr   [4]byte /* in_addr */
-+	Zero   [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+	Len      uint8
-+	Family   uint8
-+	Port     uint16
-+	Flowinfo uint32
-+	Addr     [16]byte /* in6_addr */
-+	Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+	Len    uint8
-+	Family uint8
-+	Path   [1023]uint8
-+}
-+
-+type RawSockaddrDatalink struct {
-+	Len    uint8
-+	Family uint8
-+	Index  uint16
-+	Type   uint8
-+	Nlen   uint8
-+	Alen   uint8
-+	Slen   uint8
-+	Data   [120]uint8
-+}
-+
-+type RawSockaddr struct {
-+	Len    uint8
-+	Family uint8
-+	Data   [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+	Addr RawSockaddr
-+	Pad  [1012]uint8
-+}
-+
-+type _Socklen uint32
-+
-+type Cmsghdr struct {
-+	Len   uint32
-+	Level int32
-+	Type  int32
-+}
-+
-+type ICMPv6Filter struct {
-+	Filt [8]uint32
-+}
-+
-+type Iovec struct {
-+	Base *byte
-+	Len  uint64
-+}
-+
-+type IPMreq struct {
-+	Multiaddr [4]byte /* in_addr */
-+	Interface [4]byte /* in_addr */
-+}
-+
-+type IPv6Mreq struct {
-+	Multiaddr [16]byte /* in6_addr */
-+	Interface uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+	Addr RawSockaddrInet6
-+	Mtu  uint32
-+}
-+
-+type Linger struct {
-+	Onoff  int32
-+	Linger int32
-+}
-+
-+type Msghdr struct {
-+	Name       *byte
-+	Namelen    uint32
-+	Iov        *Iovec
-+	Iovlen     int32
-+	Control    *byte
-+	Controllen uint32
-+	Flags      int32
-+}
-+
-+const (
-+	SizeofSockaddrInet4    = 0x10
-+	SizeofSockaddrInet6    = 0x1c
-+	SizeofSockaddrAny      = 0x404
-+	SizeofSockaddrUnix     = 0x401
-+	SizeofSockaddrDatalink = 0x80
-+	SizeofLinger           = 0x8
-+	SizeofIPMreq           = 0x8
-+	SizeofIPv6Mreq         = 0x14
-+	SizeofIPv6MTUInfo      = 0x20
-+	SizeofMsghdr           = 0x30
-+	SizeofCmsghdr          = 0xc
-+	SizeofICMPv6Filter     = 0x20
-+)
-+
-+const (
-+	SizeofIfMsghdr = 0x10
-+)
-+
-+type IfMsgHdr struct {
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	Addrlen uint8
-+	_       [1]byte
-+}
-+
-+type FdSet struct {
-+	Bits [1024]int64
-+}
-+
-+type Utsname struct {
-+	Sysname  [32]byte
-+	Nodename [32]byte
-+	Release  [32]byte
-+	Version  [32]byte
-+	Machine  [32]byte
-+}
-+
-+type Ustat_t struct{}
-+
-+type Sigset_t struct {
-+	Set [4]uint64
-+}
-+
-+const (
-+	AT_FDCWD            = -0x2
-+	AT_REMOVEDIR        = 0x1
-+	AT_SYMLINK_NOFOLLOW = 0x1
-+)
-+
-+type Termios struct {
-+	Iflag uint32
-+	Oflag uint32
-+	Cflag uint32
-+	Lflag uint32
-+	Cc    [16]uint8
-+}
-+
-+type Termio struct {
-+	Iflag uint16
-+	Oflag uint16
-+	Cflag uint16
-+	Lflag uint16
-+	Line  uint8
-+	Cc    [8]uint8
-+	_     [1]byte
-+}
-+
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  uint16
-+	Revents uint16
-+}
-+
-+const (
-+	POLLERR    = 0x4000
-+	POLLHUP    = 0x2000
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x8000
-+	POLLOUT    = 0x2
-+	POLLPRI    = 0x4
-+	POLLRDBAND = 0x20
-+	POLLRDNORM = 0x10
-+	POLLWRBAND = 0x40
-+	POLLWRNORM = 0x2
-+)
-+
-+type Flock_t struct {
-+	Type   int16
-+	Whence int16
-+	Sysid  uint32
-+	Pid    int32
-+	Vfs    int32
-+	Start  int64
-+	Len    int64
-+}
-+
-+type Fsid_t struct {
-+	Val [2]uint32
-+}
-+type Fsid64_t struct {
-+	Val [2]uint64
-+}
-+
-+type Statfs_t struct {
-+	Version   int32
-+	Type      int32
-+	Bsize     uint64
-+	Blocks    uint64
-+	Bfree     uint64
-+	Bavail    uint64
-+	Files     uint64
-+	Ffree     uint64
-+	Fsid      Fsid64_t
-+	Vfstype   int32
-+	Fsize     uint64
-+	Vfsnumber int32
-+	Vfsoff    int32
-+	Vfslen    int32
-+	Vfsvers   int32
-+	Fname     [32]uint8
-+	Fpack     [32]uint8
-+	Name_max  int32
-+	_         [4]byte
-+}
-+
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-index e61d78a5..9f47b87c 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -59,24 +59,24 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           int32
--	Mode          uint16
--	Nlink         uint16
--	Ino           uint64
--	Uid           uint32
--	Gid           uint32
--	Rdev          int32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Qspare        [2]int64
-+	Dev     int32
-+	Mode    uint16
-+	Nlink   uint16
-+	Ino     uint64
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Qspare  [2]int64
- }
- 
- type Statfs_t struct {
-@@ -136,13 +136,13 @@ type Fsid struct {
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Seekoff   uint64
--	Reclen    uint16
--	Namlen    uint16
--	Type      uint8
--	Name      [1024]int8
--	Pad_cgo_0 [3]byte
-+	Ino     uint64
-+	Seekoff uint64
-+	Reclen  uint16
-+	Namlen  uint16
-+	Type    uint8
-+	Name    [1024]int8
-+	_       [3]byte
- }
- 
- type RawSockaddrInet4 struct {
-@@ -295,14 +295,14 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
-@@ -338,51 +338,51 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfmaMsghdr2 struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Refcount  int32
-+	Msglen   uint16
-+	Version  uint8
-+	Type     uint8
-+	Addrs    int32
-+	Flags    int32
-+	Index    uint16
-+	_        [2]byte
-+	Refcount int32
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -430,11 +430,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type Termios struct {
-@@ -460,3 +460,40 @@ const (
- 	AT_SYMLINK_FOLLOW   = 0x40
- 	AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-index 2619155f..966798a8 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -26,9 +26,9 @@ type Timespec struct {
- }
- 
- type Timeval struct {
--	Sec       int64
--	Usec      int32
--	Pad_cgo_0 [4]byte
-+	Sec  int64
-+	Usec int32
-+	_    [4]byte
- }
- 
- type Timeval32 struct {
-@@ -63,25 +63,25 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           int32
--	Mode          uint16
--	Nlink         uint16
--	Ino           uint64
--	Uid           uint32
--	Gid           uint32
--	Rdev          int32
--	Pad_cgo_0     [4]byte
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Qspare        [2]int64
-+	Dev     int32
-+	Mode    uint16
-+	Nlink   uint16
-+	Ino     uint64
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	_       [4]byte
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Qspare  [2]int64
- }
- 
- type Statfs_t struct {
-@@ -120,9 +120,9 @@ type Fstore_t struct {
- }
- 
- type Radvisory_t struct {
--	Offset    int64
--	Count     int32
--	Pad_cgo_0 [4]byte
-+	Offset int64
-+	Count  int32
-+	_      [4]byte
- }
- 
- type Fbootstraptransfer_t struct {
-@@ -132,9 +132,9 @@ type Fbootstraptransfer_t struct {
- }
- 
- type Log2phys_t struct {
--	Flags     uint32
--	Pad_cgo_0 [8]byte
--	Pad_cgo_1 [8]byte
-+	Flags uint32
-+	_     [8]byte
-+	_     [8]byte
- }
- 
- type Fsid struct {
-@@ -142,13 +142,13 @@ type Fsid struct {
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Seekoff   uint64
--	Reclen    uint16
--	Namlen    uint16
--	Type      uint8
--	Name      [1024]int8
--	Pad_cgo_0 [3]byte
-+	Ino     uint64
-+	Seekoff uint64
-+	Reclen  uint16
-+	Namlen  uint16
-+	Type    uint8
-+	Name    [1024]int8
-+	_       [3]byte
- }
- 
- type RawSockaddrInet4 struct {
-@@ -221,10 +221,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
-+	_          [4]byte
- 	Iov        *Iovec
- 	Iovlen     int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -303,14 +303,14 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
-@@ -346,51 +346,51 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfmaMsghdr2 struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Refcount  int32
-+	Msglen   uint16
-+	Version  uint8
-+	Type     uint8
-+	Addrs    int32
-+	Flags    int32
-+	Index    uint16
-+	_        [2]byte
-+	Refcount int32
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -426,9 +426,9 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	_     [4]byte
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -439,22 +439,22 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval32
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  Timeval32
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type Termios struct {
--	Iflag     uint64
--	Oflag     uint64
--	Cflag     uint64
--	Lflag     uint64
--	Cc        [20]uint8
--	Pad_cgo_0 [4]byte
--	Ispeed    uint64
--	Ospeed    uint64
-+	Iflag  uint64
-+	Oflag  uint64
-+	Cflag  uint64
-+	Lflag  uint64
-+	Cc     [20]uint8
-+	_      [4]byte
-+	Ispeed uint64
-+	Ospeed uint64
- }
- 
- type Winsize struct {
-@@ -470,3 +470,40 @@ const (
- 	AT_SYMLINK_FOLLOW   = 0x40
- 	AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-index 4dca0d4d..4fe4c9cd 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-@@ -7,11 +7,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -60,24 +60,24 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           int32
--	Mode          uint16
--	Nlink         uint16
--	Ino           uint64
--	Uid           uint32
--	Gid           uint32
--	Rdev          int32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Qspare        [2]int64
-+	Dev     int32
-+	Mode    uint16
-+	Nlink   uint16
-+	Ino     uint64
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Qspare  [2]int64
- }
- 
- type Statfs_t struct {
-@@ -137,13 +137,13 @@ type Fsid struct {
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Seekoff   uint64
--	Reclen    uint16
--	Namlen    uint16
--	Type      uint8
--	Name      [1024]int8
--	Pad_cgo_0 [3]byte
-+	Ino     uint64
-+	Seekoff uint64
-+	Reclen  uint16
-+	Namlen  uint16
-+	Type    uint8
-+	Name    [1024]int8
-+	_       [3]byte
- }
- 
- type RawSockaddrInet4 struct {
-@@ -296,14 +296,14 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
-@@ -339,51 +339,51 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfmaMsghdr2 struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Refcount  int32
-+	Msglen   uint16
-+	Version  uint8
-+	Type     uint8
-+	Addrs    int32
-+	Flags    int32
-+	Index    uint16
-+	_        [2]byte
-+	Refcount int32
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -431,11 +431,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type Termios struct {
-@@ -461,3 +461,40 @@ const (
- 	AT_SYMLINK_FOLLOW   = 0x40
- 	AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-index f2881fd1..21999e4b 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-@@ -1,15 +1,16 @@
-+// cgo -godefs types_darwin.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
- // +build arm64,darwin
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_darwin.go
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -25,9 +26,9 @@ type Timespec struct {
- }
- 
- type Timeval struct {
--	Sec       int64
--	Usec      int32
--	Pad_cgo_0 [4]byte
-+	Sec  int64
-+	Usec int32
-+	_    [4]byte
- }
- 
- type Timeval32 struct {
-@@ -62,25 +63,25 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           int32
--	Mode          uint16
--	Nlink         uint16
--	Ino           uint64
--	Uid           uint32
--	Gid           uint32
--	Rdev          int32
--	Pad_cgo_0     [4]byte
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Qspare        [2]int64
-+	Dev     int32
-+	Mode    uint16
-+	Nlink   uint16
-+	Ino     uint64
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	_       [4]byte
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Qspare  [2]int64
- }
- 
- type Statfs_t struct {
-@@ -119,9 +120,9 @@ type Fstore_t struct {
- }
- 
- type Radvisory_t struct {
--	Offset    int64
--	Count     int32
--	Pad_cgo_0 [4]byte
-+	Offset int64
-+	Count  int32
-+	_      [4]byte
- }
- 
- type Fbootstraptransfer_t struct {
-@@ -131,9 +132,9 @@ type Fbootstraptransfer_t struct {
- }
- 
- type Log2phys_t struct {
--	Flags     uint32
--	Pad_cgo_0 [8]byte
--	Pad_cgo_1 [8]byte
-+	Flags uint32
-+	_     [8]byte
-+	_     [8]byte
- }
- 
- type Fsid struct {
-@@ -141,13 +142,13 @@ type Fsid struct {
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Seekoff   uint64
--	Reclen    uint16
--	Namlen    uint16
--	Type      uint8
--	Name      [1024]int8
--	Pad_cgo_0 [3]byte
-+	Ino     uint64
-+	Seekoff uint64
-+	Reclen  uint16
-+	Namlen  uint16
-+	Type    uint8
-+	Name    [1024]int8
-+	_       [3]byte
- }
- 
- type RawSockaddrInet4 struct {
-@@ -220,10 +221,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
-+	_          [4]byte
- 	Iov        *Iovec
- 	Iovlen     int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -302,14 +303,14 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
-@@ -345,51 +346,51 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfmaMsghdr2 struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Refcount  int32
-+	Msglen   uint16
-+	Version  uint8
-+	Type     uint8
-+	Addrs    int32
-+	Flags    int32
-+	Index    uint16
-+	_        [2]byte
-+	Refcount int32
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -425,9 +426,9 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	_     [4]byte
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -438,22 +439,22 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval32
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  Timeval32
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type Termios struct {
--	Iflag     uint64
--	Oflag     uint64
--	Cflag     uint64
--	Lflag     uint64
--	Cc        [20]uint8
--	Pad_cgo_0 [4]byte
--	Ispeed    uint64
--	Ospeed    uint64
-+	Iflag  uint64
-+	Oflag  uint64
-+	Cflag  uint64
-+	Lflag  uint64
-+	Cc     [20]uint8
-+	_      [4]byte
-+	Ispeed uint64
-+	Ospeed uint64
- }
- 
- type Winsize struct {
-@@ -469,3 +470,40 @@ const (
- 	AT_SYMLINK_FOLLOW   = 0x40
- 	AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-index 67c6bf88..71ea1d6d 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -56,43 +56,26 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
--	Ino      uint64
--	Nlink    uint32
--	Dev      uint32
--	Mode     uint16
--	Padding1 uint16
--	Uid      uint32
--	Gid      uint32
--	Rdev     uint32
--	Atim     Timespec
--	Mtim     Timespec
--	Ctim     Timespec
--	Size     int64
--	Blocks   int64
--	Blksize  uint32
--	Flags    uint32
--	Gen      uint32
--	Lspare   int32
--	Qspare1  int64
--	Qspare2  int64
-+	Ino     uint64
-+	Nlink   uint32
-+	Dev     uint32
-+	Mode    uint16
-+	_1      uint16
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize uint32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Qspare1 int64
-+	Qspare2 int64
- }
- 
- type Statfs_t struct {
-@@ -108,7 +91,7 @@ type Statfs_t struct {
- 	Owner       uint32
- 	Type        int32
- 	Flags       int32
--	Pad_cgo_0   [4]byte
-+	_           [4]byte
- 	Syncwrites  int64
- 	Asyncwrites int64
- 	Fstypename  [16]int8
-@@ -118,7 +101,7 @@ type Statfs_t struct {
- 	Spares1     int16
- 	Mntfromname [80]int8
- 	Spares2     int16
--	Pad_cgo_1   [4]byte
-+	_           [4]byte
- 	Spare       [2]int64
- }
- 
-@@ -143,6 +126,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -215,10 +202,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
-+	_          [4]byte
- 	Iov        *Iovec
- 	Iovlen     int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -290,14 +277,14 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
-@@ -307,7 +294,7 @@ type IfData struct {
- 	Hdrlen     uint8
- 	Recvquota  uint8
- 	Xmitquota  uint8
--	Pad_cgo_0  [2]byte
-+	_          [2]byte
- 	Mtu        uint64
- 	Metric     uint64
- 	Link_state uint64
-@@ -329,24 +316,24 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfAnnounceMsghdr struct {
-@@ -359,19 +346,19 @@ type IfAnnounceMsghdr struct {
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint64
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint64
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -387,7 +374,7 @@ type RtMetrics struct {
- 	Hopcount  uint64
- 	Mssopt    uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
-+	_         [4]byte
- 	Msl       uint64
- 	Iwmaxsegs uint64
- 	Iwcapsegs uint64
-@@ -412,9 +399,9 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	_     [4]byte
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -425,11 +412,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [6]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [6]byte
- }
- 
- type Termios struct {
-@@ -442,7 +429,51 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
- const (
- 	AT_FDCWD            = 0xfffafdcd
- 	AT_SYMLINK_NOFOLLOW = 0x1
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+	Sysname  [32]byte
-+	Nodename [32]byte
-+	Release  [32]byte
-+	Version  [32]byte
-+	Machine  [32]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-index 5b28bcbb..2a3ec615 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -57,41 +57,55 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
-+	_statfsVersion = 0x20140518
-+	_dirblksiz     = 0x400
- )
- 
- type Stat_t struct {
--	Dev           uint32
--	Ino           uint32
--	Mode          uint16
--	Nlink         uint16
--	Uid           uint32
--	Gid           uint32
--	Rdev          uint32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Birthtimespec Timespec
--	Pad_cgo_0     [8]byte
-+	Dev     uint64
-+	Ino     uint64
-+	Nlink   uint64
-+	Mode    uint16
-+	_0      int16
-+	Uid     uint32
-+	Gid     uint32
-+	_1      int32
-+	Rdev    uint64
-+	_       int32
-+	Atim    Timespec
-+	_       int32
-+	Mtim    Timespec
-+	_       int32
-+	Ctim    Timespec
-+	_       int32
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint64
-+	Spare   [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+	Dev     uint32
-+	Ino     uint32
-+	Mode    uint16
-+	Nlink   uint16
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Btim    Timespec
-+	_       [8]byte
- }
- 
- type Statfs_t struct {
-@@ -114,9 +128,34 @@ type Statfs_t struct {
- 	Owner       uint32
- 	Fsid        Fsid
- 	Charspare   [80]int8
--	Fstypename  [16]int8
--	Mntfromname [88]int8
--	Mntonname   [88]int8
-+	Fstypename  [16]byte
-+	Mntfromname [1024]byte
-+	Mntonname   [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+	Version     uint32
-+	Type        uint32
-+	Flags       uint64
-+	Bsize       uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      int64
-+	Files       uint64
-+	Ffree       int64
-+	Syncwrites  uint64
-+	Asyncwrites uint64
-+	Syncreads   uint64
-+	Asyncreads  uint64
-+	Spare       [10]uint64
-+	Namemax     uint32
-+	Owner       uint32
-+	Fsid        Fsid
-+	Charspare   [80]int8
-+	Fstypename  [16]byte
-+	Mntfromname [88]byte
-+	Mntonname   [88]byte
- }
- 
- type Flock_t struct {
-@@ -129,6 +168,17 @@ type Flock_t struct {
- }
- 
- type Dirent struct {
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Pad0   uint8
-+	Namlen uint16
-+	Pad1   uint16
-+	Name   [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- 	Fileno uint32
- 	Reclen uint16
- 	Type   uint8
-@@ -140,6 +190,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- const (
- 	FADV_NORMAL     = 0x0
- 	FADV_RANDOM     = 0x1
-@@ -270,11 +324,108 @@ const (
- )
- 
- const (
--	PTRACE_TRACEME = 0x0
--	PTRACE_CONT    = 0x7
--	PTRACE_KILL    = 0x8
-+	PTRACE_ATTACH     = 0xa
-+	PTRACE_CONT       = 0x7
-+	PTRACE_DETACH     = 0xb
-+	PTRACE_GETFPREGS  = 0x23
-+	PTRACE_GETFSBASE  = 0x47
-+	PTRACE_GETLWPLIST = 0xf
-+	PTRACE_GETNUMLWPS = 0xe
-+	PTRACE_GETREGS    = 0x21
-+	PTRACE_GETXSTATE  = 0x45
-+	PTRACE_IO         = 0xc
-+	PTRACE_KILL       = 0x8
-+	PTRACE_LWPEVENTS  = 0x18
-+	PTRACE_LWPINFO    = 0xd
-+	PTRACE_SETFPREGS  = 0x24
-+	PTRACE_SETREGS    = 0x22
-+	PTRACE_SINGLESTEP = 0x9
-+	PTRACE_TRACEME    = 0x0
-+)
-+
-+const (
-+	PIOD_READ_D  = 0x1
-+	PIOD_WRITE_D = 0x2
-+	PIOD_READ_I  = 0x3
-+	PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+	PL_FLAG_BORN   = 0x100
-+	PL_FLAG_EXITED = 0x200
-+	PL_FLAG_SI     = 0x20
-+)
-+
-+const (
-+	TRAP_BRKPT = 0x1
-+	TRAP_TRACE = 0x2
- )
- 
-+type PtraceLwpInfoStruct struct {
-+	Lwpid        int32
-+	Event        int32
-+	Flags        int32
-+	Sigmask      Sigset_t
-+	Siglist      Sigset_t
-+	Siginfo      __Siginfo
-+	Tdname       [20]int8
-+	Child_pid    int32
-+	Syscall_code uint32
-+	Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+	Signo  int32
-+	Errno  int32
-+	Code   int32
-+	Pid    int32
-+	Uid    uint32
-+	Status int32
-+	Addr   *byte
-+	Value  [4]byte
-+	_      [32]byte
-+}
-+
-+type Sigset_t struct {
-+	Val [4]uint32
-+}
-+
-+type Reg struct {
-+	Fs     uint32
-+	Es     uint32
-+	Ds     uint32
-+	Edi    uint32
-+	Esi    uint32
-+	Ebp    uint32
-+	Isp    uint32
-+	Ebx    uint32
-+	Edx    uint32
-+	Ecx    uint32
-+	Eax    uint32
-+	Trapno uint32
-+	Err    uint32
-+	Eip    uint32
-+	Cs     uint32
-+	Eflags uint32
-+	Esp    uint32
-+	Ss     uint32
-+	Gs     uint32
-+}
-+
-+type FpReg struct {
-+	Env   [7]uint32
-+	Acc   [8][10]uint8
-+	Ex_sw uint32
-+	Pad   [64]uint8
-+}
-+
-+type PtraceIoDesc struct {
-+	Op   int32
-+	Offs *byte
-+	Addr *byte
-+	Len  uint32
-+}
-+
- type Kevent_t struct {
- 	Ident  uint32
- 	Filter int16
-@@ -285,7 +436,7 @@ type Kevent_t struct {
- }
- 
- type FdSet struct {
--	X__fds_bits [32]uint32
-+	Bits [32]uint32
- }
- 
- const (
-@@ -301,53 +452,52 @@ const (
- )
- 
- type ifMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      ifData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Data    ifData
- }
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	Data    IfData
- }
- 
- type ifData struct {
--	Type              uint8
--	Physical          uint8
--	Addrlen           uint8
--	Hdrlen            uint8
--	Link_state        uint8
--	Vhid              uint8
--	Datalen           uint16
--	Mtu               uint32
--	Metric            uint32
--	Baudrate          uint64
--	Ipackets          uint64
--	Ierrors           uint64
--	Opackets          uint64
--	Oerrors           uint64
--	Collisions        uint64
--	Ibytes            uint64
--	Obytes            uint64
--	Imcasts           uint64
--	Omcasts           uint64
--	Iqdrops           uint64
--	Oqdrops           uint64
--	Noproto           uint64
--	Hwassist          uint64
--	X__ifi_epoch      [8]byte
--	X__ifi_lastchange [16]byte
-+	Type       uint8
-+	Physical   uint8
-+	Addrlen    uint8
-+	Hdrlen     uint8
-+	Link_state uint8
-+	Vhid       uint8
-+	Datalen    uint16
-+	Mtu        uint32
-+	Metric     uint32
-+	Baudrate   uint64
-+	Ipackets   uint64
-+	Ierrors    uint64
-+	Opackets   uint64
-+	Oerrors    uint64
-+	Collisions uint64
-+	Ibytes     uint64
-+	Obytes     uint64
-+	Imcasts    uint64
-+	Omcasts    uint64
-+	Iqdrops    uint64
-+	Oqdrops    uint64
-+	Noproto    uint64
-+	Hwassist   uint64
-+	_          [8]byte
-+	_          [16]byte
- }
- 
- type IfData struct {
-@@ -379,24 +529,24 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
- }
- 
- type IfAnnounceMsghdr struct {
-@@ -409,19 +559,19 @@ type IfAnnounceMsghdr struct {
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Fmask     int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       uint16
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Fmask   int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -478,18 +628,18 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type BpfZbufHeader struct {
- 	Kernel_gen uint32
- 	Kernel_len uint32
- 	User_gen   uint32
--	X_bzh_pad  [5]uint32
-+	_          [5]uint32
- }
- 
- type Termios struct {
-@@ -516,6 +666,44 @@ const (
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR      = 0x8
-+	POLLHUP      = 0x10
-+	POLLIN       = 0x1
-+	POLLINIGNEOF = 0x2000
-+	POLLNVAL     = 0x20
-+	POLLOUT      = 0x4
-+	POLLPRI      = 0x2
-+	POLLRDBAND   = 0x80
-+	POLLRDNORM   = 0x40
-+	POLLWRBAND   = 0x100
-+	POLLWRNORM   = 0x4
-+)
-+
- type CapRights struct {
- 	Rights [2]uint64
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz     int32
-+	Tick   int32
-+	Spare  int32
-+	Stathz int32
-+	Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-index c65d89e4..e11e9549 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -57,40 +57,50 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
-+	_statfsVersion = 0x20140518
-+	_dirblksiz     = 0x400
- )
- 
- type Stat_t struct {
--	Dev           uint32
--	Ino           uint32
--	Mode          uint16
--	Nlink         uint16
--	Uid           uint32
--	Gid           uint32
--	Rdev          uint32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Birthtimespec Timespec
-+	Dev     uint64
-+	Ino     uint64
-+	Nlink   uint64
-+	Mode    uint16
-+	_0      int16
-+	Uid     uint32
-+	Gid     uint32
-+	_1      int32
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint64
-+	Spare   [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+	Dev     uint32
-+	Ino     uint32
-+	Mode    uint16
-+	Nlink   uint16
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Btim    Timespec
- }
- 
- type Statfs_t struct {
-@@ -113,22 +123,58 @@ type Statfs_t struct {
- 	Owner       uint32
- 	Fsid        Fsid
- 	Charspare   [80]int8
--	Fstypename  [16]int8
--	Mntfromname [88]int8
--	Mntonname   [88]int8
-+	Fstypename  [16]byte
-+	Mntfromname [1024]byte
-+	Mntonname   [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+	Version     uint32
-+	Type        uint32
-+	Flags       uint64
-+	Bsize       uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      int64
-+	Files       uint64
-+	Ffree       int64
-+	Syncwrites  uint64
-+	Asyncwrites uint64
-+	Syncreads   uint64
-+	Asyncreads  uint64
-+	Spare       [10]uint64
-+	Namemax     uint32
-+	Owner       uint32
-+	Fsid        Fsid
-+	Charspare   [80]int8
-+	Fstypename  [16]byte
-+	Mntfromname [88]byte
-+	Mntonname   [88]byte
- }
- 
- type Flock_t struct {
--	Start     int64
--	Len       int64
--	Pid       int32
--	Type      int16
--	Whence    int16
--	Sysid     int32
--	Pad_cgo_0 [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	Type   int16
-+	Whence int16
-+	Sysid  int32
-+	_      [4]byte
- }
- 
- type Dirent struct {
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Pad0   uint8
-+	Namlen uint16
-+	Pad1   uint16
-+	Name   [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- 	Fileno uint32
- 	Reclen uint16
- 	Type   uint8
-@@ -140,6 +186,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- const (
- 	FADV_NORMAL     = 0x0
- 	FADV_RANDOM     = 0x1
-@@ -225,10 +275,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     int32
--	Pad_cgo_1  [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -272,11 +320,115 @@ const (
- )
- 
- const (
--	PTRACE_TRACEME = 0x0
--	PTRACE_CONT    = 0x7
--	PTRACE_KILL    = 0x8
-+	PTRACE_ATTACH     = 0xa
-+	PTRACE_CONT       = 0x7
-+	PTRACE_DETACH     = 0xb
-+	PTRACE_GETFPREGS  = 0x23
-+	PTRACE_GETFSBASE  = 0x47
-+	PTRACE_GETLWPLIST = 0xf
-+	PTRACE_GETNUMLWPS = 0xe
-+	PTRACE_GETREGS    = 0x21
-+	PTRACE_GETXSTATE  = 0x45
-+	PTRACE_IO         = 0xc
-+	PTRACE_KILL       = 0x8
-+	PTRACE_LWPEVENTS  = 0x18
-+	PTRACE_LWPINFO    = 0xd
-+	PTRACE_SETFPREGS  = 0x24
-+	PTRACE_SETREGS    = 0x22
-+	PTRACE_SINGLESTEP = 0x9
-+	PTRACE_TRACEME    = 0x0
-+)
-+
-+const (
-+	PIOD_READ_D  = 0x1
-+	PIOD_WRITE_D = 0x2
-+	PIOD_READ_I  = 0x3
-+	PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+	PL_FLAG_BORN   = 0x100
-+	PL_FLAG_EXITED = 0x200
-+	PL_FLAG_SI     = 0x20
-+)
-+
-+const (
-+	TRAP_BRKPT = 0x1
-+	TRAP_TRACE = 0x2
- )
- 
-+type PtraceLwpInfoStruct struct {
-+	Lwpid        int32
-+	Event        int32
-+	Flags        int32
-+	Sigmask      Sigset_t
-+	Siglist      Sigset_t
-+	Siginfo      __Siginfo
-+	Tdname       [20]int8
-+	Child_pid    int32
-+	Syscall_code uint32
-+	Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+	Signo  int32
-+	Errno  int32
-+	Code   int32
-+	Pid    int32
-+	Uid    uint32
-+	Status int32
-+	Addr   *byte
-+	Value  [8]byte
-+	_      [40]byte
-+}
-+
-+type Sigset_t struct {
-+	Val [4]uint32
-+}
-+
-+type Reg struct {
-+	R15    int64
-+	R14    int64
-+	R13    int64
-+	R12    int64
-+	R11    int64
-+	R10    int64
-+	R9     int64
-+	R8     int64
-+	Rdi    int64
-+	Rsi    int64
-+	Rbp    int64
-+	Rbx    int64
-+	Rdx    int64
-+	Rcx    int64
-+	Rax    int64
-+	Trapno uint32
-+	Fs     uint16
-+	Gs     uint16
-+	Err    uint32
-+	Es     uint16
-+	Ds     uint16
-+	Rip    int64
-+	Cs     int64
-+	Rflags int64
-+	Rsp    int64
-+	Ss     int64
-+}
-+
-+type FpReg struct {
-+	Env   [4]uint64
-+	Acc   [8][16]uint8
-+	Xacc  [16][16]uint8
-+	Spare [12]uint64
-+}
-+
-+type PtraceIoDesc struct {
-+	Op   int32
-+	Offs *byte
-+	Addr *byte
-+	Len  uint64
-+}
-+
- type Kevent_t struct {
- 	Ident  uint64
- 	Filter int16
-@@ -287,7 +439,7 @@ type Kevent_t struct {
- }
- 
- type FdSet struct {
--	X__fds_bits [16]uint64
-+	Bits [16]uint64
- }
- 
- const (
-@@ -303,53 +455,52 @@ const (
- )
- 
- type ifMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      ifData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Data    ifData
- }
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	Data    IfData
- }
- 
- type ifData struct {
--	Type              uint8
--	Physical          uint8
--	Addrlen           uint8
--	Hdrlen            uint8
--	Link_state        uint8
--	Vhid              uint8
--	Datalen           uint16
--	Mtu               uint32
--	Metric            uint32
--	Baudrate          uint64
--	Ipackets          uint64
--	Ierrors           uint64
--	Opackets          uint64
--	Oerrors           uint64
--	Collisions        uint64
--	Ibytes            uint64
--	Obytes            uint64
--	Imcasts           uint64
--	Omcasts           uint64
--	Iqdrops           uint64
--	Oqdrops           uint64
--	Noproto           uint64
--	Hwassist          uint64
--	X__ifi_epoch      [8]byte
--	X__ifi_lastchange [16]byte
-+	Type       uint8
-+	Physical   uint8
-+	Addrlen    uint8
-+	Hdrlen     uint8
-+	Link_state uint8
-+	Vhid       uint8
-+	Datalen    uint16
-+	Mtu        uint32
-+	Metric     uint32
-+	Baudrate   uint64
-+	Ipackets   uint64
-+	Ierrors    uint64
-+	Opackets   uint64
-+	Oerrors    uint64
-+	Collisions uint64
-+	Ibytes     uint64
-+	Obytes     uint64
-+	Imcasts    uint64
-+	Omcasts    uint64
-+	Iqdrops    uint64
-+	Oqdrops    uint64
-+	Noproto    uint64
-+	Hwassist   uint64
-+	_          [8]byte
-+	_          [16]byte
- }
- 
- type IfData struct {
-@@ -381,24 +532,24 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
- }
- 
- type IfAnnounceMsghdr struct {
-@@ -411,19 +562,19 @@ type IfAnnounceMsghdr struct {
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Fmask     int32
--	Inits     uint64
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       uint16
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Fmask   int32
-+	Inits   uint64
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -468,9 +619,8 @@ type BpfZbuf struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -481,18 +631,18 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [6]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [6]byte
- }
- 
- type BpfZbufHeader struct {
- 	Kernel_gen uint32
- 	Kernel_len uint32
- 	User_gen   uint32
--	X_bzh_pad  [5]uint32
-+	_          [5]uint32
- }
- 
- type Termios struct {
-@@ -519,6 +669,44 @@ const (
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR      = 0x8
-+	POLLHUP      = 0x10
-+	POLLIN       = 0x1
-+	POLLINIGNEOF = 0x2000
-+	POLLNVAL     = 0x20
-+	POLLOUT      = 0x4
-+	POLLPRI      = 0x2
-+	POLLRDBAND   = 0x80
-+	POLLRDNORM   = 0x40
-+	POLLWRBAND   = 0x100
-+	POLLWRNORM   = 0x4
-+)
-+
- type CapRights struct {
- 	Rights [2]uint64
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz     int32
-+	Tick   int32
-+	Spare  int32
-+	Stathz int32
-+	Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-index 42c0a502..6f79227d 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -21,15 +21,15 @@ type (
- )
- 
- type Timespec struct {
--	Sec       int64
--	Nsec      int32
--	Pad_cgo_0 [4]byte
-+	Sec  int64
-+	Nsec int32
-+	_    [4]byte
- }
- 
- type Timeval struct {
--	Sec       int64
--	Usec      int32
--	Pad_cgo_0 [4]byte
-+	Sec  int64
-+	Usec int32
-+	_    [4]byte
- }
- 
- type Rusage struct {
-@@ -59,43 +59,78 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
-+	_statfsVersion = 0x20140518
-+	_dirblksiz     = 0x400
- )
- 
- type Stat_t struct {
--	Dev           uint32
--	Ino           uint32
--	Mode          uint16
--	Nlink         uint16
--	Uid           uint32
--	Gid           uint32
--	Rdev          uint32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Birthtimespec Timespec
-+	Dev     uint64
-+	Ino     uint64
-+	Nlink   uint64
-+	Mode    uint16
-+	_0      int16
-+	Uid     uint32
-+	Gid     uint32
-+	_1      int32
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint64
-+	Spare   [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+	Dev     uint32
-+	Ino     uint32
-+	Mode    uint16
-+	Nlink   uint16
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Btim    Timespec
- }
- 
- type Statfs_t struct {
-+	Version     uint32
-+	Type        uint32
-+	Flags       uint64
-+	Bsize       uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      int64
-+	Files       uint64
-+	Ffree       int64
-+	Syncwrites  uint64
-+	Asyncwrites uint64
-+	Syncreads   uint64
-+	Asyncreads  uint64
-+	Spare       [10]uint64
-+	Namemax     uint32
-+	Owner       uint32
-+	Fsid        Fsid
-+	Charspare   [80]int8
-+	Fstypename  [16]int8
-+	Mntfromname [1024]int8
-+	Mntonname   [1024]int8
-+}
-+
-+type statfs_freebsd11_t struct {
- 	Version     uint32
- 	Type        uint32
- 	Flags       uint64
-@@ -121,16 +156,27 @@ type Statfs_t struct {
- }
- 
- type Flock_t struct {
--	Start     int64
--	Len       int64
--	Pid       int32
--	Type      int16
--	Whence    int16
--	Sysid     int32
--	Pad_cgo_0 [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	Type   int16
-+	Whence int16
-+	Sysid  int32
-+	_      [4]byte
- }
- 
- type Dirent struct {
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Pad0   uint8
-+	Namlen uint16
-+	Pad1   uint16
-+	Name   [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- 	Fileno uint32
- 	Reclen uint16
- 	Type   uint8
-@@ -142,6 +188,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- const (
- 	FADV_NORMAL     = 0x0
- 	FADV_RANDOM     = 0x1
-@@ -272,11 +322,92 @@ const (
- )
- 
- const (
--	PTRACE_TRACEME = 0x0
--	PTRACE_CONT    = 0x7
--	PTRACE_KILL    = 0x8
-+	PTRACE_ATTACH     = 0xa
-+	PTRACE_CONT       = 0x7
-+	PTRACE_DETACH     = 0xb
-+	PTRACE_GETFPREGS  = 0x23
-+	PTRACE_GETFSBASE  = 0x47
-+	PTRACE_GETLWPLIST = 0xf
-+	PTRACE_GETNUMLWPS = 0xe
-+	PTRACE_GETREGS    = 0x21
-+	PTRACE_GETXSTATE  = 0x45
-+	PTRACE_IO         = 0xc
-+	PTRACE_KILL       = 0x8
-+	PTRACE_LWPEVENTS  = 0x18
-+	PTRACE_LWPINFO    = 0xd
-+	PTRACE_SETFPREGS  = 0x24
-+	PTRACE_SETREGS    = 0x22
-+	PTRACE_SINGLESTEP = 0x9
-+	PTRACE_TRACEME    = 0x0
-+)
-+
-+const (
-+	PIOD_READ_D  = 0x1
-+	PIOD_WRITE_D = 0x2
-+	PIOD_READ_I  = 0x3
-+	PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+	PL_FLAG_BORN   = 0x100
-+	PL_FLAG_EXITED = 0x200
-+	PL_FLAG_SI     = 0x20
- )
- 
-+const (
-+	TRAP_BRKPT = 0x1
-+	TRAP_TRACE = 0x2
-+)
-+
-+type PtraceLwpInfoStruct struct {
-+	Lwpid        int32
-+	Event        int32
-+	Flags        int32
-+	Sigmask      Sigset_t
-+	Siglist      Sigset_t
-+	Siginfo      __Siginfo
-+	Tdname       [20]int8
-+	Child_pid    int32
-+	Syscall_code uint32
-+	Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+	Signo    int32
-+	Errno    int32
-+	Code     int32
-+	Pid      int32
-+	Uid      uint32
-+	Status   int32
-+	Addr     *byte
-+	Value    [4]byte
-+	X_reason [32]byte
-+}
-+
-+type Sigset_t struct {
-+	Val [4]uint32
-+}
-+
-+type Reg struct {
-+	R      [13]uint32
-+	R_sp   uint32
-+	R_lr   uint32
-+	R_pc   uint32
-+	R_cpsr uint32
-+}
-+
-+type FpReg struct {
-+	Fpr_fpsr uint32
-+	Fpr      [8][3]uint32
-+}
-+
-+type PtraceIoDesc struct {
-+	Op   int32
-+	Offs *byte
-+	Addr *byte
-+	Len  uint32
-+}
-+
- type Kevent_t struct {
- 	Ident  uint32
- 	Filter int16
-@@ -287,7 +418,7 @@ type Kevent_t struct {
- }
- 
- type FdSet struct {
--	X__fds_bits [32]uint32
-+	Bits [32]uint32
- }
- 
- const (
-@@ -303,53 +434,53 @@ const (
- )
- 
- type ifMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      ifData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    ifData
- }
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type ifData struct {
--	Type              uint8
--	Physical          uint8
--	Addrlen           uint8
--	Hdrlen            uint8
--	Link_state        uint8
--	Vhid              uint8
--	Datalen           uint16
--	Mtu               uint32
--	Metric            uint32
--	Baudrate          uint64
--	Ipackets          uint64
--	Ierrors           uint64
--	Opackets          uint64
--	Oerrors           uint64
--	Collisions        uint64
--	Ibytes            uint64
--	Obytes            uint64
--	Imcasts           uint64
--	Omcasts           uint64
--	Iqdrops           uint64
--	Oqdrops           uint64
--	Noproto           uint64
--	Hwassist          uint64
--	X__ifi_epoch      [8]byte
--	X__ifi_lastchange [16]byte
-+	Type       uint8
-+	Physical   uint8
-+	Addrlen    uint8
-+	Hdrlen     uint8
-+	Link_state uint8
-+	Vhid       uint8
-+	Datalen    uint16
-+	Mtu        uint32
-+	Metric     uint32
-+	Baudrate   uint64
-+	Ipackets   uint64
-+	Ierrors    uint64
-+	Opackets   uint64
-+	Oerrors    uint64
-+	Collisions uint64
-+	Ibytes     uint64
-+	Obytes     uint64
-+	Imcasts    uint64
-+	Omcasts    uint64
-+	Iqdrops    uint64
-+	Oqdrops    uint64
-+	Noproto    uint64
-+	Hwassist   uint64
-+	_          [8]byte
-+	_          [16]byte
- }
- 
- type IfData struct {
-@@ -376,30 +507,30 @@ type IfData struct {
- 	Iqdrops     uint32
- 	Noproto     uint32
- 	Hwassist    uint32
--	Pad_cgo_0   [4]byte
-+	_           [4]byte
- 	Epoch       int64
- 	Lastchange  Timeval
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
- }
- 
- type IfAnnounceMsghdr struct {
-@@ -412,19 +543,19 @@ type IfAnnounceMsghdr struct {
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Fmask     int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Fmask   int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -481,18 +612,18 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [6]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [6]byte
- }
- 
- type BpfZbufHeader struct {
- 	Kernel_gen uint32
- 	Kernel_len uint32
- 	User_gen   uint32
--	X_bzh_pad  [5]uint32
-+	_          [5]uint32
- }
- 
- type Termios struct {
-@@ -519,6 +650,44 @@ const (
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR      = 0x8
-+	POLLHUP      = 0x10
-+	POLLIN       = 0x1
-+	POLLINIGNEOF = 0x2000
-+	POLLNVAL     = 0x20
-+	POLLOUT      = 0x4
-+	POLLPRI      = 0x2
-+	POLLRDBAND   = 0x80
-+	POLLRDNORM   = 0x40
-+	POLLWRBAND   = 0x100
-+	POLLWRNORM   = 0x4
-+)
-+
- type CapRights struct {
- 	Rights [2]uint64
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz     int32
-+	Tick   int32
-+	Spare  int32
-+	Stathz int32
-+	Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-similarity index 54%
-copy from vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-index c65d89e4..c6fe1d09 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-@@ -1,16 +1,16 @@
--// cgo -godefs types_freebsd.go | go run mkpost.go
-+// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,freebsd
-+// +build arm64,freebsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -57,40 +57,50 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
-+	_statfsVersion = 0x20140518
-+	_dirblksiz     = 0x400
- )
- 
- type Stat_t struct {
--	Dev           uint32
--	Ino           uint32
--	Mode          uint16
--	Nlink         uint16
--	Uid           uint32
--	Gid           uint32
--	Rdev          uint32
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       int32
--	Flags         uint32
--	Gen           uint32
--	Lspare        int32
--	Birthtimespec Timespec
-+	Dev     uint64
-+	Ino     uint64
-+	Nlink   uint64
-+	Mode    uint16
-+	_0      int16
-+	Uid     uint32
-+	Gid     uint32
-+	_1      int32
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint64
-+	Spare   [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+	Dev     uint32
-+	Ino     uint32
-+	Mode    uint16
-+	Nlink   uint16
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	Lspare  int32
-+	Btim    Timespec
- }
- 
- type Statfs_t struct {
-@@ -113,22 +123,58 @@ type Statfs_t struct {
- 	Owner       uint32
- 	Fsid        Fsid
- 	Charspare   [80]int8
--	Fstypename  [16]int8
--	Mntfromname [88]int8
--	Mntonname   [88]int8
-+	Fstypename  [16]byte
-+	Mntfromname [1024]byte
-+	Mntonname   [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+	Version     uint32
-+	Type        uint32
-+	Flags       uint64
-+	Bsize       uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      int64
-+	Files       uint64
-+	Ffree       int64
-+	Syncwrites  uint64
-+	Asyncwrites uint64
-+	Syncreads   uint64
-+	Asyncreads  uint64
-+	Spare       [10]uint64
-+	Namemax     uint32
-+	Owner       uint32
-+	Fsid        Fsid
-+	Charspare   [80]int8
-+	Fstypename  [16]byte
-+	Mntfromname [88]byte
-+	Mntonname   [88]byte
- }
- 
- type Flock_t struct {
--	Start     int64
--	Len       int64
--	Pid       int32
--	Type      int16
--	Whence    int16
--	Sysid     int32
--	Pad_cgo_0 [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	Type   int16
-+	Whence int16
-+	Sysid  int32
-+	_      [4]byte
- }
- 
- type Dirent struct {
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Pad0   uint8
-+	Namlen uint16
-+	Pad1   uint16
-+	Name   [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- 	Fileno uint32
- 	Reclen uint16
- 	Type   uint8
-@@ -140,6 +186,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- const (
- 	FADV_NORMAL     = 0x0
- 	FADV_RANDOM     = 0x1
-@@ -225,10 +275,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     int32
--	Pad_cgo_1  [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -272,11 +320,93 @@ const (
- )
- 
- const (
--	PTRACE_TRACEME = 0x0
--	PTRACE_CONT    = 0x7
--	PTRACE_KILL    = 0x8
-+	PTRACE_ATTACH     = 0xa
-+	PTRACE_CONT       = 0x7
-+	PTRACE_DETACH     = 0xb
-+	PTRACE_GETFPREGS  = 0x23
-+	PTRACE_GETLWPLIST = 0xf
-+	PTRACE_GETNUMLWPS = 0xe
-+	PTRACE_GETREGS    = 0x21
-+	PTRACE_IO         = 0xc
-+	PTRACE_KILL       = 0x8
-+	PTRACE_LWPEVENTS  = 0x18
-+	PTRACE_LWPINFO    = 0xd
-+	PTRACE_SETFPREGS  = 0x24
-+	PTRACE_SETREGS    = 0x22
-+	PTRACE_SINGLESTEP = 0x9
-+	PTRACE_TRACEME    = 0x0
-+)
-+
-+const (
-+	PIOD_READ_D  = 0x1
-+	PIOD_WRITE_D = 0x2
-+	PIOD_READ_I  = 0x3
-+	PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+	PL_FLAG_BORN   = 0x100
-+	PL_FLAG_EXITED = 0x200
-+	PL_FLAG_SI     = 0x20
-+)
-+
-+const (
-+	TRAP_BRKPT = 0x1
-+	TRAP_TRACE = 0x2
- )
- 
-+type PtraceLwpInfoStruct struct {
-+	Lwpid        int32
-+	Event        int32
-+	Flags        int32
-+	Sigmask      Sigset_t
-+	Siglist      Sigset_t
-+	Siginfo      __Siginfo
-+	Tdname       [20]int8
-+	Child_pid    int32
-+	Syscall_code uint32
-+	Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+	Signo  int32
-+	Errno  int32
-+	Code   int32
-+	Pid    int32
-+	Uid    uint32
-+	Status int32
-+	Addr   *byte
-+	Value  [8]byte
-+	_      [40]byte
-+}
-+
-+type Sigset_t struct {
-+	Val [4]uint32
-+}
-+
-+type Reg struct {
-+	X    [30]uint64
-+	Lr   uint64
-+	Sp   uint64
-+	Elr  uint64
-+	Spsr uint32
-+	_    [4]byte
-+}
-+
-+type FpReg struct {
-+	Q  [32][16]uint8
-+	Sr uint32
-+	Cr uint32
-+	_  [8]byte
-+}
-+
-+type PtraceIoDesc struct {
-+	Op   int32
-+	Offs *byte
-+	Addr *byte
-+	Len  uint64
-+}
-+
- type Kevent_t struct {
- 	Ident  uint64
- 	Filter int16
-@@ -287,7 +417,7 @@ type Kevent_t struct {
- }
- 
- type FdSet struct {
--	X__fds_bits [16]uint64
-+	Bits [16]uint64
- }
- 
- const (
-@@ -303,53 +433,52 @@ const (
- )
- 
- type ifMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      ifData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Data    ifData
- }
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	Data    IfData
- }
- 
- type ifData struct {
--	Type              uint8
--	Physical          uint8
--	Addrlen           uint8
--	Hdrlen            uint8
--	Link_state        uint8
--	Vhid              uint8
--	Datalen           uint16
--	Mtu               uint32
--	Metric            uint32
--	Baudrate          uint64
--	Ipackets          uint64
--	Ierrors           uint64
--	Opackets          uint64
--	Oerrors           uint64
--	Collisions        uint64
--	Ibytes            uint64
--	Obytes            uint64
--	Imcasts           uint64
--	Omcasts           uint64
--	Iqdrops           uint64
--	Oqdrops           uint64
--	Noproto           uint64
--	Hwassist          uint64
--	X__ifi_epoch      [8]byte
--	X__ifi_lastchange [16]byte
-+	Type       uint8
-+	Physical   uint8
-+	Addrlen    uint8
-+	Hdrlen     uint8
-+	Link_state uint8
-+	Vhid       uint8
-+	Datalen    uint16
-+	Mtu        uint32
-+	Metric     uint32
-+	Baudrate   uint64
-+	Ipackets   uint64
-+	Ierrors    uint64
-+	Opackets   uint64
-+	Oerrors    uint64
-+	Collisions uint64
-+	Ibytes     uint64
-+	Obytes     uint64
-+	Imcasts    uint64
-+	Omcasts    uint64
-+	Iqdrops    uint64
-+	Oqdrops    uint64
-+	Noproto    uint64
-+	Hwassist   uint64
-+	_          [8]byte
-+	_          [16]byte
- }
- 
- type IfData struct {
-@@ -381,24 +510,24 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
-+	Metric  int32
- }
- 
- type IfmaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       uint16
- }
- 
- type IfAnnounceMsghdr struct {
-@@ -411,19 +540,19 @@ type IfAnnounceMsghdr struct {
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Fmask     int32
--	Inits     uint64
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       uint16
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Fmask   int32
-+	Inits   uint64
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -468,9 +597,8 @@ type BpfZbuf struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -481,18 +609,18 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    Timeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [6]byte
-+	Tstamp  Timeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [6]byte
- }
- 
- type BpfZbufHeader struct {
- 	Kernel_gen uint32
- 	Kernel_len uint32
- 	User_gen   uint32
--	X_bzh_pad  [5]uint32
-+	_          [5]uint32
- }
- 
- type Termios struct {
-@@ -519,6 +647,44 @@ const (
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR      = 0x8
-+	POLLHUP      = 0x10
-+	POLLIN       = 0x1
-+	POLLINIGNEOF = 0x2000
-+	POLLNVAL     = 0x20
-+	POLLOUT      = 0x4
-+	POLLPRI      = 0x2
-+	POLLRDBAND   = 0x80
-+	POLLRDNORM   = 0x40
-+	POLLWRBAND   = 0x100
-+	POLLWRNORM   = 0x4
-+)
-+
- type CapRights struct {
- 	Rights [2]uint64
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz     int32
-+	Tick   int32
-+	Spare  int32
-+	Stathz int32
-+	Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go
-new file mode 100644
-index 00000000..af5ab455
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go
-@@ -0,0 +1,2340 @@
-+// Code generated by mkmerge.go; DO NOT EDIT.
-+
-+// +build linux
-+
-+package unix
-+
-+const (
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLongLong = 0x8
-+	PathMax        = 0x1000
-+)
-+
-+type (
-+	_C_short int16
-+	_C_int   int32
-+
-+	_C_long_long int64
-+)
-+
-+const (
-+	TIME_OK    = 0x0
-+	TIME_INS   = 0x1
-+	TIME_DEL   = 0x2
-+	TIME_OOP   = 0x3
-+	TIME_WAIT  = 0x4
-+	TIME_ERROR = 0x5
-+	TIME_BAD   = 0x5
-+)
-+
-+type Rlimit struct {
-+	Cur uint64
-+	Max uint64
-+}
-+
-+type _Gid_t uint32
-+
-+type StatxTimestamp struct {
-+	Sec  int64
-+	Nsec uint32
-+	_    int32
-+}
-+
-+type Statx_t struct {
-+	Mask            uint32
-+	Blksize         uint32
-+	Attributes      uint64
-+	Nlink           uint32
-+	Uid             uint32
-+	Gid             uint32
-+	Mode            uint16
-+	_               [1]uint16
-+	Ino             uint64
-+	Size            uint64
-+	Blocks          uint64
-+	Attributes_mask uint64
-+	Atime           StatxTimestamp
-+	Btime           StatxTimestamp
-+	Ctime           StatxTimestamp
-+	Mtime           StatxTimestamp
-+	Rdev_major      uint32
-+	Rdev_minor      uint32
-+	Dev_major       uint32
-+	Dev_minor       uint32
-+	_               [14]uint64
-+}
-+
-+type Fsid struct {
-+	Val [2]int32
-+}
-+
-+type FscryptPolicy struct {
-+	Version                   uint8
-+	Contents_encryption_mode  uint8
-+	Filenames_encryption_mode uint8
-+	Flags                     uint8
-+	Master_key_descriptor     [8]uint8
-+}
-+
-+type FscryptKey struct {
-+	Mode uint32
-+	Raw  [64]uint8
-+	Size uint32
-+}
-+
-+type FscryptPolicyV1 struct {
-+	Version                   uint8
-+	Contents_encryption_mode  uint8
-+	Filenames_encryption_mode uint8
-+	Flags                     uint8
-+	Master_key_descriptor     [8]uint8
-+}
-+
-+type FscryptPolicyV2 struct {
-+	Version                   uint8
-+	Contents_encryption_mode  uint8
-+	Filenames_encryption_mode uint8
-+	Flags                     uint8
-+	_                         [4]uint8
-+	Master_key_identifier     [16]uint8
-+}
-+
-+type FscryptGetPolicyExArg struct {
-+	Size   uint64
-+	Policy [24]byte
-+}
-+
-+type FscryptKeySpecifier struct {
-+	Type uint32
-+	_    uint32
-+	U    [32]byte
-+}
-+
-+type FscryptAddKeyArg struct {
-+	Key_spec FscryptKeySpecifier
-+	Raw_size uint32
-+	Key_id   uint32
-+	_        [8]uint32
-+}
-+
-+type FscryptRemoveKeyArg struct {
-+	Key_spec             FscryptKeySpecifier
-+	Removal_status_flags uint32
-+	_                    [5]uint32
-+}
-+
-+type FscryptGetKeyStatusArg struct {
-+	Key_spec     FscryptKeySpecifier
-+	_            [6]uint32
-+	Status       uint32
-+	Status_flags uint32
-+	User_count   uint32
-+	_            [13]uint32
-+}
-+
-+type KeyctlDHParams struct {
-+	Private int32
-+	Prime   int32
-+	Base    int32
-+}
-+
-+const (
-+	FADV_NORMAL     = 0x0
-+	FADV_RANDOM     = 0x1
-+	FADV_SEQUENTIAL = 0x2
-+	FADV_WILLNEED   = 0x3
-+)
-+
-+type RawSockaddrInet4 struct {
-+	Family uint16
-+	Port   uint16
-+	Addr   [4]byte /* in_addr */
-+	Zero   [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+	Family   uint16
-+	Port     uint16
-+	Flowinfo uint32
-+	Addr     [16]byte /* in6_addr */
-+	Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+	Family uint16
-+	Path   [108]int8
-+}
-+
-+type RawSockaddrLinklayer struct {
-+	Family   uint16
-+	Protocol uint16
-+	Ifindex  int32
-+	Hatype   uint16
-+	Pkttype  uint8
-+	Halen    uint8
-+	Addr     [8]uint8
-+}
-+
-+type RawSockaddrNetlink struct {
-+	Family uint16
-+	Pad    uint16
-+	Pid    uint32
-+	Groups uint32
-+}
-+
-+type RawSockaddrHCI struct {
-+	Family  uint16
-+	Dev     uint16
-+	Channel uint16
-+}
-+
-+type RawSockaddrL2 struct {
-+	Family      uint16
-+	Psm         uint16
-+	Bdaddr      [6]uint8
-+	Cid         uint16
-+	Bdaddr_type uint8
-+	_           [1]byte
-+}
-+
-+type RawSockaddrRFCOMM struct {
-+	Family  uint16
-+	Bdaddr  [6]uint8
-+	Channel uint8
-+	_       [1]byte
-+}
-+
-+type RawSockaddrCAN struct {
-+	Family  uint16
-+	Ifindex int32
-+	Addr    [16]byte
-+}
-+
-+type RawSockaddrALG struct {
-+	Family uint16
-+	Type   [14]uint8
-+	Feat   uint32
-+	Mask   uint32
-+	Name   [64]uint8
-+}
-+
-+type RawSockaddrVM struct {
-+	Family    uint16
-+	Reserved1 uint16
-+	Port      uint32
-+	Cid       uint32
-+	Zero      [4]uint8
-+}
-+
-+type RawSockaddrXDP struct {
-+	Family         uint16
-+	Flags          uint16
-+	Ifindex        uint32
-+	Queue_id       uint32
-+	Shared_umem_fd uint32
-+}
-+
-+type RawSockaddrPPPoX [0x1e]byte
-+
-+type RawSockaddrTIPC struct {
-+	Family   uint16
-+	Addrtype uint8
-+	Scope    int8
-+	Addr     [12]byte
-+}
-+
-+type RawSockaddrL2TPIP struct {
-+	Family  uint16
-+	Unused  uint16
-+	Addr    [4]byte /* in_addr */
-+	Conn_id uint32
-+	_       [4]uint8
-+}
-+
-+type RawSockaddrL2TPIP6 struct {
-+	Family   uint16
-+	Unused   uint16
-+	Flowinfo uint32
-+	Addr     [16]byte /* in6_addr */
-+	Scope_id uint32
-+	Conn_id  uint32
-+}
-+
-+type _Socklen uint32
-+
-+type Linger struct {
-+	Onoff  int32
-+	Linger int32
-+}
-+
-+type IPMreq struct {
-+	Multiaddr [4]byte /* in_addr */
-+	Interface [4]byte /* in_addr */
-+}
-+
-+type IPMreqn struct {
-+	Multiaddr [4]byte /* in_addr */
-+	Address   [4]byte /* in_addr */
-+	Ifindex   int32
-+}
-+
-+type IPv6Mreq struct {
-+	Multiaddr [16]byte /* in6_addr */
-+	Interface uint32
-+}
-+
-+type PacketMreq struct {
-+	Ifindex int32
-+	Type    uint16
-+	Alen    uint16
-+	Address [8]uint8
-+}
-+
-+type Inet4Pktinfo struct {
-+	Ifindex  int32
-+	Spec_dst [4]byte /* in_addr */
-+	Addr     [4]byte /* in_addr */
-+}
-+
-+type Inet6Pktinfo struct {
-+	Addr    [16]byte /* in6_addr */
-+	Ifindex uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+	Addr RawSockaddrInet6
-+	Mtu  uint32
-+}
-+
-+type ICMPv6Filter struct {
-+	Data [8]uint32
-+}
-+
-+type Ucred struct {
-+	Pid int32
-+	Uid uint32
-+	Gid uint32
-+}
-+
-+type TCPInfo struct {
-+	State          uint8
-+	Ca_state       uint8
-+	Retransmits    uint8
-+	Probes         uint8
-+	Backoff        uint8
-+	Options        uint8
-+	Rto            uint32
-+	Ato            uint32
-+	Snd_mss        uint32
-+	Rcv_mss        uint32
-+	Unacked        uint32
-+	Sacked         uint32
-+	Lost           uint32
-+	Retrans        uint32
-+	Fackets        uint32
-+	Last_data_sent uint32
-+	Last_ack_sent  uint32
-+	Last_data_recv uint32
-+	Last_ack_recv  uint32
-+	Pmtu           uint32
-+	Rcv_ssthresh   uint32
-+	Rtt            uint32
-+	Rttvar         uint32
-+	Snd_ssthresh   uint32
-+	Snd_cwnd       uint32
-+	Advmss         uint32
-+	Reordering     uint32
-+	Rcv_rtt        uint32
-+	Rcv_space      uint32
-+	Total_retrans  uint32
-+}
-+
-+type CanFilter struct {
-+	Id   uint32
-+	Mask uint32
-+}
-+
-+const (
-+	SizeofSockaddrInet4     = 0x10
-+	SizeofSockaddrInet6     = 0x1c
-+	SizeofSockaddrAny       = 0x70
-+	SizeofSockaddrUnix      = 0x6e
-+	SizeofSockaddrLinklayer = 0x14
-+	SizeofSockaddrNetlink   = 0xc
-+	SizeofSockaddrHCI       = 0x6
-+	SizeofSockaddrL2        = 0xe
-+	SizeofSockaddrRFCOMM    = 0xa
-+	SizeofSockaddrCAN       = 0x18
-+	SizeofSockaddrALG       = 0x58
-+	SizeofSockaddrVM        = 0x10
-+	SizeofSockaddrXDP       = 0x10
-+	SizeofSockaddrPPPoX     = 0x1e
-+	SizeofSockaddrTIPC      = 0x10
-+	SizeofSockaddrL2TPIP    = 0x10
-+	SizeofSockaddrL2TPIP6   = 0x20
-+	SizeofLinger            = 0x8
-+	SizeofIPMreq            = 0x8
-+	SizeofIPMreqn           = 0xc
-+	SizeofIPv6Mreq          = 0x14
-+	SizeofPacketMreq        = 0x10
-+	SizeofInet4Pktinfo      = 0xc
-+	SizeofInet6Pktinfo      = 0x14
-+	SizeofIPv6MTUInfo       = 0x20
-+	SizeofICMPv6Filter      = 0x20
-+	SizeofUcred             = 0xc
-+	SizeofTCPInfo           = 0x68
-+	SizeofCanFilter         = 0x8
-+)
-+
-+const (
-+	NDA_UNSPEC              = 0x0
-+	NDA_DST                 = 0x1
-+	NDA_LLADDR              = 0x2
-+	NDA_CACHEINFO           = 0x3
-+	NDA_PROBES              = 0x4
-+	NDA_VLAN                = 0x5
-+	NDA_PORT                = 0x6
-+	NDA_VNI                 = 0x7
-+	NDA_IFINDEX             = 0x8
-+	NDA_MASTER              = 0x9
-+	NDA_LINK_NETNSID        = 0xa
-+	NDA_SRC_VNI             = 0xb
-+	NTF_USE                 = 0x1
-+	NTF_SELF                = 0x2
-+	NTF_MASTER              = 0x4
-+	NTF_PROXY               = 0x8
-+	NTF_EXT_LEARNED         = 0x10
-+	NTF_OFFLOADED           = 0x20
-+	NTF_ROUTER              = 0x80
-+	NUD_INCOMPLETE          = 0x1
-+	NUD_REACHABLE           = 0x2
-+	NUD_STALE               = 0x4
-+	NUD_DELAY               = 0x8
-+	NUD_PROBE               = 0x10
-+	NUD_FAILED              = 0x20
-+	NUD_NOARP               = 0x40
-+	NUD_PERMANENT           = 0x80
-+	NUD_NONE                = 0x0
-+	IFA_UNSPEC              = 0x0
-+	IFA_ADDRESS             = 0x1
-+	IFA_LOCAL               = 0x2
-+	IFA_LABEL               = 0x3
-+	IFA_BROADCAST           = 0x4
-+	IFA_ANYCAST             = 0x5
-+	IFA_CACHEINFO           = 0x6
-+	IFA_MULTICAST           = 0x7
-+	IFA_FLAGS               = 0x8
-+	IFA_RT_PRIORITY         = 0x9
-+	IFA_TARGET_NETNSID      = 0xa
-+	IFLA_UNSPEC             = 0x0
-+	IFLA_ADDRESS            = 0x1
-+	IFLA_BROADCAST          = 0x2
-+	IFLA_IFNAME             = 0x3
-+	IFLA_MTU                = 0x4
-+	IFLA_LINK               = 0x5
-+	IFLA_QDISC              = 0x6
-+	IFLA_STATS              = 0x7
-+	IFLA_COST               = 0x8
-+	IFLA_PRIORITY           = 0x9
-+	IFLA_MASTER             = 0xa
-+	IFLA_WIRELESS           = 0xb
-+	IFLA_PROTINFO           = 0xc
-+	IFLA_TXQLEN             = 0xd
-+	IFLA_MAP                = 0xe
-+	IFLA_WEIGHT             = 0xf
-+	IFLA_OPERSTATE          = 0x10
-+	IFLA_LINKMODE           = 0x11
-+	IFLA_LINKINFO           = 0x12
-+	IFLA_NET_NS_PID         = 0x13
-+	IFLA_IFALIAS            = 0x14
-+	IFLA_NUM_VF             = 0x15
-+	IFLA_VFINFO_LIST        = 0x16
-+	IFLA_STATS64            = 0x17
-+	IFLA_VF_PORTS           = 0x18
-+	IFLA_PORT_SELF          = 0x19
-+	IFLA_AF_SPEC            = 0x1a
-+	IFLA_GROUP              = 0x1b
-+	IFLA_NET_NS_FD          = 0x1c
-+	IFLA_EXT_MASK           = 0x1d
-+	IFLA_PROMISCUITY        = 0x1e
-+	IFLA_NUM_TX_QUEUES      = 0x1f
-+	IFLA_NUM_RX_QUEUES      = 0x20
-+	IFLA_CARRIER            = 0x21
-+	IFLA_PHYS_PORT_ID       = 0x22
-+	IFLA_CARRIER_CHANGES    = 0x23
-+	IFLA_PHYS_SWITCH_ID     = 0x24
-+	IFLA_LINK_NETNSID       = 0x25
-+	IFLA_PHYS_PORT_NAME     = 0x26
-+	IFLA_PROTO_DOWN         = 0x27
-+	IFLA_GSO_MAX_SEGS       = 0x28
-+	IFLA_GSO_MAX_SIZE       = 0x29
-+	IFLA_PAD                = 0x2a
-+	IFLA_XDP                = 0x2b
-+	IFLA_EVENT              = 0x2c
-+	IFLA_NEW_NETNSID        = 0x2d
-+	IFLA_IF_NETNSID         = 0x2e
-+	IFLA_TARGET_NETNSID     = 0x2e
-+	IFLA_CARRIER_UP_COUNT   = 0x2f
-+	IFLA_CARRIER_DOWN_COUNT = 0x30
-+	IFLA_NEW_IFINDEX        = 0x31
-+	IFLA_MIN_MTU            = 0x32
-+	IFLA_MAX_MTU            = 0x33
-+	IFLA_MAX                = 0x36
-+	IFLA_INFO_KIND          = 0x1
-+	IFLA_INFO_DATA          = 0x2
-+	IFLA_INFO_XSTATS        = 0x3
-+	IFLA_INFO_SLAVE_KIND    = 0x4
-+	IFLA_INFO_SLAVE_DATA    = 0x5
-+	RT_SCOPE_UNIVERSE       = 0x0
-+	RT_SCOPE_SITE           = 0xc8
-+	RT_SCOPE_LINK           = 0xfd
-+	RT_SCOPE_HOST           = 0xfe
-+	RT_SCOPE_NOWHERE        = 0xff
-+	RT_TABLE_UNSPEC         = 0x0
-+	RT_TABLE_COMPAT         = 0xfc
-+	RT_TABLE_DEFAULT        = 0xfd
-+	RT_TABLE_MAIN           = 0xfe
-+	RT_TABLE_LOCAL          = 0xff
-+	RT_TABLE_MAX            = 0xffffffff
-+	RTA_UNSPEC              = 0x0
-+	RTA_DST                 = 0x1
-+	RTA_SRC                 = 0x2
-+	RTA_IIF                 = 0x3
-+	RTA_OIF                 = 0x4
-+	RTA_GATEWAY             = 0x5
-+	RTA_PRIORITY            = 0x6
-+	RTA_PREFSRC             = 0x7
-+	RTA_METRICS             = 0x8
-+	RTA_MULTIPATH           = 0x9
-+	RTA_FLOW                = 0xb
-+	RTA_CACHEINFO           = 0xc
-+	RTA_TABLE               = 0xf
-+	RTA_MARK                = 0x10
-+	RTA_MFC_STATS           = 0x11
-+	RTA_VIA                 = 0x12
-+	RTA_NEWDST              = 0x13
-+	RTA_PREF                = 0x14
-+	RTA_ENCAP_TYPE          = 0x15
-+	RTA_ENCAP               = 0x16
-+	RTA_EXPIRES             = 0x17
-+	RTA_PAD                 = 0x18
-+	RTA_UID                 = 0x19
-+	RTA_TTL_PROPAGATE       = 0x1a
-+	RTA_IP_PROTO            = 0x1b
-+	RTA_SPORT               = 0x1c
-+	RTA_DPORT               = 0x1d
-+	RTN_UNSPEC              = 0x0
-+	RTN_UNICAST             = 0x1
-+	RTN_LOCAL               = 0x2
-+	RTN_BROADCAST           = 0x3
-+	RTN_ANYCAST             = 0x4
-+	RTN_MULTICAST           = 0x5
-+	RTN_BLACKHOLE           = 0x6
-+	RTN_UNREACHABLE         = 0x7
-+	RTN_PROHIBIT            = 0x8
-+	RTN_THROW               = 0x9
-+	RTN_NAT                 = 0xa
-+	RTN_XRESOLVE            = 0xb
-+	SizeofNlMsghdr          = 0x10
-+	SizeofNlMsgerr          = 0x14
-+	SizeofRtGenmsg          = 0x1
-+	SizeofNlAttr            = 0x4
-+	SizeofRtAttr            = 0x4
-+	SizeofIfInfomsg         = 0x10
-+	SizeofIfAddrmsg         = 0x8
-+	SizeofIfaCacheinfo      = 0x10
-+	SizeofRtMsg             = 0xc
-+	SizeofRtNexthop         = 0x8
-+	SizeofNdUseroptmsg      = 0x10
-+	SizeofNdMsg             = 0xc
-+)
-+
-+type NlMsghdr struct {
-+	Len   uint32
-+	Type  uint16
-+	Flags uint16
-+	Seq   uint32
-+	Pid   uint32
-+}
-+
-+type NlMsgerr struct {
-+	Error int32
-+	Msg   NlMsghdr
-+}
-+
-+type RtGenmsg struct {
-+	Family uint8
-+}
-+
-+type NlAttr struct {
-+	Len  uint16
-+	Type uint16
-+}
-+
-+type RtAttr struct {
-+	Len  uint16
-+	Type uint16
-+}
-+
-+type IfInfomsg struct {
-+	Family uint8
-+	_      uint8
-+	Type   uint16
-+	Index  int32
-+	Flags  uint32
-+	Change uint32
-+}
-+
-+type IfAddrmsg struct {
-+	Family    uint8
-+	Prefixlen uint8
-+	Flags     uint8
-+	Scope     uint8
-+	Index     uint32
-+}
-+
-+type IfaCacheinfo struct {
-+	Prefered uint32
-+	Valid    uint32
-+	Cstamp   uint32
-+	Tstamp   uint32
-+}
-+
-+type RtMsg struct {
-+	Family   uint8
-+	Dst_len  uint8
-+	Src_len  uint8
-+	Tos      uint8
-+	Table    uint8
-+	Protocol uint8
-+	Scope    uint8
-+	Type     uint8
-+	Flags    uint32
-+}
-+
-+type RtNexthop struct {
-+	Len     uint16
-+	Flags   uint8
-+	Hops    uint8
-+	Ifindex int32
-+}
-+
-+type NdUseroptmsg struct {
-+	Family    uint8
-+	Pad1      uint8
-+	Opts_len  uint16
-+	Ifindex   int32
-+	Icmp_type uint8
-+	Icmp_code uint8
-+	Pad2      uint16
-+	Pad3      uint32
-+}
-+
-+type NdMsg struct {
-+	Family  uint8
-+	Pad1    uint8
-+	Pad2    uint16
-+	Ifindex int32
-+	State   uint16
-+	Flags   uint8
-+	Type    uint8
-+}
-+
-+const (
-+	SizeofSockFilter = 0x8
-+)
-+
-+type SockFilter struct {
-+	Code uint16
-+	Jt   uint8
-+	Jf   uint8
-+	K    uint32
-+}
-+
-+type SockFprog struct {
-+	Len    uint16
-+	Filter *SockFilter
-+}
-+
-+type InotifyEvent struct {
-+	Wd     int32
-+	Mask   uint32
-+	Cookie uint32
-+	Len    uint32
-+}
-+
-+const SizeofInotifyEvent = 0x10
-+
-+type Utsname struct {
-+	Sysname    [65]byte
-+	Nodename   [65]byte
-+	Release    [65]byte
-+	Version    [65]byte
-+	Machine    [65]byte
-+	Domainname [65]byte
-+}
-+
-+const (
-+	AT_EMPTY_PATH   = 0x1000
-+	AT_FDCWD        = -0x64
-+	AT_NO_AUTOMOUNT = 0x800
-+	AT_REMOVEDIR    = 0x200
-+
-+	AT_STATX_SYNC_AS_STAT = 0x0
-+	AT_STATX_FORCE_SYNC   = 0x2000
-+	AT_STATX_DONT_SYNC    = 0x4000
-+
-+	AT_SYMLINK_FOLLOW   = 0x400
-+	AT_SYMLINK_NOFOLLOW = 0x100
-+
-+	AT_EACCESS = 0x200
-+)
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLIN   = 0x1
-+	POLLPRI  = 0x2
-+	POLLOUT  = 0x4
-+	POLLERR  = 0x8
-+	POLLHUP  = 0x10
-+	POLLNVAL = 0x20
-+)
-+
-+type SignalfdSiginfo struct {
-+	Signo     uint32
-+	Errno     int32
-+	Code      int32
-+	Pid       uint32
-+	Uid       uint32
-+	Fd        int32
-+	Tid       uint32
-+	Band      uint32
-+	Overrun   uint32
-+	Trapno    uint32
-+	Status    int32
-+	Int       int32
-+	Ptr       uint64
-+	Utime     uint64
-+	Stime     uint64
-+	Addr      uint64
-+	Addr_lsb  uint16
-+	_         uint16
-+	Syscall   int32
-+	Call_addr uint64
-+	Arch      uint32
-+	_         [28]uint8
-+}
-+
-+const PERF_IOC_FLAG_GROUP = 0x1
-+
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+const (
-+	TASKSTATS_CMD_UNSPEC                  = 0x0
-+	TASKSTATS_CMD_GET                     = 0x1
-+	TASKSTATS_CMD_NEW                     = 0x2
-+	TASKSTATS_TYPE_UNSPEC                 = 0x0
-+	TASKSTATS_TYPE_PID                    = 0x1
-+	TASKSTATS_TYPE_TGID                   = 0x2
-+	TASKSTATS_TYPE_STATS                  = 0x3
-+	TASKSTATS_TYPE_AGGR_PID               = 0x4
-+	TASKSTATS_TYPE_AGGR_TGID              = 0x5
-+	TASKSTATS_TYPE_NULL                   = 0x6
-+	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
-+	TASKSTATS_CMD_ATTR_PID                = 0x1
-+	TASKSTATS_CMD_ATTR_TGID               = 0x2
-+	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
-+	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+)
-+
-+type CGroupStats struct {
-+	Sleeping        uint64
-+	Running         uint64
-+	Stopped         uint64
-+	Uninterruptible uint64
-+	Io_wait         uint64
-+}
-+
-+const (
-+	CGROUPSTATS_CMD_UNSPEC        = 0x3
-+	CGROUPSTATS_CMD_GET           = 0x4
-+	CGROUPSTATS_CMD_NEW           = 0x5
-+	CGROUPSTATS_TYPE_UNSPEC       = 0x0
-+	CGROUPSTATS_TYPE_CGROUP_STATS = 0x1
-+	CGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0
-+	CGROUPSTATS_CMD_ATTR_FD       = 0x1
-+)
-+
-+type Genlmsghdr struct {
-+	Cmd      uint8
-+	Version  uint8
-+	Reserved uint16
-+}
-+
-+const (
-+	CTRL_CMD_UNSPEC            = 0x0
-+	CTRL_CMD_NEWFAMILY         = 0x1
-+	CTRL_CMD_DELFAMILY         = 0x2
-+	CTRL_CMD_GETFAMILY         = 0x3
-+	CTRL_CMD_NEWOPS            = 0x4
-+	CTRL_CMD_DELOPS            = 0x5
-+	CTRL_CMD_GETOPS            = 0x6
-+	CTRL_CMD_NEWMCAST_GRP      = 0x7
-+	CTRL_CMD_DELMCAST_GRP      = 0x8
-+	CTRL_CMD_GETMCAST_GRP      = 0x9
-+	CTRL_ATTR_UNSPEC           = 0x0
-+	CTRL_ATTR_FAMILY_ID        = 0x1
-+	CTRL_ATTR_FAMILY_NAME      = 0x2
-+	CTRL_ATTR_VERSION          = 0x3
-+	CTRL_ATTR_HDRSIZE          = 0x4
-+	CTRL_ATTR_MAXATTR          = 0x5
-+	CTRL_ATTR_OPS              = 0x6
-+	CTRL_ATTR_MCAST_GROUPS     = 0x7
-+	CTRL_ATTR_OP_UNSPEC        = 0x0
-+	CTRL_ATTR_OP_ID            = 0x1
-+	CTRL_ATTR_OP_FLAGS         = 0x2
-+	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-+	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
-+	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+)
-+
-+const (
-+	_CPU_SETSIZE = 0x400
-+)
-+
-+const (
-+	BDADDR_BREDR     = 0x0
-+	BDADDR_LE_PUBLIC = 0x1
-+	BDADDR_LE_RANDOM = 0x2
-+)
-+
-+type PerfEventAttr struct {
-+	Type               uint32
-+	Size               uint32
-+	Config             uint64
-+	Sample             uint64
-+	Sample_type        uint64
-+	Read_format        uint64
-+	Bits               uint64
-+	Wakeup             uint32
-+	Bp_type            uint32
-+	Ext1               uint64
-+	Ext2               uint64
-+	Branch_sample_type uint64
-+	Sample_regs_user   uint64
-+	Sample_stack_user  uint32
-+	Clockid            int32
-+	Sample_regs_intr   uint64
-+	Aux_watermark      uint32
-+	Sample_max_stack   uint16
-+	_                  uint16
-+}
-+
-+type PerfEventMmapPage struct {
-+	Version        uint32
-+	Compat_version uint32
-+	Lock           uint32
-+	Index          uint32
-+	Offset         int64
-+	Time_enabled   uint64
-+	Time_running   uint64
-+	Capabilities   uint64
-+	Pmc_width      uint16
-+	Time_shift     uint16
-+	Time_mult      uint32
-+	Time_offset    uint64
-+	Time_zero      uint64
-+	Size           uint32
-+	_              [948]uint8
-+	Data_head      uint64
-+	Data_tail      uint64
-+	Data_offset    uint64
-+	Data_size      uint64
-+	Aux_head       uint64
-+	Aux_tail       uint64
-+	Aux_offset     uint64
-+	Aux_size       uint64
-+}
-+
-+const (
-+	PerfBitDisabled               uint64 = CBitFieldMaskBit0
-+	PerfBitInherit                       = CBitFieldMaskBit1
-+	PerfBitPinned                        = CBitFieldMaskBit2
-+	PerfBitExclusive                     = CBitFieldMaskBit3
-+	PerfBitExcludeUser                   = CBitFieldMaskBit4
-+	PerfBitExcludeKernel                 = CBitFieldMaskBit5
-+	PerfBitExcludeHv                     = CBitFieldMaskBit6
-+	PerfBitExcludeIdle                   = CBitFieldMaskBit7
-+	PerfBitMmap                          = CBitFieldMaskBit8
-+	PerfBitComm                          = CBitFieldMaskBit9
-+	PerfBitFreq                          = CBitFieldMaskBit10
-+	PerfBitInheritStat                   = CBitFieldMaskBit11
-+	PerfBitEnableOnExec                  = CBitFieldMaskBit12
-+	PerfBitTask                          = CBitFieldMaskBit13
-+	PerfBitWatermark                     = CBitFieldMaskBit14
-+	PerfBitPreciseIPBit1                 = CBitFieldMaskBit15
-+	PerfBitPreciseIPBit2                 = CBitFieldMaskBit16
-+	PerfBitMmapData                      = CBitFieldMaskBit17
-+	PerfBitSampleIDAll                   = CBitFieldMaskBit18
-+	PerfBitExcludeHost                   = CBitFieldMaskBit19
-+	PerfBitExcludeGuest                  = CBitFieldMaskBit20
-+	PerfBitExcludeCallchainKernel        = CBitFieldMaskBit21
-+	PerfBitExcludeCallchainUser          = CBitFieldMaskBit22
-+	PerfBitMmap2                         = CBitFieldMaskBit23
-+	PerfBitCommExec                      = CBitFieldMaskBit24
-+	PerfBitUseClockID                    = CBitFieldMaskBit25
-+	PerfBitContextSwitch                 = CBitFieldMaskBit26
-+)
-+
-+const (
-+	PERF_TYPE_HARDWARE   = 0x0
-+	PERF_TYPE_SOFTWARE   = 0x1
-+	PERF_TYPE_TRACEPOINT = 0x2
-+	PERF_TYPE_HW_CACHE   = 0x3
-+	PERF_TYPE_RAW        = 0x4
-+	PERF_TYPE_BREAKPOINT = 0x5
-+
-+	PERF_COUNT_HW_CPU_CYCLES              = 0x0
-+	PERF_COUNT_HW_INSTRUCTIONS            = 0x1
-+	PERF_COUNT_HW_CACHE_REFERENCES        = 0x2
-+	PERF_COUNT_HW_CACHE_MISSES            = 0x3
-+	PERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4
-+	PERF_COUNT_HW_BRANCH_MISSES           = 0x5
-+	PERF_COUNT_HW_BUS_CYCLES              = 0x6
-+	PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7
-+	PERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8
-+	PERF_COUNT_HW_REF_CPU_CYCLES          = 0x9
-+
-+	PERF_COUNT_HW_CACHE_L1D  = 0x0
-+	PERF_COUNT_HW_CACHE_L1I  = 0x1
-+	PERF_COUNT_HW_CACHE_LL   = 0x2
-+	PERF_COUNT_HW_CACHE_DTLB = 0x3
-+	PERF_COUNT_HW_CACHE_ITLB = 0x4
-+	PERF_COUNT_HW_CACHE_BPU  = 0x5
-+	PERF_COUNT_HW_CACHE_NODE = 0x6
-+
-+	PERF_COUNT_HW_CACHE_OP_READ     = 0x0
-+	PERF_COUNT_HW_CACHE_OP_WRITE    = 0x1
-+	PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2
-+
-+	PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0
-+	PERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1
-+
-+	PERF_COUNT_SW_CPU_CLOCK        = 0x0
-+	PERF_COUNT_SW_TASK_CLOCK       = 0x1
-+	PERF_COUNT_SW_PAGE_FAULTS      = 0x2
-+	PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3
-+	PERF_COUNT_SW_CPU_MIGRATIONS   = 0x4
-+	PERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5
-+	PERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6
-+	PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7
-+	PERF_COUNT_SW_EMULATION_FAULTS = 0x8
-+	PERF_COUNT_SW_DUMMY            = 0x9
-+	PERF_COUNT_SW_BPF_OUTPUT       = 0xa
-+
-+	PERF_SAMPLE_IP           = 0x1
-+	PERF_SAMPLE_TID          = 0x2
-+	PERF_SAMPLE_TIME         = 0x4
-+	PERF_SAMPLE_ADDR         = 0x8
-+	PERF_SAMPLE_READ         = 0x10
-+	PERF_SAMPLE_CALLCHAIN    = 0x20
-+	PERF_SAMPLE_ID           = 0x40
-+	PERF_SAMPLE_CPU          = 0x80
-+	PERF_SAMPLE_PERIOD       = 0x100
-+	PERF_SAMPLE_STREAM_ID    = 0x200
-+	PERF_SAMPLE_RAW          = 0x400
-+	PERF_SAMPLE_BRANCH_STACK = 0x800
-+
-+	PERF_SAMPLE_BRANCH_USER       = 0x1
-+	PERF_SAMPLE_BRANCH_KERNEL     = 0x2
-+	PERF_SAMPLE_BRANCH_HV         = 0x4
-+	PERF_SAMPLE_BRANCH_ANY        = 0x8
-+	PERF_SAMPLE_BRANCH_ANY_CALL   = 0x10
-+	PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20
-+	PERF_SAMPLE_BRANCH_IND_CALL   = 0x40
-+	PERF_SAMPLE_BRANCH_ABORT_TX   = 0x80
-+	PERF_SAMPLE_BRANCH_IN_TX      = 0x100
-+	PERF_SAMPLE_BRANCH_NO_TX      = 0x200
-+	PERF_SAMPLE_BRANCH_COND       = 0x400
-+	PERF_SAMPLE_BRANCH_CALL_STACK = 0x800
-+	PERF_SAMPLE_BRANCH_IND_JUMP   = 0x1000
-+	PERF_SAMPLE_BRANCH_CALL       = 0x2000
-+	PERF_SAMPLE_BRANCH_NO_FLAGS   = 0x4000
-+	PERF_SAMPLE_BRANCH_NO_CYCLES  = 0x8000
-+	PERF_SAMPLE_BRANCH_TYPE_SAVE  = 0x10000
-+
-+	PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1
-+	PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
-+	PERF_FORMAT_ID                 = 0x4
-+	PERF_FORMAT_GROUP              = 0x8
-+
-+	PERF_RECORD_MMAP            = 0x1
-+	PERF_RECORD_LOST            = 0x2
-+	PERF_RECORD_COMM            = 0x3
-+	PERF_RECORD_EXIT            = 0x4
-+	PERF_RECORD_THROTTLE        = 0x5
-+	PERF_RECORD_UNTHROTTLE      = 0x6
-+	PERF_RECORD_FORK            = 0x7
-+	PERF_RECORD_READ            = 0x8
-+	PERF_RECORD_SAMPLE          = 0x9
-+	PERF_RECORD_MMAP2           = 0xa
-+	PERF_RECORD_AUX             = 0xb
-+	PERF_RECORD_ITRACE_START    = 0xc
-+	PERF_RECORD_LOST_SAMPLES    = 0xd
-+	PERF_RECORD_SWITCH          = 0xe
-+	PERF_RECORD_SWITCH_CPU_WIDE = 0xf
-+	PERF_RECORD_NAMESPACES      = 0x10
-+
-+	PERF_CONTEXT_HV     = -0x20
-+	PERF_CONTEXT_KERNEL = -0x80
-+	PERF_CONTEXT_USER   = -0x200
-+
-+	PERF_CONTEXT_GUEST        = -0x800
-+	PERF_CONTEXT_GUEST_KERNEL = -0x880
-+	PERF_CONTEXT_GUEST_USER   = -0xa00
-+
-+	PERF_FLAG_FD_NO_GROUP = 0x1
-+	PERF_FLAG_FD_OUTPUT   = 0x2
-+	PERF_FLAG_PID_CGROUP  = 0x4
-+	PERF_FLAG_FD_CLOEXEC  = 0x8
-+)
-+
-+type TCPMD5Sig struct {
-+	Addr      SockaddrStorage
-+	Flags     uint8
-+	Prefixlen uint8
-+	Keylen    uint16
-+	_         uint32
-+	Key       [80]uint8
-+}
-+
-+type HDDriveCmdHdr struct {
-+	Command uint8
-+	Number  uint8
-+	Feature uint8
-+	Count   uint8
-+}
-+
-+type HDDriveID struct {
-+	Config         uint16
-+	Cyls           uint16
-+	Reserved2      uint16
-+	Heads          uint16
-+	Track_bytes    uint16
-+	Sector_bytes   uint16
-+	Sectors        uint16
-+	Vendor0        uint16
-+	Vendor1        uint16
-+	Vendor2        uint16
-+	Serial_no      [20]uint8
-+	Buf_type       uint16
-+	Buf_size       uint16
-+	Ecc_bytes      uint16
-+	Fw_rev         [8]uint8
-+	Model          [40]uint8
-+	Max_multsect   uint8
-+	Vendor3        uint8
-+	Dword_io       uint16
-+	Vendor4        uint8
-+	Capability     uint8
-+	Reserved50     uint16
-+	Vendor5        uint8
-+	TPIO           uint8
-+	Vendor6        uint8
-+	TDMA           uint8
-+	Field_valid    uint16
-+	Cur_cyls       uint16
-+	Cur_heads      uint16
-+	Cur_sectors    uint16
-+	Cur_capacity0  uint16
-+	Cur_capacity1  uint16
-+	Multsect       uint8
-+	Multsect_valid uint8
-+	Lba_capacity   uint32
-+	Dma_1word      uint16
-+	Dma_mword      uint16
-+	Eide_pio_modes uint16
-+	Eide_dma_min   uint16
-+	Eide_dma_time  uint16
-+	Eide_pio       uint16
-+	Eide_pio_iordy uint16
-+	Words69_70     [2]uint16
-+	Words71_74     [4]uint16
-+	Queue_depth    uint16
-+	Words76_79     [4]uint16
-+	Major_rev_num  uint16
-+	Minor_rev_num  uint16
-+	Command_set_1  uint16
-+	Command_set_2  uint16
-+	Cfsse          uint16
-+	Cfs_enable_1   uint16
-+	Cfs_enable_2   uint16
-+	Csf_default    uint16
-+	Dma_ultra      uint16
-+	Trseuc         uint16
-+	TrsEuc         uint16
-+	CurAPMvalues   uint16
-+	Mprc           uint16
-+	Hw_config      uint16
-+	Acoustic       uint16
-+	Msrqs          uint16
-+	Sxfert         uint16
-+	Sal            uint16
-+	Spg            uint32
-+	Lba_capacity_2 uint64
-+	Words104_125   [22]uint16
-+	Last_lun       uint16
-+	Word127        uint16
-+	Dlf            uint16
-+	Csfo           uint16
-+	Words130_155   [26]uint16
-+	Word156        uint16
-+	Words157_159   [3]uint16
-+	Cfa_power      uint16
-+	Words161_175   [15]uint16
-+	Words176_205   [30]uint16
-+	Words206_254   [49]uint16
-+	Integrity_word uint16
-+}
-+
-+const (
-+	ST_MANDLOCK    = 0x40
-+	ST_NOATIME     = 0x400
-+	ST_NODEV       = 0x4
-+	ST_NODIRATIME  = 0x800
-+	ST_NOEXEC      = 0x8
-+	ST_NOSUID      = 0x2
-+	ST_RDONLY      = 0x1
-+	ST_RELATIME    = 0x1000
-+	ST_SYNCHRONOUS = 0x10
-+)
-+
-+type Tpacket2Hdr struct {
-+	Status    uint32
-+	Len       uint32
-+	Snaplen   uint32
-+	Mac       uint16
-+	Net       uint16
-+	Sec       uint32
-+	Nsec      uint32
-+	Vlan_tci  uint16
-+	Vlan_tpid uint16
-+	_         [4]uint8
-+}
-+
-+type Tpacket3Hdr struct {
-+	Next_offset uint32
-+	Sec         uint32
-+	Nsec        uint32
-+	Snaplen     uint32
-+	Len         uint32
-+	Status      uint32
-+	Mac         uint16
-+	Net         uint16
-+	Hv1         TpacketHdrVariant1
-+	_           [8]uint8
-+}
-+
-+type TpacketHdrVariant1 struct {
-+	Rxhash    uint32
-+	Vlan_tci  uint32
-+	Vlan_tpid uint16
-+	_         uint16
-+}
-+
-+type TpacketBlockDesc struct {
-+	Version uint32
-+	To_priv uint32
-+	Hdr     [40]byte
-+}
-+
-+type TpacketBDTS struct {
-+	Sec  uint32
-+	Usec uint32
-+}
-+
-+type TpacketHdrV1 struct {
-+	Block_status        uint32
-+	Num_pkts            uint32
-+	Offset_to_first_pkt uint32
-+	Blk_len             uint32
-+	Seq_num             uint64
-+	Ts_first_pkt        TpacketBDTS
-+	Ts_last_pkt         TpacketBDTS
-+}
-+
-+type TpacketReq struct {
-+	Block_size uint32
-+	Block_nr   uint32
-+	Frame_size uint32
-+	Frame_nr   uint32
-+}
-+
-+type TpacketReq3 struct {
-+	Block_size       uint32
-+	Block_nr         uint32
-+	Frame_size       uint32
-+	Frame_nr         uint32
-+	Retire_blk_tov   uint32
-+	Sizeof_priv      uint32
-+	Feature_req_word uint32
-+}
-+
-+type TpacketStats struct {
-+	Packets uint32
-+	Drops   uint32
-+}
-+
-+type TpacketStatsV3 struct {
-+	Packets      uint32
-+	Drops        uint32
-+	Freeze_q_cnt uint32
-+}
-+
-+type TpacketAuxdata struct {
-+	Status    uint32
-+	Len       uint32
-+	Snaplen   uint32
-+	Mac       uint16
-+	Net       uint16
-+	Vlan_tci  uint16
-+	Vlan_tpid uint16
-+}
-+
-+const (
-+	TPACKET_V1 = 0x0
-+	TPACKET_V2 = 0x1
-+	TPACKET_V3 = 0x2
-+)
-+
-+const (
-+	SizeofTpacket2Hdr = 0x20
-+	SizeofTpacket3Hdr = 0x30
-+
-+	SizeofTpacketStats   = 0x8
-+	SizeofTpacketStatsV3 = 0xc
-+)
-+
-+const (
-+	NF_INET_PRE_ROUTING  = 0x0
-+	NF_INET_LOCAL_IN     = 0x1
-+	NF_INET_FORWARD      = 0x2
-+	NF_INET_LOCAL_OUT    = 0x3
-+	NF_INET_POST_ROUTING = 0x4
-+	NF_INET_NUMHOOKS     = 0x5
-+)
-+
-+const (
-+	NF_NETDEV_INGRESS  = 0x0
-+	NF_NETDEV_NUMHOOKS = 0x1
-+)
-+
-+const (
-+	NFPROTO_UNSPEC   = 0x0
-+	NFPROTO_INET     = 0x1
-+	NFPROTO_IPV4     = 0x2
-+	NFPROTO_ARP      = 0x3
-+	NFPROTO_NETDEV   = 0x5
-+	NFPROTO_BRIDGE   = 0x7
-+	NFPROTO_IPV6     = 0xa
-+	NFPROTO_DECNET   = 0xc
-+	NFPROTO_NUMPROTO = 0xd
-+)
-+
-+type Nfgenmsg struct {
-+	Nfgen_family uint8
-+	Version      uint8
-+	Res_id       uint16
-+}
-+
-+const (
-+	NFNL_BATCH_UNSPEC = 0x0
-+	NFNL_BATCH_GENID  = 0x1
-+)
-+
-+const (
-+	NFT_REG_VERDICT                   = 0x0
-+	NFT_REG_1                         = 0x1
-+	NFT_REG_2                         = 0x2
-+	NFT_REG_3                         = 0x3
-+	NFT_REG_4                         = 0x4
-+	NFT_REG32_00                      = 0x8
-+	NFT_REG32_01                      = 0x9
-+	NFT_REG32_02                      = 0xa
-+	NFT_REG32_03                      = 0xb
-+	NFT_REG32_04                      = 0xc
-+	NFT_REG32_05                      = 0xd
-+	NFT_REG32_06                      = 0xe
-+	NFT_REG32_07                      = 0xf
-+	NFT_REG32_08                      = 0x10
-+	NFT_REG32_09                      = 0x11
-+	NFT_REG32_10                      = 0x12
-+	NFT_REG32_11                      = 0x13
-+	NFT_REG32_12                      = 0x14
-+	NFT_REG32_13                      = 0x15
-+	NFT_REG32_14                      = 0x16
-+	NFT_REG32_15                      = 0x17
-+	NFT_CONTINUE                      = -0x1
-+	NFT_BREAK                         = -0x2
-+	NFT_JUMP                          = -0x3
-+	NFT_GOTO                          = -0x4
-+	NFT_RETURN                        = -0x5
-+	NFT_MSG_NEWTABLE                  = 0x0
-+	NFT_MSG_GETTABLE                  = 0x1
-+	NFT_MSG_DELTABLE                  = 0x2
-+	NFT_MSG_NEWCHAIN                  = 0x3
-+	NFT_MSG_GETCHAIN                  = 0x4
-+	NFT_MSG_DELCHAIN                  = 0x5
-+	NFT_MSG_NEWRULE                   = 0x6
-+	NFT_MSG_GETRULE                   = 0x7
-+	NFT_MSG_DELRULE                   = 0x8
-+	NFT_MSG_NEWSET                    = 0x9
-+	NFT_MSG_GETSET                    = 0xa
-+	NFT_MSG_DELSET                    = 0xb
-+	NFT_MSG_NEWSETELEM                = 0xc
-+	NFT_MSG_GETSETELEM                = 0xd
-+	NFT_MSG_DELSETELEM                = 0xe
-+	NFT_MSG_NEWGEN                    = 0xf
-+	NFT_MSG_GETGEN                    = 0x10
-+	NFT_MSG_TRACE                     = 0x11
-+	NFT_MSG_NEWOBJ                    = 0x12
-+	NFT_MSG_GETOBJ                    = 0x13
-+	NFT_MSG_DELOBJ                    = 0x14
-+	NFT_MSG_GETOBJ_RESET              = 0x15
-+	NFT_MSG_MAX                       = 0x19
-+	NFTA_LIST_UNPEC                   = 0x0
-+	NFTA_LIST_ELEM                    = 0x1
-+	NFTA_HOOK_UNSPEC                  = 0x0
-+	NFTA_HOOK_HOOKNUM                 = 0x1
-+	NFTA_HOOK_PRIORITY                = 0x2
-+	NFTA_HOOK_DEV                     = 0x3
-+	NFT_TABLE_F_DORMANT               = 0x1
-+	NFTA_TABLE_UNSPEC                 = 0x0
-+	NFTA_TABLE_NAME                   = 0x1
-+	NFTA_TABLE_FLAGS                  = 0x2
-+	NFTA_TABLE_USE                    = 0x3
-+	NFTA_CHAIN_UNSPEC                 = 0x0
-+	NFTA_CHAIN_TABLE                  = 0x1
-+	NFTA_CHAIN_HANDLE                 = 0x2
-+	NFTA_CHAIN_NAME                   = 0x3
-+	NFTA_CHAIN_HOOK                   = 0x4
-+	NFTA_CHAIN_POLICY                 = 0x5
-+	NFTA_CHAIN_USE                    = 0x6
-+	NFTA_CHAIN_TYPE                   = 0x7
-+	NFTA_CHAIN_COUNTERS               = 0x8
-+	NFTA_CHAIN_PAD                    = 0x9
-+	NFTA_RULE_UNSPEC                  = 0x0
-+	NFTA_RULE_TABLE                   = 0x1
-+	NFTA_RULE_CHAIN                   = 0x2
-+	NFTA_RULE_HANDLE                  = 0x3
-+	NFTA_RULE_EXPRESSIONS             = 0x4
-+	NFTA_RULE_COMPAT                  = 0x5
-+	NFTA_RULE_POSITION                = 0x6
-+	NFTA_RULE_USERDATA                = 0x7
-+	NFTA_RULE_PAD                     = 0x8
-+	NFTA_RULE_ID                      = 0x9
-+	NFT_RULE_COMPAT_F_INV             = 0x2
-+	NFT_RULE_COMPAT_F_MASK            = 0x2
-+	NFTA_RULE_COMPAT_UNSPEC           = 0x0
-+	NFTA_RULE_COMPAT_PROTO            = 0x1
-+	NFTA_RULE_COMPAT_FLAGS            = 0x2
-+	NFT_SET_ANONYMOUS                 = 0x1
-+	NFT_SET_CONSTANT                  = 0x2
-+	NFT_SET_INTERVAL                  = 0x4
-+	NFT_SET_MAP                       = 0x8
-+	NFT_SET_TIMEOUT                   = 0x10
-+	NFT_SET_EVAL                      = 0x20
-+	NFT_SET_OBJECT                    = 0x40
-+	NFT_SET_POL_PERFORMANCE           = 0x0
-+	NFT_SET_POL_MEMORY                = 0x1
-+	NFTA_SET_DESC_UNSPEC              = 0x0
-+	NFTA_SET_DESC_SIZE                = 0x1
-+	NFTA_SET_UNSPEC                   = 0x0
-+	NFTA_SET_TABLE                    = 0x1
-+	NFTA_SET_NAME                     = 0x2
-+	NFTA_SET_FLAGS                    = 0x3
-+	NFTA_SET_KEY_TYPE                 = 0x4
-+	NFTA_SET_KEY_LEN                  = 0x5
-+	NFTA_SET_DATA_TYPE                = 0x6
-+	NFTA_SET_DATA_LEN                 = 0x7
-+	NFTA_SET_POLICY                   = 0x8
-+	NFTA_SET_DESC                     = 0x9
-+	NFTA_SET_ID                       = 0xa
-+	NFTA_SET_TIMEOUT                  = 0xb
-+	NFTA_SET_GC_INTERVAL              = 0xc
-+	NFTA_SET_USERDATA                 = 0xd
-+	NFTA_SET_PAD                      = 0xe
-+	NFTA_SET_OBJ_TYPE                 = 0xf
-+	NFT_SET_ELEM_INTERVAL_END         = 0x1
-+	NFTA_SET_ELEM_UNSPEC              = 0x0
-+	NFTA_SET_ELEM_KEY                 = 0x1
-+	NFTA_SET_ELEM_DATA                = 0x2
-+	NFTA_SET_ELEM_FLAGS               = 0x3
-+	NFTA_SET_ELEM_TIMEOUT             = 0x4
-+	NFTA_SET_ELEM_EXPIRATION          = 0x5
-+	NFTA_SET_ELEM_USERDATA            = 0x6
-+	NFTA_SET_ELEM_EXPR                = 0x7
-+	NFTA_SET_ELEM_PAD                 = 0x8
-+	NFTA_SET_ELEM_OBJREF              = 0x9
-+	NFTA_SET_ELEM_LIST_UNSPEC         = 0x0
-+	NFTA_SET_ELEM_LIST_TABLE          = 0x1
-+	NFTA_SET_ELEM_LIST_SET            = 0x2
-+	NFTA_SET_ELEM_LIST_ELEMENTS       = 0x3
-+	NFTA_SET_ELEM_LIST_SET_ID         = 0x4
-+	NFT_DATA_VALUE                    = 0x0
-+	NFT_DATA_VERDICT                  = 0xffffff00
-+	NFTA_DATA_UNSPEC                  = 0x0
-+	NFTA_DATA_VALUE                   = 0x1
-+	NFTA_DATA_VERDICT                 = 0x2
-+	NFTA_VERDICT_UNSPEC               = 0x0
-+	NFTA_VERDICT_CODE                 = 0x1
-+	NFTA_VERDICT_CHAIN                = 0x2
-+	NFTA_EXPR_UNSPEC                  = 0x0
-+	NFTA_EXPR_NAME                    = 0x1
-+	NFTA_EXPR_DATA                    = 0x2
-+	NFTA_IMMEDIATE_UNSPEC             = 0x0
-+	NFTA_IMMEDIATE_DREG               = 0x1
-+	NFTA_IMMEDIATE_DATA               = 0x2
-+	NFTA_BITWISE_UNSPEC               = 0x0
-+	NFTA_BITWISE_SREG                 = 0x1
-+	NFTA_BITWISE_DREG                 = 0x2
-+	NFTA_BITWISE_LEN                  = 0x3
-+	NFTA_BITWISE_MASK                 = 0x4
-+	NFTA_BITWISE_XOR                  = 0x5
-+	NFT_BYTEORDER_NTOH                = 0x0
-+	NFT_BYTEORDER_HTON                = 0x1
-+	NFTA_BYTEORDER_UNSPEC             = 0x0
-+	NFTA_BYTEORDER_SREG               = 0x1
-+	NFTA_BYTEORDER_DREG               = 0x2
-+	NFTA_BYTEORDER_OP                 = 0x3
-+	NFTA_BYTEORDER_LEN                = 0x4
-+	NFTA_BYTEORDER_SIZE               = 0x5
-+	NFT_CMP_EQ                        = 0x0
-+	NFT_CMP_NEQ                       = 0x1
-+	NFT_CMP_LT                        = 0x2
-+	NFT_CMP_LTE                       = 0x3
-+	NFT_CMP_GT                        = 0x4
-+	NFT_CMP_GTE                       = 0x5
-+	NFTA_CMP_UNSPEC                   = 0x0
-+	NFTA_CMP_SREG                     = 0x1
-+	NFTA_CMP_OP                       = 0x2
-+	NFTA_CMP_DATA                     = 0x3
-+	NFT_RANGE_EQ                      = 0x0
-+	NFT_RANGE_NEQ                     = 0x1
-+	NFTA_RANGE_UNSPEC                 = 0x0
-+	NFTA_RANGE_SREG                   = 0x1
-+	NFTA_RANGE_OP                     = 0x2
-+	NFTA_RANGE_FROM_DATA              = 0x3
-+	NFTA_RANGE_TO_DATA                = 0x4
-+	NFT_LOOKUP_F_INV                  = 0x1
-+	NFTA_LOOKUP_UNSPEC                = 0x0
-+	NFTA_LOOKUP_SET                   = 0x1
-+	NFTA_LOOKUP_SREG                  = 0x2
-+	NFTA_LOOKUP_DREG                  = 0x3
-+	NFTA_LOOKUP_SET_ID                = 0x4
-+	NFTA_LOOKUP_FLAGS                 = 0x5
-+	NFT_DYNSET_OP_ADD                 = 0x0
-+	NFT_DYNSET_OP_UPDATE              = 0x1
-+	NFT_DYNSET_F_INV                  = 0x1
-+	NFTA_DYNSET_UNSPEC                = 0x0
-+	NFTA_DYNSET_SET_NAME              = 0x1
-+	NFTA_DYNSET_SET_ID                = 0x2
-+	NFTA_DYNSET_OP                    = 0x3
-+	NFTA_DYNSET_SREG_KEY              = 0x4
-+	NFTA_DYNSET_SREG_DATA             = 0x5
-+	NFTA_DYNSET_TIMEOUT               = 0x6
-+	NFTA_DYNSET_EXPR                  = 0x7
-+	NFTA_DYNSET_PAD                   = 0x8
-+	NFTA_DYNSET_FLAGS                 = 0x9
-+	NFT_PAYLOAD_LL_HEADER             = 0x0
-+	NFT_PAYLOAD_NETWORK_HEADER        = 0x1
-+	NFT_PAYLOAD_TRANSPORT_HEADER      = 0x2
-+	NFT_PAYLOAD_CSUM_NONE             = 0x0
-+	NFT_PAYLOAD_CSUM_INET             = 0x1
-+	NFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1
-+	NFTA_PAYLOAD_UNSPEC               = 0x0
-+	NFTA_PAYLOAD_DREG                 = 0x1
-+	NFTA_PAYLOAD_BASE                 = 0x2
-+	NFTA_PAYLOAD_OFFSET               = 0x3
-+	NFTA_PAYLOAD_LEN                  = 0x4
-+	NFTA_PAYLOAD_SREG                 = 0x5
-+	NFTA_PAYLOAD_CSUM_TYPE            = 0x6
-+	NFTA_PAYLOAD_CSUM_OFFSET          = 0x7
-+	NFTA_PAYLOAD_CSUM_FLAGS           = 0x8
-+	NFT_EXTHDR_F_PRESENT              = 0x1
-+	NFT_EXTHDR_OP_IPV6                = 0x0
-+	NFT_EXTHDR_OP_TCPOPT              = 0x1
-+	NFTA_EXTHDR_UNSPEC                = 0x0
-+	NFTA_EXTHDR_DREG                  = 0x1
-+	NFTA_EXTHDR_TYPE                  = 0x2
-+	NFTA_EXTHDR_OFFSET                = 0x3
-+	NFTA_EXTHDR_LEN                   = 0x4
-+	NFTA_EXTHDR_FLAGS                 = 0x5
-+	NFTA_EXTHDR_OP                    = 0x6
-+	NFTA_EXTHDR_SREG                  = 0x7
-+	NFT_META_LEN                      = 0x0
-+	NFT_META_PROTOCOL                 = 0x1
-+	NFT_META_PRIORITY                 = 0x2
-+	NFT_META_MARK                     = 0x3
-+	NFT_META_IIF                      = 0x4
-+	NFT_META_OIF                      = 0x5
-+	NFT_META_IIFNAME                  = 0x6
-+	NFT_META_OIFNAME                  = 0x7
-+	NFT_META_IIFTYPE                  = 0x8
-+	NFT_META_OIFTYPE                  = 0x9
-+	NFT_META_SKUID                    = 0xa
-+	NFT_META_SKGID                    = 0xb
-+	NFT_META_NFTRACE                  = 0xc
-+	NFT_META_RTCLASSID                = 0xd
-+	NFT_META_SECMARK                  = 0xe
-+	NFT_META_NFPROTO                  = 0xf
-+	NFT_META_L4PROTO                  = 0x10
-+	NFT_META_BRI_IIFNAME              = 0x11
-+	NFT_META_BRI_OIFNAME              = 0x12
-+	NFT_META_PKTTYPE                  = 0x13
-+	NFT_META_CPU                      = 0x14
-+	NFT_META_IIFGROUP                 = 0x15
-+	NFT_META_OIFGROUP                 = 0x16
-+	NFT_META_CGROUP                   = 0x17
-+	NFT_META_PRANDOM                  = 0x18
-+	NFT_RT_CLASSID                    = 0x0
-+	NFT_RT_NEXTHOP4                   = 0x1
-+	NFT_RT_NEXTHOP6                   = 0x2
-+	NFT_RT_TCPMSS                     = 0x3
-+	NFT_HASH_JENKINS                  = 0x0
-+	NFT_HASH_SYM                      = 0x1
-+	NFTA_HASH_UNSPEC                  = 0x0
-+	NFTA_HASH_SREG                    = 0x1
-+	NFTA_HASH_DREG                    = 0x2
-+	NFTA_HASH_LEN                     = 0x3
-+	NFTA_HASH_MODULUS                 = 0x4
-+	NFTA_HASH_SEED                    = 0x5
-+	NFTA_HASH_OFFSET                  = 0x6
-+	NFTA_HASH_TYPE                    = 0x7
-+	NFTA_META_UNSPEC                  = 0x0
-+	NFTA_META_DREG                    = 0x1
-+	NFTA_META_KEY                     = 0x2
-+	NFTA_META_SREG                    = 0x3
-+	NFTA_RT_UNSPEC                    = 0x0
-+	NFTA_RT_DREG                      = 0x1
-+	NFTA_RT_KEY                       = 0x2
-+	NFT_CT_STATE                      = 0x0
-+	NFT_CT_DIRECTION                  = 0x1
-+	NFT_CT_STATUS                     = 0x2
-+	NFT_CT_MARK                       = 0x3
-+	NFT_CT_SECMARK                    = 0x4
-+	NFT_CT_EXPIRATION                 = 0x5
-+	NFT_CT_HELPER                     = 0x6
-+	NFT_CT_L3PROTOCOL                 = 0x7
-+	NFT_CT_SRC                        = 0x8
-+	NFT_CT_DST                        = 0x9
-+	NFT_CT_PROTOCOL                   = 0xa
-+	NFT_CT_PROTO_SRC                  = 0xb
-+	NFT_CT_PROTO_DST                  = 0xc
-+	NFT_CT_LABELS                     = 0xd
-+	NFT_CT_PKTS                       = 0xe
-+	NFT_CT_BYTES                      = 0xf
-+	NFT_CT_AVGPKT                     = 0x10
-+	NFT_CT_ZONE                       = 0x11
-+	NFT_CT_EVENTMASK                  = 0x12
-+	NFTA_CT_UNSPEC                    = 0x0
-+	NFTA_CT_DREG                      = 0x1
-+	NFTA_CT_KEY                       = 0x2
-+	NFTA_CT_DIRECTION                 = 0x3
-+	NFTA_CT_SREG                      = 0x4
-+	NFT_LIMIT_PKTS                    = 0x0
-+	NFT_LIMIT_PKT_BYTES               = 0x1
-+	NFT_LIMIT_F_INV                   = 0x1
-+	NFTA_LIMIT_UNSPEC                 = 0x0
-+	NFTA_LIMIT_RATE                   = 0x1
-+	NFTA_LIMIT_UNIT                   = 0x2
-+	NFTA_LIMIT_BURST                  = 0x3
-+	NFTA_LIMIT_TYPE                   = 0x4
-+	NFTA_LIMIT_FLAGS                  = 0x5
-+	NFTA_LIMIT_PAD                    = 0x6
-+	NFTA_COUNTER_UNSPEC               = 0x0
-+	NFTA_COUNTER_BYTES                = 0x1
-+	NFTA_COUNTER_PACKETS              = 0x2
-+	NFTA_COUNTER_PAD                  = 0x3
-+	NFTA_LOG_UNSPEC                   = 0x0
-+	NFTA_LOG_GROUP                    = 0x1
-+	NFTA_LOG_PREFIX                   = 0x2
-+	NFTA_LOG_SNAPLEN                  = 0x3
-+	NFTA_LOG_QTHRESHOLD               = 0x4
-+	NFTA_LOG_LEVEL                    = 0x5
-+	NFTA_LOG_FLAGS                    = 0x6
-+	NFTA_QUEUE_UNSPEC                 = 0x0
-+	NFTA_QUEUE_NUM                    = 0x1
-+	NFTA_QUEUE_TOTAL                  = 0x2
-+	NFTA_QUEUE_FLAGS                  = 0x3
-+	NFTA_QUEUE_SREG_QNUM              = 0x4
-+	NFT_QUOTA_F_INV                   = 0x1
-+	NFT_QUOTA_F_DEPLETED              = 0x2
-+	NFTA_QUOTA_UNSPEC                 = 0x0
-+	NFTA_QUOTA_BYTES                  = 0x1
-+	NFTA_QUOTA_FLAGS                  = 0x2
-+	NFTA_QUOTA_PAD                    = 0x3
-+	NFTA_QUOTA_CONSUMED               = 0x4
-+	NFT_REJECT_ICMP_UNREACH           = 0x0
-+	NFT_REJECT_TCP_RST                = 0x1
-+	NFT_REJECT_ICMPX_UNREACH          = 0x2
-+	NFT_REJECT_ICMPX_NO_ROUTE         = 0x0
-+	NFT_REJECT_ICMPX_PORT_UNREACH     = 0x1
-+	NFT_REJECT_ICMPX_HOST_UNREACH     = 0x2
-+	NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3
-+	NFTA_REJECT_UNSPEC                = 0x0
-+	NFTA_REJECT_TYPE                  = 0x1
-+	NFTA_REJECT_ICMP_CODE             = 0x2
-+	NFT_NAT_SNAT                      = 0x0
-+	NFT_NAT_DNAT                      = 0x1
-+	NFTA_NAT_UNSPEC                   = 0x0
-+	NFTA_NAT_TYPE                     = 0x1
-+	NFTA_NAT_FAMILY                   = 0x2
-+	NFTA_NAT_REG_ADDR_MIN             = 0x3
-+	NFTA_NAT_REG_ADDR_MAX             = 0x4
-+	NFTA_NAT_REG_PROTO_MIN            = 0x5
-+	NFTA_NAT_REG_PROTO_MAX            = 0x6
-+	NFTA_NAT_FLAGS                    = 0x7
-+	NFTA_MASQ_UNSPEC                  = 0x0
-+	NFTA_MASQ_FLAGS                   = 0x1
-+	NFTA_MASQ_REG_PROTO_MIN           = 0x2
-+	NFTA_MASQ_REG_PROTO_MAX           = 0x3
-+	NFTA_REDIR_UNSPEC                 = 0x0
-+	NFTA_REDIR_REG_PROTO_MIN          = 0x1
-+	NFTA_REDIR_REG_PROTO_MAX          = 0x2
-+	NFTA_REDIR_FLAGS                  = 0x3
-+	NFTA_DUP_UNSPEC                   = 0x0
-+	NFTA_DUP_SREG_ADDR                = 0x1
-+	NFTA_DUP_SREG_DEV                 = 0x2
-+	NFTA_FWD_UNSPEC                   = 0x0
-+	NFTA_FWD_SREG_DEV                 = 0x1
-+	NFTA_OBJREF_UNSPEC                = 0x0
-+	NFTA_OBJREF_IMM_TYPE              = 0x1
-+	NFTA_OBJREF_IMM_NAME              = 0x2
-+	NFTA_OBJREF_SET_SREG              = 0x3
-+	NFTA_OBJREF_SET_NAME              = 0x4
-+	NFTA_OBJREF_SET_ID                = 0x5
-+	NFTA_GEN_UNSPEC                   = 0x0
-+	NFTA_GEN_ID                       = 0x1
-+	NFTA_GEN_PROC_PID                 = 0x2
-+	NFTA_GEN_PROC_NAME                = 0x3
-+	NFTA_FIB_UNSPEC                   = 0x0
-+	NFTA_FIB_DREG                     = 0x1
-+	NFTA_FIB_RESULT                   = 0x2
-+	NFTA_FIB_FLAGS                    = 0x3
-+	NFT_FIB_RESULT_UNSPEC             = 0x0
-+	NFT_FIB_RESULT_OIF                = 0x1
-+	NFT_FIB_RESULT_OIFNAME            = 0x2
-+	NFT_FIB_RESULT_ADDRTYPE           = 0x3
-+	NFTA_FIB_F_SADDR                  = 0x1
-+	NFTA_FIB_F_DADDR                  = 0x2
-+	NFTA_FIB_F_MARK                   = 0x4
-+	NFTA_FIB_F_IIF                    = 0x8
-+	NFTA_FIB_F_OIF                    = 0x10
-+	NFTA_FIB_F_PRESENT                = 0x20
-+	NFTA_CT_HELPER_UNSPEC             = 0x0
-+	NFTA_CT_HELPER_NAME               = 0x1
-+	NFTA_CT_HELPER_L3PROTO            = 0x2
-+	NFTA_CT_HELPER_L4PROTO            = 0x3
-+	NFTA_OBJ_UNSPEC                   = 0x0
-+	NFTA_OBJ_TABLE                    = 0x1
-+	NFTA_OBJ_NAME                     = 0x2
-+	NFTA_OBJ_TYPE                     = 0x3
-+	NFTA_OBJ_DATA                     = 0x4
-+	NFTA_OBJ_USE                      = 0x5
-+	NFTA_TRACE_UNSPEC                 = 0x0
-+	NFTA_TRACE_TABLE                  = 0x1
-+	NFTA_TRACE_CHAIN                  = 0x2
-+	NFTA_TRACE_RULE_HANDLE            = 0x3
-+	NFTA_TRACE_TYPE                   = 0x4
-+	NFTA_TRACE_VERDICT                = 0x5
-+	NFTA_TRACE_ID                     = 0x6
-+	NFTA_TRACE_LL_HEADER              = 0x7
-+	NFTA_TRACE_NETWORK_HEADER         = 0x8
-+	NFTA_TRACE_TRANSPORT_HEADER       = 0x9
-+	NFTA_TRACE_IIF                    = 0xa
-+	NFTA_TRACE_IIFTYPE                = 0xb
-+	NFTA_TRACE_OIF                    = 0xc
-+	NFTA_TRACE_OIFTYPE                = 0xd
-+	NFTA_TRACE_MARK                   = 0xe
-+	NFTA_TRACE_NFPROTO                = 0xf
-+	NFTA_TRACE_POLICY                 = 0x10
-+	NFTA_TRACE_PAD                    = 0x11
-+	NFT_TRACETYPE_UNSPEC              = 0x0
-+	NFT_TRACETYPE_POLICY              = 0x1
-+	NFT_TRACETYPE_RETURN              = 0x2
-+	NFT_TRACETYPE_RULE                = 0x3
-+	NFTA_NG_UNSPEC                    = 0x0
-+	NFTA_NG_DREG                      = 0x1
-+	NFTA_NG_MODULUS                   = 0x2
-+	NFTA_NG_TYPE                      = 0x3
-+	NFTA_NG_OFFSET                    = 0x4
-+	NFT_NG_INCREMENTAL                = 0x0
-+	NFT_NG_RANDOM                     = 0x1
-+)
-+
-+type RTCTime struct {
-+	Sec   int32
-+	Min   int32
-+	Hour  int32
-+	Mday  int32
-+	Mon   int32
-+	Year  int32
-+	Wday  int32
-+	Yday  int32
-+	Isdst int32
-+}
-+
-+type RTCWkAlrm struct {
-+	Enabled uint8
-+	Pending uint8
-+	Time    RTCTime
-+}
-+
-+type BlkpgIoctlArg struct {
-+	Op      int32
-+	Flags   int32
-+	Datalen int32
-+	Data    *byte
-+}
-+
-+const (
-+	BLKPG_ADD_PARTITION    = 0x1
-+	BLKPG_DEL_PARTITION    = 0x2
-+	BLKPG_RESIZE_PARTITION = 0x3
-+)
-+
-+const (
-+	NETNSA_NONE = 0x0
-+	NETNSA_NSID = 0x1
-+	NETNSA_PID  = 0x2
-+	NETNSA_FD   = 0x3
-+)
-+
-+type XDPRingOffset struct {
-+	Producer uint64
-+	Consumer uint64
-+	Desc     uint64
-+	Flags    uint64
-+}
-+
-+type XDPMmapOffsets struct {
-+	Rx XDPRingOffset
-+	Tx XDPRingOffset
-+	Fr XDPRingOffset
-+	Cr XDPRingOffset
-+}
-+
-+type XDPStatistics struct {
-+	Rx_dropped       uint64
-+	Rx_invalid_descs uint64
-+	Tx_invalid_descs uint64
-+}
-+
-+type XDPDesc struct {
-+	Addr    uint64
-+	Len     uint32
-+	Options uint32
-+}
-+
-+const (
-+	NCSI_CMD_UNSPEC                 = 0x0
-+	NCSI_CMD_PKG_INFO               = 0x1
-+	NCSI_CMD_SET_INTERFACE          = 0x2
-+	NCSI_CMD_CLEAR_INTERFACE        = 0x3
-+	NCSI_ATTR_UNSPEC                = 0x0
-+	NCSI_ATTR_IFINDEX               = 0x1
-+	NCSI_ATTR_PACKAGE_LIST          = 0x2
-+	NCSI_ATTR_PACKAGE_ID            = 0x3
-+	NCSI_ATTR_CHANNEL_ID            = 0x4
-+	NCSI_PKG_ATTR_UNSPEC            = 0x0
-+	NCSI_PKG_ATTR                   = 0x1
-+	NCSI_PKG_ATTR_ID                = 0x2
-+	NCSI_PKG_ATTR_FORCED            = 0x3
-+	NCSI_PKG_ATTR_CHANNEL_LIST      = 0x4
-+	NCSI_CHANNEL_ATTR_UNSPEC        = 0x0
-+	NCSI_CHANNEL_ATTR               = 0x1
-+	NCSI_CHANNEL_ATTR_ID            = 0x2
-+	NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3
-+	NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4
-+	NCSI_CHANNEL_ATTR_VERSION_STR   = 0x5
-+	NCSI_CHANNEL_ATTR_LINK_STATE    = 0x6
-+	NCSI_CHANNEL_ATTR_ACTIVE        = 0x7
-+	NCSI_CHANNEL_ATTR_FORCED        = 0x8
-+	NCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9
-+	NCSI_CHANNEL_ATTR_VLAN_ID       = 0xa
-+)
-+
-+type ScmTimestamping struct {
-+	Ts [3]Timespec
-+}
-+
-+const (
-+	SOF_TIMESTAMPING_TX_HARDWARE  = 0x1
-+	SOF_TIMESTAMPING_TX_SOFTWARE  = 0x2
-+	SOF_TIMESTAMPING_RX_HARDWARE  = 0x4
-+	SOF_TIMESTAMPING_RX_SOFTWARE  = 0x8
-+	SOF_TIMESTAMPING_SOFTWARE     = 0x10
-+	SOF_TIMESTAMPING_SYS_HARDWARE = 0x20
-+	SOF_TIMESTAMPING_RAW_HARDWARE = 0x40
-+	SOF_TIMESTAMPING_OPT_ID       = 0x80
-+	SOF_TIMESTAMPING_TX_SCHED     = 0x100
-+	SOF_TIMESTAMPING_TX_ACK       = 0x200
-+	SOF_TIMESTAMPING_OPT_CMSG     = 0x400
-+	SOF_TIMESTAMPING_OPT_TSONLY   = 0x800
-+	SOF_TIMESTAMPING_OPT_STATS    = 0x1000
-+	SOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000
-+	SOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000
-+
-+	SOF_TIMESTAMPING_LAST = 0x4000
-+	SOF_TIMESTAMPING_MASK = 0x7fff
-+
-+	SCM_TSTAMP_SND   = 0x0
-+	SCM_TSTAMP_SCHED = 0x1
-+	SCM_TSTAMP_ACK   = 0x2
-+)
-+
-+type SockExtendedErr struct {
-+	Errno  uint32
-+	Origin uint8
-+	Type   uint8
-+	Code   uint8
-+	Pad    uint8
-+	Info   uint32
-+	Data   uint32
-+}
-+
-+type FanotifyEventMetadata struct {
-+	Event_len    uint32
-+	Vers         uint8
-+	Reserved     uint8
-+	Metadata_len uint16
-+	Mask         uint64
-+	Fd           int32
-+	Pid          int32
-+}
-+
-+type FanotifyResponse struct {
-+	Fd       int32
-+	Response uint32
-+}
-+
-+const (
-+	CRYPTO_MSG_BASE      = 0x10
-+	CRYPTO_MSG_NEWALG    = 0x10
-+	CRYPTO_MSG_DELALG    = 0x11
-+	CRYPTO_MSG_UPDATEALG = 0x12
-+	CRYPTO_MSG_GETALG    = 0x13
-+	CRYPTO_MSG_DELRNG    = 0x14
-+	CRYPTO_MSG_GETSTAT   = 0x15
-+)
-+
-+const (
-+	CRYPTOCFGA_UNSPEC           = 0x0
-+	CRYPTOCFGA_PRIORITY_VAL     = 0x1
-+	CRYPTOCFGA_REPORT_LARVAL    = 0x2
-+	CRYPTOCFGA_REPORT_HASH      = 0x3
-+	CRYPTOCFGA_REPORT_BLKCIPHER = 0x4
-+	CRYPTOCFGA_REPORT_AEAD      = 0x5
-+	CRYPTOCFGA_REPORT_COMPRESS  = 0x6
-+	CRYPTOCFGA_REPORT_RNG       = 0x7
-+	CRYPTOCFGA_REPORT_CIPHER    = 0x8
-+	CRYPTOCFGA_REPORT_AKCIPHER  = 0x9
-+	CRYPTOCFGA_REPORT_KPP       = 0xa
-+	CRYPTOCFGA_REPORT_ACOMP     = 0xb
-+	CRYPTOCFGA_STAT_LARVAL      = 0xc
-+	CRYPTOCFGA_STAT_HASH        = 0xd
-+	CRYPTOCFGA_STAT_BLKCIPHER   = 0xe
-+	CRYPTOCFGA_STAT_AEAD        = 0xf
-+	CRYPTOCFGA_STAT_COMPRESS    = 0x10
-+	CRYPTOCFGA_STAT_RNG         = 0x11
-+	CRYPTOCFGA_STAT_CIPHER      = 0x12
-+	CRYPTOCFGA_STAT_AKCIPHER    = 0x13
-+	CRYPTOCFGA_STAT_KPP         = 0x14
-+	CRYPTOCFGA_STAT_ACOMP       = 0x15
-+)
-+
-+const (
-+	BPF_REG_0                             = 0x0
-+	BPF_REG_1                             = 0x1
-+	BPF_REG_2                             = 0x2
-+	BPF_REG_3                             = 0x3
-+	BPF_REG_4                             = 0x4
-+	BPF_REG_5                             = 0x5
-+	BPF_REG_6                             = 0x6
-+	BPF_REG_7                             = 0x7
-+	BPF_REG_8                             = 0x8
-+	BPF_REG_9                             = 0x9
-+	BPF_REG_10                            = 0xa
-+	BPF_MAP_CREATE                        = 0x0
-+	BPF_MAP_LOOKUP_ELEM                   = 0x1
-+	BPF_MAP_UPDATE_ELEM                   = 0x2
-+	BPF_MAP_DELETE_ELEM                   = 0x3
-+	BPF_MAP_GET_NEXT_KEY                  = 0x4
-+	BPF_PROG_LOAD                         = 0x5
-+	BPF_OBJ_PIN                           = 0x6
-+	BPF_OBJ_GET                           = 0x7
-+	BPF_PROG_ATTACH                       = 0x8
-+	BPF_PROG_DETACH                       = 0x9
-+	BPF_PROG_TEST_RUN                     = 0xa
-+	BPF_PROG_GET_NEXT_ID                  = 0xb
-+	BPF_MAP_GET_NEXT_ID                   = 0xc
-+	BPF_PROG_GET_FD_BY_ID                 = 0xd
-+	BPF_MAP_GET_FD_BY_ID                  = 0xe
-+	BPF_OBJ_GET_INFO_BY_FD                = 0xf
-+	BPF_PROG_QUERY                        = 0x10
-+	BPF_RAW_TRACEPOINT_OPEN               = 0x11
-+	BPF_BTF_LOAD                          = 0x12
-+	BPF_BTF_GET_FD_BY_ID                  = 0x13
-+	BPF_TASK_FD_QUERY                     = 0x14
-+	BPF_MAP_LOOKUP_AND_DELETE_ELEM        = 0x15
-+	BPF_MAP_FREEZE                        = 0x16
-+	BPF_BTF_GET_NEXT_ID                   = 0x17
-+	BPF_MAP_TYPE_UNSPEC                   = 0x0
-+	BPF_MAP_TYPE_HASH                     = 0x1
-+	BPF_MAP_TYPE_ARRAY                    = 0x2
-+	BPF_MAP_TYPE_PROG_ARRAY               = 0x3
-+	BPF_MAP_TYPE_PERF_EVENT_ARRAY         = 0x4
-+	BPF_MAP_TYPE_PERCPU_HASH              = 0x5
-+	BPF_MAP_TYPE_PERCPU_ARRAY             = 0x6
-+	BPF_MAP_TYPE_STACK_TRACE              = 0x7
-+	BPF_MAP_TYPE_CGROUP_ARRAY             = 0x8
-+	BPF_MAP_TYPE_LRU_HASH                 = 0x9
-+	BPF_MAP_TYPE_LRU_PERCPU_HASH          = 0xa
-+	BPF_MAP_TYPE_LPM_TRIE                 = 0xb
-+	BPF_MAP_TYPE_ARRAY_OF_MAPS            = 0xc
-+	BPF_MAP_TYPE_HASH_OF_MAPS             = 0xd
-+	BPF_MAP_TYPE_DEVMAP                   = 0xe
-+	BPF_MAP_TYPE_SOCKMAP                  = 0xf
-+	BPF_MAP_TYPE_CPUMAP                   = 0x10
-+	BPF_MAP_TYPE_XSKMAP                   = 0x11
-+	BPF_MAP_TYPE_SOCKHASH                 = 0x12
-+	BPF_MAP_TYPE_CGROUP_STORAGE           = 0x13
-+	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY      = 0x14
-+	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE    = 0x15
-+	BPF_MAP_TYPE_QUEUE                    = 0x16
-+	BPF_MAP_TYPE_STACK                    = 0x17
-+	BPF_MAP_TYPE_SK_STORAGE               = 0x18
-+	BPF_MAP_TYPE_DEVMAP_HASH              = 0x19
-+	BPF_PROG_TYPE_UNSPEC                  = 0x0
-+	BPF_PROG_TYPE_SOCKET_FILTER           = 0x1
-+	BPF_PROG_TYPE_KPROBE                  = 0x2
-+	BPF_PROG_TYPE_SCHED_CLS               = 0x3
-+	BPF_PROG_TYPE_SCHED_ACT               = 0x4
-+	BPF_PROG_TYPE_TRACEPOINT              = 0x5
-+	BPF_PROG_TYPE_XDP                     = 0x6
-+	BPF_PROG_TYPE_PERF_EVENT              = 0x7
-+	BPF_PROG_TYPE_CGROUP_SKB              = 0x8
-+	BPF_PROG_TYPE_CGROUP_SOCK             = 0x9
-+	BPF_PROG_TYPE_LWT_IN                  = 0xa
-+	BPF_PROG_TYPE_LWT_OUT                 = 0xb
-+	BPF_PROG_TYPE_LWT_XMIT                = 0xc
-+	BPF_PROG_TYPE_SOCK_OPS                = 0xd
-+	BPF_PROG_TYPE_SK_SKB                  = 0xe
-+	BPF_PROG_TYPE_CGROUP_DEVICE           = 0xf
-+	BPF_PROG_TYPE_SK_MSG                  = 0x10
-+	BPF_PROG_TYPE_RAW_TRACEPOINT          = 0x11
-+	BPF_PROG_TYPE_CGROUP_SOCK_ADDR        = 0x12
-+	BPF_PROG_TYPE_LWT_SEG6LOCAL           = 0x13
-+	BPF_PROG_TYPE_LIRC_MODE2              = 0x14
-+	BPF_PROG_TYPE_SK_REUSEPORT            = 0x15
-+	BPF_PROG_TYPE_FLOW_DISSECTOR          = 0x16
-+	BPF_PROG_TYPE_CGROUP_SYSCTL           = 0x17
-+	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18
-+	BPF_PROG_TYPE_CGROUP_SOCKOPT          = 0x19
-+	BPF_PROG_TYPE_TRACING                 = 0x1a
-+	BPF_CGROUP_INET_INGRESS               = 0x0
-+	BPF_CGROUP_INET_EGRESS                = 0x1
-+	BPF_CGROUP_INET_SOCK_CREATE           = 0x2
-+	BPF_CGROUP_SOCK_OPS                   = 0x3
-+	BPF_SK_SKB_STREAM_PARSER              = 0x4
-+	BPF_SK_SKB_STREAM_VERDICT             = 0x5
-+	BPF_CGROUP_DEVICE                     = 0x6
-+	BPF_SK_MSG_VERDICT                    = 0x7
-+	BPF_CGROUP_INET4_BIND                 = 0x8
-+	BPF_CGROUP_INET6_BIND                 = 0x9
-+	BPF_CGROUP_INET4_CONNECT              = 0xa
-+	BPF_CGROUP_INET6_CONNECT              = 0xb
-+	BPF_CGROUP_INET4_POST_BIND            = 0xc
-+	BPF_CGROUP_INET6_POST_BIND            = 0xd
-+	BPF_CGROUP_UDP4_SENDMSG               = 0xe
-+	BPF_CGROUP_UDP6_SENDMSG               = 0xf
-+	BPF_LIRC_MODE2                        = 0x10
-+	BPF_FLOW_DISSECTOR                    = 0x11
-+	BPF_CGROUP_SYSCTL                     = 0x12
-+	BPF_CGROUP_UDP4_RECVMSG               = 0x13
-+	BPF_CGROUP_UDP6_RECVMSG               = 0x14
-+	BPF_CGROUP_GETSOCKOPT                 = 0x15
-+	BPF_CGROUP_SETSOCKOPT                 = 0x16
-+	BPF_TRACE_RAW_TP                      = 0x17
-+	BPF_TRACE_FENTRY                      = 0x18
-+	BPF_TRACE_FEXIT                       = 0x19
-+	BPF_STACK_BUILD_ID_EMPTY              = 0x0
-+	BPF_STACK_BUILD_ID_VALID              = 0x1
-+	BPF_STACK_BUILD_ID_IP                 = 0x2
-+	BPF_ADJ_ROOM_NET                      = 0x0
-+	BPF_ADJ_ROOM_MAC                      = 0x1
-+	BPF_HDR_START_MAC                     = 0x0
-+	BPF_HDR_START_NET                     = 0x1
-+	BPF_LWT_ENCAP_SEG6                    = 0x0
-+	BPF_LWT_ENCAP_SEG6_INLINE             = 0x1
-+	BPF_LWT_ENCAP_IP                      = 0x2
-+	BPF_OK                                = 0x0
-+	BPF_DROP                              = 0x2
-+	BPF_REDIRECT                          = 0x7
-+	BPF_LWT_REROUTE                       = 0x80
-+	BPF_SOCK_OPS_VOID                     = 0x0
-+	BPF_SOCK_OPS_TIMEOUT_INIT             = 0x1
-+	BPF_SOCK_OPS_RWND_INIT                = 0x2
-+	BPF_SOCK_OPS_TCP_CONNECT_CB           = 0x3
-+	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB    = 0x4
-+	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB   = 0x5
-+	BPF_SOCK_OPS_NEEDS_ECN                = 0x6
-+	BPF_SOCK_OPS_BASE_RTT                 = 0x7
-+	BPF_SOCK_OPS_RTO_CB                   = 0x8
-+	BPF_SOCK_OPS_RETRANS_CB               = 0x9
-+	BPF_SOCK_OPS_STATE_CB                 = 0xa
-+	BPF_SOCK_OPS_TCP_LISTEN_CB            = 0xb
-+	BPF_SOCK_OPS_RTT_CB                   = 0xc
-+	BPF_TCP_ESTABLISHED                   = 0x1
-+	BPF_TCP_SYN_SENT                      = 0x2
-+	BPF_TCP_SYN_RECV                      = 0x3
-+	BPF_TCP_FIN_WAIT1                     = 0x4
-+	BPF_TCP_FIN_WAIT2                     = 0x5
-+	BPF_TCP_TIME_WAIT                     = 0x6
-+	BPF_TCP_CLOSE                         = 0x7
-+	BPF_TCP_CLOSE_WAIT                    = 0x8
-+	BPF_TCP_LAST_ACK                      = 0x9
-+	BPF_TCP_LISTEN                        = 0xa
-+	BPF_TCP_CLOSING                       = 0xb
-+	BPF_TCP_NEW_SYN_RECV                  = 0xc
-+	BPF_TCP_MAX_STATES                    = 0xd
-+	BPF_FIB_LKUP_RET_SUCCESS              = 0x0
-+	BPF_FIB_LKUP_RET_BLACKHOLE            = 0x1
-+	BPF_FIB_LKUP_RET_UNREACHABLE          = 0x2
-+	BPF_FIB_LKUP_RET_PROHIBIT             = 0x3
-+	BPF_FIB_LKUP_RET_NOT_FWDED            = 0x4
-+	BPF_FIB_LKUP_RET_FWD_DISABLED         = 0x5
-+	BPF_FIB_LKUP_RET_UNSUPP_LWT           = 0x6
-+	BPF_FIB_LKUP_RET_NO_NEIGH             = 0x7
-+	BPF_FIB_LKUP_RET_FRAG_NEEDED          = 0x8
-+	BPF_FD_TYPE_RAW_TRACEPOINT            = 0x0
-+	BPF_FD_TYPE_TRACEPOINT                = 0x1
-+	BPF_FD_TYPE_KPROBE                    = 0x2
-+	BPF_FD_TYPE_KRETPROBE                 = 0x3
-+	BPF_FD_TYPE_UPROBE                    = 0x4
-+	BPF_FD_TYPE_URETPROBE                 = 0x5
-+)
-+
-+const (
-+	RTNLGRP_NONE          = 0x0
-+	RTNLGRP_LINK          = 0x1
-+	RTNLGRP_NOTIFY        = 0x2
-+	RTNLGRP_NEIGH         = 0x3
-+	RTNLGRP_TC            = 0x4
-+	RTNLGRP_IPV4_IFADDR   = 0x5
-+	RTNLGRP_IPV4_MROUTE   = 0x6
-+	RTNLGRP_IPV4_ROUTE    = 0x7
-+	RTNLGRP_IPV4_RULE     = 0x8
-+	RTNLGRP_IPV6_IFADDR   = 0x9
-+	RTNLGRP_IPV6_MROUTE   = 0xa
-+	RTNLGRP_IPV6_ROUTE    = 0xb
-+	RTNLGRP_IPV6_IFINFO   = 0xc
-+	RTNLGRP_DECnet_IFADDR = 0xd
-+	RTNLGRP_NOP2          = 0xe
-+	RTNLGRP_DECnet_ROUTE  = 0xf
-+	RTNLGRP_DECnet_RULE   = 0x10
-+	RTNLGRP_NOP4          = 0x11
-+	RTNLGRP_IPV6_PREFIX   = 0x12
-+	RTNLGRP_IPV6_RULE     = 0x13
-+	RTNLGRP_ND_USEROPT    = 0x14
-+	RTNLGRP_PHONET_IFADDR = 0x15
-+	RTNLGRP_PHONET_ROUTE  = 0x16
-+	RTNLGRP_DCB           = 0x17
-+	RTNLGRP_IPV4_NETCONF  = 0x18
-+	RTNLGRP_IPV6_NETCONF  = 0x19
-+	RTNLGRP_MDB           = 0x1a
-+	RTNLGRP_MPLS_ROUTE    = 0x1b
-+	RTNLGRP_NSID          = 0x1c
-+	RTNLGRP_MPLS_NETCONF  = 0x1d
-+	RTNLGRP_IPV4_MROUTE_R = 0x1e
-+	RTNLGRP_IPV6_MROUTE_R = 0x1f
-+	RTNLGRP_NEXTHOP       = 0x20
-+)
-+
-+type CapUserHeader struct {
-+	Version uint32
-+	Pid     int32
-+}
-+
-+type CapUserData struct {
-+	Effective   uint32
-+	Permitted   uint32
-+	Inheritable uint32
-+}
-+
-+const (
-+	LINUX_CAPABILITY_VERSION_1 = 0x19980330
-+	LINUX_CAPABILITY_VERSION_2 = 0x20071026
-+	LINUX_CAPABILITY_VERSION_3 = 0x20080522
-+)
-+
-+const (
-+	LO_FLAGS_READ_ONLY = 0x1
-+	LO_FLAGS_AUTOCLEAR = 0x4
-+	LO_FLAGS_PARTSCAN  = 0x8
-+	LO_FLAGS_DIRECT_IO = 0x10
-+)
-+
-+type LoopInfo64 struct {
-+	Device           uint64
-+	Inode            uint64
-+	Rdevice          uint64
-+	Offset           uint64
-+	Sizelimit        uint64
-+	Number           uint32
-+	Encrypt_type     uint32
-+	Encrypt_key_size uint32
-+	Flags            uint32
-+	File_name        [64]uint8
-+	Crypt_name       [64]uint8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+}
-+
-+type TIPCSocketAddr struct {
-+	Ref  uint32
-+	Node uint32
-+}
-+
-+type TIPCServiceRange struct {
-+	Type  uint32
-+	Lower uint32
-+	Upper uint32
-+}
-+
-+type TIPCServiceName struct {
-+	Type     uint32
-+	Instance uint32
-+	Domain   uint32
-+}
-+
-+type TIPCEvent struct {
-+	Event uint32
-+	Lower uint32
-+	Upper uint32
-+	Port  TIPCSocketAddr
-+	S     TIPCSubscr
-+}
-+
-+type TIPCGroupReq struct {
-+	Type     uint32
-+	Instance uint32
-+	Scope    uint32
-+	Flags    uint32
-+}
-+
-+const (
-+	TIPC_CLUSTER_SCOPE = 0x2
-+	TIPC_NODE_SCOPE    = 0x3
-+)
-+
-+const (
-+	SYSLOG_ACTION_CLOSE         = 0
-+	SYSLOG_ACTION_OPEN          = 1
-+	SYSLOG_ACTION_READ          = 2
-+	SYSLOG_ACTION_READ_ALL      = 3
-+	SYSLOG_ACTION_READ_CLEAR    = 4
-+	SYSLOG_ACTION_CLEAR         = 5
-+	SYSLOG_ACTION_CONSOLE_OFF   = 6
-+	SYSLOG_ACTION_CONSOLE_ON    = 7
-+	SYSLOG_ACTION_CONSOLE_LEVEL = 8
-+	SYSLOG_ACTION_SIZE_UNREAD   = 9
-+	SYSLOG_ACTION_SIZE_BUFFER   = 10
-+)
-+
-+const (
-+	DEVLINK_CMD_UNSPEC                        = 0x0
-+	DEVLINK_CMD_GET                           = 0x1
-+	DEVLINK_CMD_SET                           = 0x2
-+	DEVLINK_CMD_NEW                           = 0x3
-+	DEVLINK_CMD_DEL                           = 0x4
-+	DEVLINK_CMD_PORT_GET                      = 0x5
-+	DEVLINK_CMD_PORT_SET                      = 0x6
-+	DEVLINK_CMD_PORT_NEW                      = 0x7
-+	DEVLINK_CMD_PORT_DEL                      = 0x8
-+	DEVLINK_CMD_PORT_SPLIT                    = 0x9
-+	DEVLINK_CMD_PORT_UNSPLIT                  = 0xa
-+	DEVLINK_CMD_SB_GET                        = 0xb
-+	DEVLINK_CMD_SB_SET                        = 0xc
-+	DEVLINK_CMD_SB_NEW                        = 0xd
-+	DEVLINK_CMD_SB_DEL                        = 0xe
-+	DEVLINK_CMD_SB_POOL_GET                   = 0xf
-+	DEVLINK_CMD_SB_POOL_SET                   = 0x10
-+	DEVLINK_CMD_SB_POOL_NEW                   = 0x11
-+	DEVLINK_CMD_SB_POOL_DEL                   = 0x12
-+	DEVLINK_CMD_SB_PORT_POOL_GET              = 0x13
-+	DEVLINK_CMD_SB_PORT_POOL_SET              = 0x14
-+	DEVLINK_CMD_SB_PORT_POOL_NEW              = 0x15
-+	DEVLINK_CMD_SB_PORT_POOL_DEL              = 0x16
-+	DEVLINK_CMD_SB_TC_POOL_BIND_GET           = 0x17
-+	DEVLINK_CMD_SB_TC_POOL_BIND_SET           = 0x18
-+	DEVLINK_CMD_SB_TC_POOL_BIND_NEW           = 0x19
-+	DEVLINK_CMD_SB_TC_POOL_BIND_DEL           = 0x1a
-+	DEVLINK_CMD_SB_OCC_SNAPSHOT               = 0x1b
-+	DEVLINK_CMD_SB_OCC_MAX_CLEAR              = 0x1c
-+	DEVLINK_CMD_ESWITCH_GET                   = 0x1d
-+	DEVLINK_CMD_ESWITCH_SET                   = 0x1e
-+	DEVLINK_CMD_DPIPE_TABLE_GET               = 0x1f
-+	DEVLINK_CMD_DPIPE_ENTRIES_GET             = 0x20
-+	DEVLINK_CMD_DPIPE_HEADERS_GET             = 0x21
-+	DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET      = 0x22
-+	DEVLINK_CMD_MAX                           = 0x44
-+	DEVLINK_PORT_TYPE_NOTSET                  = 0x0
-+	DEVLINK_PORT_TYPE_AUTO                    = 0x1
-+	DEVLINK_PORT_TYPE_ETH                     = 0x2
-+	DEVLINK_PORT_TYPE_IB                      = 0x3
-+	DEVLINK_SB_POOL_TYPE_INGRESS              = 0x0
-+	DEVLINK_SB_POOL_TYPE_EGRESS               = 0x1
-+	DEVLINK_SB_THRESHOLD_TYPE_STATIC          = 0x0
-+	DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC         = 0x1
-+	DEVLINK_ESWITCH_MODE_LEGACY               = 0x0
-+	DEVLINK_ESWITCH_MODE_SWITCHDEV            = 0x1
-+	DEVLINK_ESWITCH_INLINE_MODE_NONE          = 0x0
-+	DEVLINK_ESWITCH_INLINE_MODE_LINK          = 0x1
-+	DEVLINK_ESWITCH_INLINE_MODE_NETWORK       = 0x2
-+	DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT     = 0x3
-+	DEVLINK_ESWITCH_ENCAP_MODE_NONE           = 0x0
-+	DEVLINK_ESWITCH_ENCAP_MODE_BASIC          = 0x1
-+	DEVLINK_ATTR_UNSPEC                       = 0x0
-+	DEVLINK_ATTR_BUS_NAME                     = 0x1
-+	DEVLINK_ATTR_DEV_NAME                     = 0x2
-+	DEVLINK_ATTR_PORT_INDEX                   = 0x3
-+	DEVLINK_ATTR_PORT_TYPE                    = 0x4
-+	DEVLINK_ATTR_PORT_DESIRED_TYPE            = 0x5
-+	DEVLINK_ATTR_PORT_NETDEV_IFINDEX          = 0x6
-+	DEVLINK_ATTR_PORT_NETDEV_NAME             = 0x7
-+	DEVLINK_ATTR_PORT_IBDEV_NAME              = 0x8
-+	DEVLINK_ATTR_PORT_SPLIT_COUNT             = 0x9
-+	DEVLINK_ATTR_PORT_SPLIT_GROUP             = 0xa
-+	DEVLINK_ATTR_SB_INDEX                     = 0xb
-+	DEVLINK_ATTR_SB_SIZE                      = 0xc
-+	DEVLINK_ATTR_SB_INGRESS_POOL_COUNT        = 0xd
-+	DEVLINK_ATTR_SB_EGRESS_POOL_COUNT         = 0xe
-+	DEVLINK_ATTR_SB_INGRESS_TC_COUNT          = 0xf
-+	DEVLINK_ATTR_SB_EGRESS_TC_COUNT           = 0x10
-+	DEVLINK_ATTR_SB_POOL_INDEX                = 0x11
-+	DEVLINK_ATTR_SB_POOL_TYPE                 = 0x12
-+	DEVLINK_ATTR_SB_POOL_SIZE                 = 0x13
-+	DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE       = 0x14
-+	DEVLINK_ATTR_SB_THRESHOLD                 = 0x15
-+	DEVLINK_ATTR_SB_TC_INDEX                  = 0x16
-+	DEVLINK_ATTR_SB_OCC_CUR                   = 0x17
-+	DEVLINK_ATTR_SB_OCC_MAX                   = 0x18
-+	DEVLINK_ATTR_ESWITCH_MODE                 = 0x19
-+	DEVLINK_ATTR_ESWITCH_INLINE_MODE          = 0x1a
-+	DEVLINK_ATTR_DPIPE_TABLES                 = 0x1b
-+	DEVLINK_ATTR_DPIPE_TABLE                  = 0x1c
-+	DEVLINK_ATTR_DPIPE_TABLE_NAME             = 0x1d
-+	DEVLINK_ATTR_DPIPE_TABLE_SIZE             = 0x1e
-+	DEVLINK_ATTR_DPIPE_TABLE_MATCHES          = 0x1f
-+	DEVLINK_ATTR_DPIPE_TABLE_ACTIONS          = 0x20
-+	DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
-+	DEVLINK_ATTR_DPIPE_ENTRIES                = 0x22
-+	DEVLINK_ATTR_DPIPE_ENTRY                  = 0x23
-+	DEVLINK_ATTR_DPIPE_ENTRY_INDEX            = 0x24
-+	DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES     = 0x25
-+	DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES    = 0x26
-+	DEVLINK_ATTR_DPIPE_ENTRY_COUNTER          = 0x27
-+	DEVLINK_ATTR_DPIPE_MATCH                  = 0x28
-+	DEVLINK_ATTR_DPIPE_MATCH_VALUE            = 0x29
-+	DEVLINK_ATTR_DPIPE_MATCH_TYPE             = 0x2a
-+	DEVLINK_ATTR_DPIPE_ACTION                 = 0x2b
-+	DEVLINK_ATTR_DPIPE_ACTION_VALUE           = 0x2c
-+	DEVLINK_ATTR_DPIPE_ACTION_TYPE            = 0x2d
-+	DEVLINK_ATTR_DPIPE_VALUE                  = 0x2e
-+	DEVLINK_ATTR_DPIPE_VALUE_MASK             = 0x2f
-+	DEVLINK_ATTR_DPIPE_VALUE_MAPPING          = 0x30
-+	DEVLINK_ATTR_DPIPE_HEADERS                = 0x31
-+	DEVLINK_ATTR_DPIPE_HEADER                 = 0x32
-+	DEVLINK_ATTR_DPIPE_HEADER_NAME            = 0x33
-+	DEVLINK_ATTR_DPIPE_HEADER_ID              = 0x34
-+	DEVLINK_ATTR_DPIPE_HEADER_FIELDS          = 0x35
-+	DEVLINK_ATTR_DPIPE_HEADER_GLOBAL          = 0x36
-+	DEVLINK_ATTR_DPIPE_HEADER_INDEX           = 0x37
-+	DEVLINK_ATTR_DPIPE_FIELD                  = 0x38
-+	DEVLINK_ATTR_DPIPE_FIELD_NAME             = 0x39
-+	DEVLINK_ATTR_DPIPE_FIELD_ID               = 0x3a
-+	DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH         = 0x3b
-+	DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE     = 0x3c
-+	DEVLINK_ATTR_PAD                          = 0x3d
-+	DEVLINK_ATTR_ESWITCH_ENCAP_MODE           = 0x3e
-+	DEVLINK_ATTR_MAX                          = 0x8c
-+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE     = 0x0
-+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX  = 0x1
-+	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT      = 0x0
-+	DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY    = 0x0
-+	DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC      = 0x0
-+	DEVLINK_DPIPE_FIELD_IPV4_DST_IP           = 0x0
-+	DEVLINK_DPIPE_FIELD_IPV6_DST_IP           = 0x0
-+	DEVLINK_DPIPE_HEADER_ETHERNET             = 0x0
-+	DEVLINK_DPIPE_HEADER_IPV4                 = 0x1
-+	DEVLINK_DPIPE_HEADER_IPV6                 = 0x2
-+)
-+
-+type FsverityDigest struct {
-+	Algorithm uint16
-+	Size      uint16
-+}
-+
-+type FsverityEnableArg struct {
-+	Version        uint32
-+	Hash_algorithm uint32
-+	Block_size     uint32
-+	Salt_size      uint32
-+	Salt_ptr       uint64
-+	Sig_size       uint32
-+	_              uint32
-+	Sig_ptr        uint64
-+	_              [11]uint64
-+}
-+
-+type Nhmsg struct {
-+	Family   uint8
-+	Scope    uint8
-+	Protocol uint8
-+	Resvd    uint8
-+	Flags    uint32
-+}
-+
-+type NexthopGrp struct {
-+	Id     uint32
-+	Weight uint8
-+	Resvd1 uint8
-+	Resvd2 uint16
-+}
-+
-+const (
-+	NHA_UNSPEC     = 0x0
-+	NHA_ID         = 0x1
-+	NHA_GROUP      = 0x2
-+	NHA_GROUP_TYPE = 0x3
-+	NHA_BLACKHOLE  = 0x4
-+	NHA_OIF        = 0x5
-+	NHA_GATEWAY    = 0x6
-+	NHA_ENCAP_TYPE = 0x7
-+	NHA_ENCAP      = 0x8
-+	NHA_GROUPS     = 0x9
-+	NHA_MASTER     = 0xa
-+)
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-index 7b36896e..761b67c8 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x4
-+	SizeofLong = 0x4
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int32
--	_C_long_long int64
-+	_C_long int32
- )
- 
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- 	Errcnt    int32
- 	Stbcnt    int32
- 	Tai       int32
--	Pad_cgo_0 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int32
-@@ -88,60 +81,32 @@ type Rusage struct {
- 	Nivcsw   int32
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
--	Dev       uint64
--	X__pad1   uint16
--	Pad_cgo_0 [2]byte
--	X__st_ino uint32
--	Mode      uint32
--	Nlink     uint32
--	Uid       uint32
--	Gid       uint32
--	Rdev      uint64
--	X__pad2   uint16
--	Pad_cgo_1 [2]byte
--	Size      int64
--	Blksize   int32
--	Blocks    int64
--	Atim      Timespec
--	Mtim      Timespec
--	Ctim      Timespec
--	Ino       uint64
--}
--
--type Statfs_t struct {
--	Type    int32
--	Bsize   int32
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int32
--	Frsize  int32
--	Flags   int32
--	Spare   [4]int32
-+	Dev     uint64
-+	_       uint16
-+	_       uint32
-+	Mode    uint32
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	_       uint16
-+	Size    int64
-+	Blksize int32
-+	Blocks  int64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Ino     uint64
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [1]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [1]byte
- }
- 
- type Flock_t struct {
-@@ -152,101 +117,11 @@ type Flock_t struct {
- 	Pid    int32
- }
- 
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
--}
--
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -257,41 +132,11 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint32
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
-@@ -308,277 +153,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x8
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x1c
--	SizeofCmsghdr           = 0xc
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x8
-+	SizeofMsghdr  = 0x1c
-+	SizeofCmsghdr = 0xc
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x8
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x8
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [2]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Ebx      int32
- 	Ecx      int32
-@@ -617,16 +201,7 @@ type Sysinfo_t struct {
- 	Totalhigh uint32
- 	Freehigh  uint32
- 	Unit      uint32
--	X_f       [8]int8
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [8]int8
- }
- 
- type Ustat_t struct {
-@@ -643,37 +218,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [32]uint32
-+	Val [32]uint32
- }
- 
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -686,20 +238,12 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
-+	_                         [4]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -711,13 +255,13 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
-+	_                         [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -741,55 +285,315 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
-+}
-+
-+type cpuMask uint32
-+
-+const (
-+	_NCPUBITS = 0x20
-+)
-+
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [122]int8
-+	_      uint32
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint32
-+}
-+
-+type Statfs_t struct {
-+	Type    int32
-+	Bsize   int32
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int32
-+	Frsize  int32
-+	Flags   int32
-+	Spare   [4]int32
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint32
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
- }
- 
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	SizeofTpacketHdr = 0x18
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int32
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint16
-+	Inode            uint32
-+	Rdevice          uint16
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint32
-+	Reserved         [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-index e54fa984..201fb348 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint64
- 	Ino     uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- 	Mode    uint32
- 	Uid     uint32
- 	Gid     uint32
--	X__pad0 int32
-+	_       int32
- 	Rdev    uint64
- 	Size    int64
- 	Blksize int64
-@@ -116,139 +99,29 @@ type Stat_t struct {
- 	_       [3]int64
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int64
--	Frsize  int64
--	Flags   int64
--	Spare   [4]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -259,51 +132,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -312,277 +154,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	R15      uint64
- 	R14      uint64
-@@ -628,30 +209,19 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]int8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [0]int8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
-@@ -661,37 +231,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -704,20 +251,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -729,13 +267,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -759,55 +296,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint64
-+	Inode            uint64
-+	Rdevice          uint64
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-index bff6ce25..8051b561 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x4
-+	SizeofLong = 0x4
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int32
--	_C_long_long int64
-+	_C_long int32
- )
- 
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- 	Errcnt    int32
- 	Stbcnt    int32
- 	Tai       int32
--	Pad_cgo_0 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int32
-@@ -88,169 +81,51 @@ type Rusage struct {
- 	Nivcsw   int32
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
--	Dev       uint64
--	X__pad1   uint16
--	Pad_cgo_0 [2]byte
--	X__st_ino uint32
--	Mode      uint32
--	Nlink     uint32
--	Uid       uint32
--	Gid       uint32
--	Rdev      uint64
--	X__pad2   uint16
--	Pad_cgo_1 [6]byte
--	Size      int64
--	Blksize   int32
--	Pad_cgo_2 [4]byte
--	Blocks    int64
--	Atim      Timespec
--	Mtim      Timespec
--	Ctim      Timespec
--	Ino       uint64
--}
--
--type Statfs_t struct {
--	Type      int32
--	Bsize     int32
--	Blocks    uint64
--	Bfree     uint64
--	Bavail    uint64
--	Files     uint64
--	Ffree     uint64
--	Fsid      Fsid
--	Namelen   int32
--	Frsize    int32
--	Flags     int32
--	Spare     [4]int32
--	Pad_cgo_0 [4]byte
-+	Dev     uint64
-+	_       uint16
-+	_       uint32
-+	Mode    uint32
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	_       uint16
-+	_       [4]byte
-+	Size    int64
-+	Blksize int32
-+	_       [4]byte
-+	Blocks  int64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Ino     uint64
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]uint8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]uint8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	_      [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]uint8
-@@ -261,41 +136,11 @@ type RawSockaddrAny struct {
- 	Pad  [96]uint8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint32
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
-@@ -312,277 +157,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x8
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x1c
--	SizeofCmsghdr           = 0xc
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x8
-+	SizeofMsghdr  = 0x1c
-+	SizeofCmsghdr = 0xc
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x8
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x8
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [2]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Uregs [18]uint32
- }
-@@ -605,16 +189,7 @@ type Sysinfo_t struct {
- 	Totalhigh uint32
- 	Freehigh  uint32
- 	Unit      uint32
--	X_f       [8]uint8
--}
--
--type Utsname struct {
--	Sysname    [65]uint8
--	Nodename   [65]uint8
--	Release    [65]uint8
--	Version    [65]uint8
--	Machine    [65]uint8
--	Domainname [65]uint8
-+	_         [8]uint8
- }
- 
- type Ustat_t struct {
-@@ -632,37 +207,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [32]uint32
-+	Val [32]uint32
- }
- 
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -675,20 +227,12 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
-+	_                         [4]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -700,13 +244,13 @@ type Taskstats struct {
- 	Ac_comm                   [32]uint8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
-+	_                         [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -730,55 +274,318 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint32
-+
-+const (
-+	_NCPUBITS = 0x20
-+)
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [122]uint8
-+	_      uint32
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint32
-+}
-+
-+type Statfs_t struct {
-+	Type    int32
-+	Bsize   int32
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int32
-+	Frsize  int32
-+	Flags   int32
-+	Spare   [4]int32
-+	_       [4]byte
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint32
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+}
-+
-+const (
-+	SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int32
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]uint8
-+	Driver_name [64]uint8
-+	Module_name [64]uint8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]uint8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]uint8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]uint8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]uint8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]uint8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]uint8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint16
-+	Inode            uint32
-+	Rdevice          uint16
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]uint8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint32
-+	Reserved         [4]uint8
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-index a3d0cc4a..a936f216 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint64
- 	Ino     uint64
-@@ -106,10 +89,10 @@ type Stat_t struct {
- 	Uid     uint32
- 	Gid     uint32
- 	Rdev    uint64
--	X__pad1 uint64
-+	_       uint64
- 	Size    int64
- 	Blksize int32
--	X__pad2 int32
-+	_       int32
- 	Blocks  int64
- 	Atim    Timespec
- 	Mtim    Timespec
-@@ -117,139 +100,29 @@ type Stat_t struct {
- 	_       [2]int32
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int64
--	Frsize  int64
--	Flags   int64
--	Spare   [4]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Regs   [31]uint64
- 	Sp     uint64
-@@ -606,30 +187,19 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]int8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [0]int8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
-@@ -640,37 +210,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -683,20 +230,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -708,13 +246,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -738,55 +275,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint64
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-index 8fa6603f..aaca03dd 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x4
-+	SizeofLong = 0x4
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int32
--	_C_long_long int64
-+	_C_long int32
- )
- 
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- 	Errcnt    int32
- 	Stbcnt    int32
- 	Tai       int32
--	Pad_cgo_0 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int32
-@@ -88,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int32
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint32
- 	Pad1    [3]int32
-@@ -115,141 +101,30 @@ type Stat_t struct {
- 	Pad5    [14]int32
- }
- 
--type Statfs_t struct {
--	Type      int32
--	Bsize     int32
--	Frsize    int32
--	Pad_cgo_0 [4]byte
--	Blocks    uint64
--	Bfree     uint64
--	Files     uint64
--	Ffree     uint64
--	Bavail    uint64
--	Fsid      Fsid
--	Namelen   int32
--	Flags     int32
--	Spare     [5]int32
--	Pad_cgo_1 [4]byte
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	_      [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,41 +135,11 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint32
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
-@@ -311,277 +156,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x8
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x1c
--	SizeofCmsghdr           = 0xc
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x8
-+	SizeofMsghdr  = 0x1c
-+	SizeofCmsghdr = 0xc
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x8
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x8
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [2]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Regs     [32]uint64
- 	Lo       uint64
-@@ -610,16 +194,7 @@ type Sysinfo_t struct {
- 	Totalhigh uint32
- 	Freehigh  uint32
- 	Unit      uint32
--	X_f       [8]int8
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [8]int8
- }
- 
- type Ustat_t struct {
-@@ -637,37 +212,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [32]uint32
-+	Val [32]uint32
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -680,20 +232,12 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
-+	_                         [4]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -705,13 +249,13 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
-+	_                         [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -735,55 +279,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint32
-+
-+const (
-+	_NCPUBITS = 0x20
-+)
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	CBitFieldMaskBit0  = 0x8000000000000000
-+	CBitFieldMaskBit1  = 0x4000000000000000
-+	CBitFieldMaskBit2  = 0x2000000000000000
-+	CBitFieldMaskBit3  = 0x1000000000000000
-+	CBitFieldMaskBit4  = 0x800000000000000
-+	CBitFieldMaskBit5  = 0x400000000000000
-+	CBitFieldMaskBit6  = 0x200000000000000
-+	CBitFieldMaskBit7  = 0x100000000000000
-+	CBitFieldMaskBit8  = 0x80000000000000
-+	CBitFieldMaskBit9  = 0x40000000000000
-+	CBitFieldMaskBit10 = 0x20000000000000
-+	CBitFieldMaskBit11 = 0x10000000000000
-+	CBitFieldMaskBit12 = 0x8000000000000
-+	CBitFieldMaskBit13 = 0x4000000000000
-+	CBitFieldMaskBit14 = 0x2000000000000
-+	CBitFieldMaskBit15 = 0x1000000000000
-+	CBitFieldMaskBit16 = 0x800000000000
-+	CBitFieldMaskBit17 = 0x400000000000
-+	CBitFieldMaskBit18 = 0x200000000000
-+	CBitFieldMaskBit19 = 0x100000000000
-+	CBitFieldMaskBit20 = 0x80000000000
-+	CBitFieldMaskBit21 = 0x40000000000
-+	CBitFieldMaskBit22 = 0x20000000000
-+	CBitFieldMaskBit23 = 0x10000000000
-+	CBitFieldMaskBit24 = 0x8000000000
-+	CBitFieldMaskBit25 = 0x4000000000
-+	CBitFieldMaskBit26 = 0x2000000000
-+	CBitFieldMaskBit27 = 0x1000000000
-+	CBitFieldMaskBit28 = 0x800000000
-+	CBitFieldMaskBit29 = 0x400000000
-+	CBitFieldMaskBit30 = 0x200000000
-+	CBitFieldMaskBit31 = 0x100000000
-+	CBitFieldMaskBit32 = 0x80000000
-+	CBitFieldMaskBit33 = 0x40000000
-+	CBitFieldMaskBit34 = 0x20000000
-+	CBitFieldMaskBit35 = 0x10000000
-+	CBitFieldMaskBit36 = 0x8000000
-+	CBitFieldMaskBit37 = 0x4000000
-+	CBitFieldMaskBit38 = 0x2000000
-+	CBitFieldMaskBit39 = 0x1000000
-+	CBitFieldMaskBit40 = 0x800000
-+	CBitFieldMaskBit41 = 0x400000
-+	CBitFieldMaskBit42 = 0x200000
-+	CBitFieldMaskBit43 = 0x100000
-+	CBitFieldMaskBit44 = 0x80000
-+	CBitFieldMaskBit45 = 0x40000
-+	CBitFieldMaskBit46 = 0x20000
-+	CBitFieldMaskBit47 = 0x10000
-+	CBitFieldMaskBit48 = 0x8000
-+	CBitFieldMaskBit49 = 0x4000
-+	CBitFieldMaskBit50 = 0x2000
-+	CBitFieldMaskBit51 = 0x1000
-+	CBitFieldMaskBit52 = 0x800
-+	CBitFieldMaskBit53 = 0x400
-+	CBitFieldMaskBit54 = 0x200
-+	CBitFieldMaskBit55 = 0x100
-+	CBitFieldMaskBit56 = 0x80
-+	CBitFieldMaskBit57 = 0x40
-+	CBitFieldMaskBit58 = 0x20
-+	CBitFieldMaskBit59 = 0x10
-+	CBitFieldMaskBit60 = 0x8
-+	CBitFieldMaskBit61 = 0x4
-+	CBitFieldMaskBit62 = 0x2
-+	CBitFieldMaskBit63 = 0x1
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [122]int8
-+	_      uint32
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint32
-+}
-+
-+type Statfs_t struct {
-+	Type    int32
-+	Bsize   int32
-+	Frsize  int32
-+	_       [4]byte
-+	Blocks  uint64
-+	Bfree   uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Bavail  uint64
-+	Fsid    Fsid
-+	Namelen int32
-+	Flags   int32
-+	Spare   [5]int32
-+	_       [4]byte
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint32
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+}
-+
-+const (
-+	SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int32
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	BLKPG = 0x20001269
- )
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint32
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint32
-+	Reserved         [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-index 3e5fc625..2e7f3b8c 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint32
- 	Pad1    [3]uint32
-@@ -117,139 +100,29 @@ type Stat_t struct {
- 	Blocks  int64
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Frsize  int64
--	Blocks  uint64
--	Bfree   uint64
--	Files   uint64
--	Ffree   uint64
--	Bavail  uint64
--	Fsid    Fsid
--	Namelen int64
--	Flags   int64
--	Spare   [5]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Regs     [32]uint64
- 	Lo       uint64
-@@ -609,70 +190,37 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]int8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [0]int8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
- 	Events uint32
-+	_      int32
- 	Fd     int32
- 	Pad    int32
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -685,20 +233,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -710,13 +249,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -740,55 +278,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x8000000000000000
-+	CBitFieldMaskBit1  = 0x4000000000000000
-+	CBitFieldMaskBit2  = 0x2000000000000000
-+	CBitFieldMaskBit3  = 0x1000000000000000
-+	CBitFieldMaskBit4  = 0x800000000000000
-+	CBitFieldMaskBit5  = 0x400000000000000
-+	CBitFieldMaskBit6  = 0x200000000000000
-+	CBitFieldMaskBit7  = 0x100000000000000
-+	CBitFieldMaskBit8  = 0x80000000000000
-+	CBitFieldMaskBit9  = 0x40000000000000
-+	CBitFieldMaskBit10 = 0x20000000000000
-+	CBitFieldMaskBit11 = 0x10000000000000
-+	CBitFieldMaskBit12 = 0x8000000000000
-+	CBitFieldMaskBit13 = 0x4000000000000
-+	CBitFieldMaskBit14 = 0x2000000000000
-+	CBitFieldMaskBit15 = 0x1000000000000
-+	CBitFieldMaskBit16 = 0x800000000000
-+	CBitFieldMaskBit17 = 0x400000000000
-+	CBitFieldMaskBit18 = 0x200000000000
-+	CBitFieldMaskBit19 = 0x100000000000
-+	CBitFieldMaskBit20 = 0x80000000000
-+	CBitFieldMaskBit21 = 0x40000000000
-+	CBitFieldMaskBit22 = 0x20000000000
-+	CBitFieldMaskBit23 = 0x10000000000
-+	CBitFieldMaskBit24 = 0x8000000000
-+	CBitFieldMaskBit25 = 0x4000000000
-+	CBitFieldMaskBit26 = 0x2000000000
-+	CBitFieldMaskBit27 = 0x1000000000
-+	CBitFieldMaskBit28 = 0x800000000
-+	CBitFieldMaskBit29 = 0x400000000
-+	CBitFieldMaskBit30 = 0x200000000
-+	CBitFieldMaskBit31 = 0x100000000
-+	CBitFieldMaskBit32 = 0x80000000
-+	CBitFieldMaskBit33 = 0x40000000
-+	CBitFieldMaskBit34 = 0x20000000
-+	CBitFieldMaskBit35 = 0x10000000
-+	CBitFieldMaskBit36 = 0x8000000
-+	CBitFieldMaskBit37 = 0x4000000
-+	CBitFieldMaskBit38 = 0x2000000
-+	CBitFieldMaskBit39 = 0x1000000
-+	CBitFieldMaskBit40 = 0x800000
-+	CBitFieldMaskBit41 = 0x400000
-+	CBitFieldMaskBit42 = 0x200000
-+	CBitFieldMaskBit43 = 0x100000
-+	CBitFieldMaskBit44 = 0x80000
-+	CBitFieldMaskBit45 = 0x40000
-+	CBitFieldMaskBit46 = 0x20000
-+	CBitFieldMaskBit47 = 0x10000
-+	CBitFieldMaskBit48 = 0x8000
-+	CBitFieldMaskBit49 = 0x4000
-+	CBitFieldMaskBit50 = 0x2000
-+	CBitFieldMaskBit51 = 0x1000
-+	CBitFieldMaskBit52 = 0x800
-+	CBitFieldMaskBit53 = 0x400
-+	CBitFieldMaskBit54 = 0x200
-+	CBitFieldMaskBit55 = 0x100
-+	CBitFieldMaskBit56 = 0x80
-+	CBitFieldMaskBit57 = 0x40
-+	CBitFieldMaskBit58 = 0x20
-+	CBitFieldMaskBit59 = 0x10
-+	CBitFieldMaskBit60 = 0x8
-+	CBitFieldMaskBit61 = 0x4
-+	CBitFieldMaskBit62 = 0x2
-+	CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Frsize  int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Bavail  uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Flags   int64
-+	Spare   [5]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint64
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-index f9bd1ab0..16add5a2 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint32
- 	Pad1    [3]uint32
-@@ -117,139 +100,29 @@ type Stat_t struct {
- 	Blocks  int64
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Frsize  int64
--	Blocks  uint64
--	Bfree   uint64
--	Files   uint64
--	Ffree   uint64
--	Bavail  uint64
--	Fsid    Fsid
--	Namelen int64
--	Flags   int64
--	Spare   [5]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Regs     [32]uint64
- 	Lo       uint64
-@@ -609,70 +190,37 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]int8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [0]int8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
- 	Events uint32
-+	_      int32
- 	Fd     int32
- 	Pad    int32
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -685,20 +233,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -710,13 +249,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -740,55 +278,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Frsize  int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Bavail  uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Flags   int64
-+	Spare   [5]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint64
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-index 74c54213..4ed2c8e5 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x4
-+	SizeofLong = 0x4
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int32
--	_C_long_long int64
-+	_C_long int32
- )
- 
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- 	Errcnt    int32
- 	Stbcnt    int32
- 	Tai       int32
--	Pad_cgo_0 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int32
-@@ -88,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int32
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint32
- 	Pad1    [3]int32
-@@ -115,141 +101,30 @@ type Stat_t struct {
- 	Pad5    [14]int32
- }
- 
--type Statfs_t struct {
--	Type      int32
--	Bsize     int32
--	Frsize    int32
--	Pad_cgo_0 [4]byte
--	Blocks    uint64
--	Bfree     uint64
--	Files     uint64
--	Ffree     uint64
--	Bavail    uint64
--	Fsid      Fsid
--	Namelen   int32
--	Flags     int32
--	Spare     [5]int32
--	Pad_cgo_1 [4]byte
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	_      [4]byte
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,41 +135,11 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint32
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
-@@ -311,277 +156,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x8
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x1c
--	SizeofCmsghdr           = 0xc
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x8
-+	SizeofMsghdr  = 0x1c
-+	SizeofCmsghdr = 0xc
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x8
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x8
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [2]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Regs     [32]uint64
- 	Lo       uint64
-@@ -610,16 +194,7 @@ type Sysinfo_t struct {
- 	Totalhigh uint32
- 	Freehigh  uint32
- 	Unit      uint32
--	X_f       [8]int8
--}
--
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+	_         [8]int8
- }
- 
- type Ustat_t struct {
-@@ -637,37 +212,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [32]uint32
-+	Val [32]uint32
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -680,20 +232,12 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
-+	_                         [4]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -705,13 +249,13 @@ type Taskstats struct {
- 	Ac_comm                   [32]int8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
-+	_                         [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -735,55 +279,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint32
-+
-+const (
-+	_NCPUBITS = 0x20
-+)
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [122]int8
-+	_      uint32
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint32
-+}
-+
-+type Statfs_t struct {
-+	Type    int32
-+	Bsize   int32
-+	Frsize  int32
-+	_       [4]byte
-+	Blocks  uint64
-+	Bfree   uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Bavail  uint64
-+	Fsid    Fsid
-+	Namelen int32
-+	Flags   int32
-+	Spare   [5]int32
-+	_       [4]byte
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint32
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+}
-+
-+const (
-+	SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int32
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	BLKPG = 0x20001269
- )
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint32
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint32
-+	Reserved         [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-index 2b0b18e9..74151909 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint64
- 	Ino     uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- 	Mode    uint32
- 	Uid     uint32
- 	Gid     uint32
--	X__pad2 int32
-+	_       int32
- 	Rdev    uint64
- 	Size    int64
- 	Blksize int64
-@@ -118,139 +101,29 @@ type Stat_t struct {
- 	_       uint64
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int64
--	Frsize  int64
--	Flags   int64
--	Spare   [4]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]uint8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]uint8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]uint8
-@@ -261,51 +134,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]uint8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -314,277 +156,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Gpr       [32]uint64
- 	Nip       uint64
-@@ -616,71 +197,37 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]uint8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]uint8
--	Nodename   [65]uint8
--	Release    [65]uint8
--	Version    [65]uint8
--	Machine    [65]uint8
--	Domainname [65]uint8
-+	_         [0]uint8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]uint8
--	Fpack     [6]uint8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]uint8
-+	Fpack  [6]uint8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
--	Events  uint32
--	X_padFd int32
--	Fd      int32
--	Pad     int32
--}
--
--const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
-+	Events uint32
-+	_      int32
-+	Fd     int32
-+	Pad    int32
- }
- 
- const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -693,20 +240,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -718,13 +256,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]uint8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -748,55 +285,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x8000000000000000
-+	CBitFieldMaskBit1  = 0x4000000000000000
-+	CBitFieldMaskBit2  = 0x2000000000000000
-+	CBitFieldMaskBit3  = 0x1000000000000000
-+	CBitFieldMaskBit4  = 0x800000000000000
-+	CBitFieldMaskBit5  = 0x400000000000000
-+	CBitFieldMaskBit6  = 0x200000000000000
-+	CBitFieldMaskBit7  = 0x100000000000000
-+	CBitFieldMaskBit8  = 0x80000000000000
-+	CBitFieldMaskBit9  = 0x40000000000000
-+	CBitFieldMaskBit10 = 0x20000000000000
-+	CBitFieldMaskBit11 = 0x10000000000000
-+	CBitFieldMaskBit12 = 0x8000000000000
-+	CBitFieldMaskBit13 = 0x4000000000000
-+	CBitFieldMaskBit14 = 0x2000000000000
-+	CBitFieldMaskBit15 = 0x1000000000000
-+	CBitFieldMaskBit16 = 0x800000000000
-+	CBitFieldMaskBit17 = 0x400000000000
-+	CBitFieldMaskBit18 = 0x200000000000
-+	CBitFieldMaskBit19 = 0x100000000000
-+	CBitFieldMaskBit20 = 0x80000000000
-+	CBitFieldMaskBit21 = 0x40000000000
-+	CBitFieldMaskBit22 = 0x20000000000
-+	CBitFieldMaskBit23 = 0x10000000000
-+	CBitFieldMaskBit24 = 0x8000000000
-+	CBitFieldMaskBit25 = 0x4000000000
-+	CBitFieldMaskBit26 = 0x2000000000
-+	CBitFieldMaskBit27 = 0x1000000000
-+	CBitFieldMaskBit28 = 0x800000000
-+	CBitFieldMaskBit29 = 0x400000000
-+	CBitFieldMaskBit30 = 0x200000000
-+	CBitFieldMaskBit31 = 0x100000000
-+	CBitFieldMaskBit32 = 0x80000000
-+	CBitFieldMaskBit33 = 0x40000000
-+	CBitFieldMaskBit34 = 0x20000000
-+	CBitFieldMaskBit35 = 0x10000000
-+	CBitFieldMaskBit36 = 0x8000000
-+	CBitFieldMaskBit37 = 0x4000000
-+	CBitFieldMaskBit38 = 0x2000000
-+	CBitFieldMaskBit39 = 0x1000000
-+	CBitFieldMaskBit40 = 0x800000
-+	CBitFieldMaskBit41 = 0x400000
-+	CBitFieldMaskBit42 = 0x200000
-+	CBitFieldMaskBit43 = 0x100000
-+	CBitFieldMaskBit44 = 0x80000
-+	CBitFieldMaskBit45 = 0x40000
-+	CBitFieldMaskBit46 = 0x20000
-+	CBitFieldMaskBit47 = 0x10000
-+	CBitFieldMaskBit48 = 0x8000
-+	CBitFieldMaskBit49 = 0x4000
-+	CBitFieldMaskBit50 = 0x2000
-+	CBitFieldMaskBit51 = 0x1000
-+	CBitFieldMaskBit52 = 0x800
-+	CBitFieldMaskBit53 = 0x400
-+	CBitFieldMaskBit54 = 0x200
-+	CBitFieldMaskBit55 = 0x100
-+	CBitFieldMaskBit56 = 0x80
-+	CBitFieldMaskBit57 = 0x40
-+	CBitFieldMaskBit58 = 0x20
-+	CBitFieldMaskBit59 = 0x10
-+	CBitFieldMaskBit60 = 0x8
-+	CBitFieldMaskBit61 = 0x4
-+	CBitFieldMaskBit62 = 0x2
-+	CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]uint8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]uint8
-+	Driver_name [64]uint8
-+	Module_name [64]uint8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]uint8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]uint8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]uint8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]uint8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]uint8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]uint8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint64
-+	Inode            uint64
-+	Rdevice          uint64
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]uint8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]uint8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-index b2b59992..046c2deb 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint64
- 	Ino     uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- 	Mode    uint32
- 	Uid     uint32
- 	Gid     uint32
--	X__pad2 int32
-+	_       int32
- 	Rdev    uint64
- 	Size    int64
- 	Blksize int64
-@@ -118,139 +101,29 @@ type Stat_t struct {
- 	_       uint64
- }
- 
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int64
--	Frsize  int64
--	Flags   int64
--	Spare   [4]int64
--}
--
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]uint8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]uint8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Pid       int32
--	Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]uint8
-@@ -261,51 +134,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]uint8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -314,277 +156,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
--const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
--)
--
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Gpr       [32]uint64
- 	Nip       uint64
-@@ -616,71 +197,37 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	Pad_cgo_0 [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
--	X_f       [0]uint8
--	Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
--	Sysname    [65]uint8
--	Nodename   [65]uint8
--	Release    [65]uint8
--	Version    [65]uint8
--	Machine    [65]uint8
--	Domainname [65]uint8
-+	_         [0]uint8
-+	_         [4]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]uint8
--	Fpack     [6]uint8
--	Pad_cgo_1 [4]byte
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]uint8
-+	Fpack  [6]uint8
-+	_      [4]byte
- }
- 
- type EpollEvent struct {
--	Events  uint32
--	X_padFd int32
--	Fd      int32
--	Pad     int32
--}
--
--const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
-+	Events uint32
-+	_      int32
-+	Fd     int32
-+	Pad    int32
- }
- 
- const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	X__val [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -693,20 +240,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	Pad_cgo_0                 [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	Pad_cgo_1                 [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -718,13 +256,12 @@ type Taskstats struct {
- 	Ac_comm                   [32]uint8
- 	Ac_sched                  uint8
- 	Ac_pad                    [3]uint8
--	Pad_cgo_2                 [4]byte
-+	_                         [4]byte
- 	Ac_uid                    uint32
- 	Ac_gid                    uint32
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	Pad_cgo_3                 [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -748,55 +285,319 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
- }
- 
-+type cpuMask uint64
-+
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	_NCPUBITS = 0x40
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]uint8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]uint8
-+	Driver_name [64]uint8
-+	Module_name [64]uint8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]uint8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]uint8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]uint8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]uint8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]uint8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]uint8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint64
-+	Inode            uint64
-+	Rdevice          uint64
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]uint8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]uint8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
-new file mode 100644
-index 00000000..0f2f61a6
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
-@@ -0,0 +1,621 @@
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build riscv64,linux
-+
-+package unix
-+
-+const (
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
-+)
-+
-+type (
-+	_C_long int64
-+)
-+
-+type Timespec struct {
-+	Sec  int64
-+	Nsec int64
-+}
-+
-+type Timeval struct {
-+	Sec  int64
-+	Usec int64
-+}
-+
-+type Timex struct {
-+	Modes     uint32
-+	Offset    int64
-+	Freq      int64
-+	Maxerror  int64
-+	Esterror  int64
-+	Status    int32
-+	Constant  int64
-+	Precision int64
-+	Tolerance int64
-+	Time      Timeval
-+	Tick      int64
-+	Ppsfreq   int64
-+	Jitter    int64
-+	Shift     int32
-+	Stabil    int64
-+	Jitcnt    int64
-+	Calcnt    int64
-+	Errcnt    int64
-+	Stbcnt    int64
-+	Tai       int32
-+	_         [44]byte
-+}
-+
-+type Time_t int64
-+
-+type Tms struct {
-+	Utime  int64
-+	Stime  int64
-+	Cutime int64
-+	Cstime int64
-+}
-+
-+type Utimbuf struct {
-+	Actime  int64
-+	Modtime int64
-+}
-+
-+type Rusage struct {
-+	Utime    Timeval
-+	Stime    Timeval
-+	Maxrss   int64
-+	Ixrss    int64
-+	Idrss    int64
-+	Isrss    int64
-+	Minflt   int64
-+	Majflt   int64
-+	Nswap    int64
-+	Inblock  int64
-+	Oublock  int64
-+	Msgsnd   int64
-+	Msgrcv   int64
-+	Nsignals int64
-+	Nvcsw    int64
-+	Nivcsw   int64
-+}
-+
-+type Stat_t struct {
-+	Dev     uint64
-+	Ino     uint64
-+	Mode    uint32
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	_       uint64
-+	Size    int64
-+	Blksize int32
-+	_       int32
-+	Blocks  int64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	_       [2]int32
-+}
-+
-+type Dirent struct {
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]uint8
-+	_      [5]byte
-+}
-+
-+type Flock_t struct {
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      [4]byte
-+}
-+
-+const (
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
-+)
-+
-+type RawSockaddr struct {
-+	Family uint16
-+	Data   [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+	Addr RawSockaddr
-+	Pad  [96]uint8
-+}
-+
-+type Iovec struct {
-+	Base *byte
-+	Len  uint64
-+}
-+
-+type Msghdr struct {
-+	Name       *byte
-+	Namelen    uint32
-+	Iov        *Iovec
-+	Iovlen     uint64
-+	Control    *byte
-+	Controllen uint64
-+	Flags      int32
-+	_          [4]byte
-+}
-+
-+type Cmsghdr struct {
-+	Len   uint64
-+	Level int32
-+	Type  int32
-+}
-+
-+const (
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
-+)
-+
-+const (
-+	SizeofSockFprog = 0x10
-+)
-+
-+type PtraceRegs struct {
-+	Pc  uint64
-+	Ra  uint64
-+	Sp  uint64
-+	Gp  uint64
-+	Tp  uint64
-+	T0  uint64
-+	T1  uint64
-+	T2  uint64
-+	S0  uint64
-+	S1  uint64
-+	A0  uint64
-+	A1  uint64
-+	A2  uint64
-+	A3  uint64
-+	A4  uint64
-+	A5  uint64
-+	A6  uint64
-+	A7  uint64
-+	S2  uint64
-+	S3  uint64
-+	S4  uint64
-+	S5  uint64
-+	S6  uint64
-+	S7  uint64
-+	S8  uint64
-+	S9  uint64
-+	S10 uint64
-+	S11 uint64
-+	T3  uint64
-+	T4  uint64
-+	T5  uint64
-+	T6  uint64
-+}
-+
-+type FdSet struct {
-+	Bits [16]int64
-+}
-+
-+type Sysinfo_t struct {
-+	Uptime    int64
-+	Loads     [3]uint64
-+	Totalram  uint64
-+	Freeram   uint64
-+	Sharedram uint64
-+	Bufferram uint64
-+	Totalswap uint64
-+	Freeswap  uint64
-+	Procs     uint16
-+	Pad       uint16
-+	Totalhigh uint64
-+	Freehigh  uint64
-+	Unit      uint32
-+	_         [0]uint8
-+	_         [4]byte
-+}
-+
-+type Ustat_t struct {
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]uint8
-+	Fpack  [6]uint8
-+	_      [4]byte
-+}
-+
-+type EpollEvent struct {
-+	Events uint32
-+	_      int32
-+	Fd     int32
-+	Pad    int32
-+}
-+
-+const (
-+	POLLRDHUP = 0x2000
-+)
-+
-+type Sigset_t struct {
-+	Val [16]uint64
-+}
-+
-+const _C__NSIG = 0x41
-+
-+type Termios struct {
-+	Iflag  uint32
-+	Oflag  uint32
-+	Cflag  uint32
-+	Lflag  uint32
-+	Line   uint8
-+	Cc     [19]uint8
-+	Ispeed uint32
-+	Ospeed uint32
-+}
-+
-+type Taskstats struct {
-+	Version                   uint16
-+	Ac_exitcode               uint32
-+	Ac_flag                   uint8
-+	Ac_nice                   uint8
-+	Cpu_count                 uint64
-+	Cpu_delay_total           uint64
-+	Blkio_count               uint64
-+	Blkio_delay_total         uint64
-+	Swapin_count              uint64
-+	Swapin_delay_total        uint64
-+	Cpu_run_real_total        uint64
-+	Cpu_run_virtual_total     uint64
-+	Ac_comm                   [32]uint8
-+	Ac_sched                  uint8
-+	Ac_pad                    [3]uint8
-+	_                         [4]byte
-+	Ac_uid                    uint32
-+	Ac_gid                    uint32
-+	Ac_pid                    uint32
-+	Ac_ppid                   uint32
-+	Ac_btime                  uint32
-+	Ac_etime                  uint64
-+	Ac_utime                  uint64
-+	Ac_stime                  uint64
-+	Ac_minflt                 uint64
-+	Ac_majflt                 uint64
-+	Coremem                   uint64
-+	Virtmem                   uint64
-+	Hiwater_rss               uint64
-+	Hiwater_vm                uint64
-+	Read_char                 uint64
-+	Write_char                uint64
-+	Read_syscalls             uint64
-+	Write_syscalls            uint64
-+	Read_bytes                uint64
-+	Write_bytes               uint64
-+	Cancelled_write_bytes     uint64
-+	Nvcsw                     uint64
-+	Nivcsw                    uint64
-+	Ac_utimescaled            uint64
-+	Ac_stimescaled            uint64
-+	Cpu_scaled_run_real_total uint64
-+	Freepages_count           uint64
-+	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+	_NCPUBITS = 0x40
-+)
-+
-+const (
-+	CBitFieldMaskBit0  = 0x1
-+	CBitFieldMaskBit1  = 0x2
-+	CBitFieldMaskBit2  = 0x4
-+	CBitFieldMaskBit3  = 0x8
-+	CBitFieldMaskBit4  = 0x10
-+	CBitFieldMaskBit5  = 0x20
-+	CBitFieldMaskBit6  = 0x40
-+	CBitFieldMaskBit7  = 0x80
-+	CBitFieldMaskBit8  = 0x100
-+	CBitFieldMaskBit9  = 0x200
-+	CBitFieldMaskBit10 = 0x400
-+	CBitFieldMaskBit11 = 0x800
-+	CBitFieldMaskBit12 = 0x1000
-+	CBitFieldMaskBit13 = 0x2000
-+	CBitFieldMaskBit14 = 0x4000
-+	CBitFieldMaskBit15 = 0x8000
-+	CBitFieldMaskBit16 = 0x10000
-+	CBitFieldMaskBit17 = 0x20000
-+	CBitFieldMaskBit18 = 0x40000
-+	CBitFieldMaskBit19 = 0x80000
-+	CBitFieldMaskBit20 = 0x100000
-+	CBitFieldMaskBit21 = 0x200000
-+	CBitFieldMaskBit22 = 0x400000
-+	CBitFieldMaskBit23 = 0x800000
-+	CBitFieldMaskBit24 = 0x1000000
-+	CBitFieldMaskBit25 = 0x2000000
-+	CBitFieldMaskBit26 = 0x4000000
-+	CBitFieldMaskBit27 = 0x8000000
-+	CBitFieldMaskBit28 = 0x10000000
-+	CBitFieldMaskBit29 = 0x20000000
-+	CBitFieldMaskBit30 = 0x40000000
-+	CBitFieldMaskBit31 = 0x80000000
-+	CBitFieldMaskBit32 = 0x100000000
-+	CBitFieldMaskBit33 = 0x200000000
-+	CBitFieldMaskBit34 = 0x400000000
-+	CBitFieldMaskBit35 = 0x800000000
-+	CBitFieldMaskBit36 = 0x1000000000
-+	CBitFieldMaskBit37 = 0x2000000000
-+	CBitFieldMaskBit38 = 0x4000000000
-+	CBitFieldMaskBit39 = 0x8000000000
-+	CBitFieldMaskBit40 = 0x10000000000
-+	CBitFieldMaskBit41 = 0x20000000000
-+	CBitFieldMaskBit42 = 0x40000000000
-+	CBitFieldMaskBit43 = 0x80000000000
-+	CBitFieldMaskBit44 = 0x100000000000
-+	CBitFieldMaskBit45 = 0x200000000000
-+	CBitFieldMaskBit46 = 0x400000000000
-+	CBitFieldMaskBit47 = 0x800000000000
-+	CBitFieldMaskBit48 = 0x1000000000000
-+	CBitFieldMaskBit49 = 0x2000000000000
-+	CBitFieldMaskBit50 = 0x4000000000000
-+	CBitFieldMaskBit51 = 0x8000000000000
-+	CBitFieldMaskBit52 = 0x10000000000000
-+	CBitFieldMaskBit53 = 0x20000000000000
-+	CBitFieldMaskBit54 = 0x40000000000000
-+	CBitFieldMaskBit55 = 0x80000000000000
-+	CBitFieldMaskBit56 = 0x100000000000000
-+	CBitFieldMaskBit57 = 0x200000000000000
-+	CBitFieldMaskBit58 = 0x400000000000000
-+	CBitFieldMaskBit59 = 0x800000000000000
-+	CBitFieldMaskBit60 = 0x1000000000000000
-+	CBitFieldMaskBit61 = 0x2000000000000000
-+	CBitFieldMaskBit62 = 0x4000000000000000
-+	CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]uint8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
-+}
-+
-+const (
-+	SizeofTpacketHdr = 0x20
-+)
-+
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
-+}
-+
-+const (
-+	BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]uint8
-+	Driver_name [64]uint8
-+	Module_name [64]uint8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]uint8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]uint8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]uint8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]uint8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]uint8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]uint8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]uint8
-+	Geniv       [64]uint8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]uint8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint64
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]uint8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]uint8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-index 5e0aa663..cca1b6be 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-@@ -6,19 +6,12 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
- 
- type Timex struct {
- 	Modes     uint32
--	_         [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	_         [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,7 +39,6 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	_         [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- 	Dev     uint64
- 	Ino     uint64
-@@ -116,22 +99,6 @@ type Stat_t struct {
- 	_       [3]int64
- }
- 
--type Statfs_t struct {
--	Type    uint32
--	Bsize   uint32
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen uint32
--	Frsize  uint32
--	Flags   uint32
--	Spare   [4]uint32
--	_       [4]byte
--}
--
- type Dirent struct {
- 	Ino    uint64
- 	Off    int64
-@@ -141,115 +108,20 @@ type Dirent struct {
- 	_      [5]byte
- }
- 
--type Fsid struct {
--	_ [2]int32
--}
--
- type Flock_t struct {
- 	Type   int16
- 	Whence int16
--	_      [4]byte
- 	Start  int64
- 	Len    int64
- 	Pid    int32
- 	_      [4]byte
- }
- 
--type FscryptPolicy struct {
--	Version                   uint8
--	Contents_encryption_mode  uint8
--	Filenames_encryption_mode uint8
--	Flags                     uint8
--	Master_key_descriptor     [8]uint8
--}
--
--type FscryptKey struct {
--	Mode uint32
--	Raw  [64]uint8
--	Size uint32
--}
--
--type KeyctlDHParams struct {
--	Private int32
--	Prime   int32
--	Base    int32
--}
--
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x6
--	FADV_NOREUSE    = 0x7
-+	FADV_DONTNEED = 0x6
-+	FADV_NOREUSE  = 0x7
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family  uint16
--	_       [2]byte
--	Ifindex int32
--	Addr    [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -260,45 +132,14 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
--type PacketMreq struct {
--	Ifindex int32
--	Type    uint16
--	Alen    uint16
--	Address [8]uint8
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	_          [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
-@@ -313,277 +154,16 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	_              [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
--const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIovec             = 0x10
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofPacketMreq        = 0x10
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
--)
--
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2b
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
--}
--
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
--}
--
--type RtGenmsg struct {
--	Family uint8
--}
--
--type NlAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type RtAttr struct {
--	Len  uint16
--	Type uint16
--}
--
--type IfInfomsg struct {
--	Family uint8
--	_      uint8
--	Type   uint16
--	Index  int32
--	Flags  uint32
--	Change uint32
--}
--
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
--}
--
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
--}
--
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
--}
--
- const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
-+	SizeofSockFprog = 0x10
- )
- 
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
--}
--
--type SockFprog struct {
--	Len    uint16
--	_      [6]byte
--	Filter *SockFilter
--}
--
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- 	Psw                      PtracePsw
- 	Gprs                     [16]uint64
-@@ -601,18 +181,15 @@ type PtracePsw struct {
- 
- type PtraceFpregs struct {
- 	Fpc  uint32
--	_    [4]byte
- 	Fprs [16]float64
- }
- 
- type PtracePer struct {
- 	_             [0]uint64
--	_             [24]byte
--	_             [8]byte
-+	_             [32]byte
- 	Starting_addr uint64
- 	Ending_addr   uint64
- 	Perc_atmid    uint16
--	_             [6]byte
- 	Address       uint64
- 	Access_id     uint8
- 	_             [7]byte
-@@ -633,7 +210,6 @@ type Sysinfo_t struct {
- 	Freeswap  uint64
- 	Procs     uint16
- 	Pad       uint16
--	_         [4]byte
- 	Totalhigh uint64
- 	Freehigh  uint64
- 	Unit      uint32
-@@ -641,18 +217,8 @@ type Sysinfo_t struct {
- 	_         [4]byte
- }
- 
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
--}
--
- type Ustat_t struct {
- 	Tfree  int32
--	_      [4]byte
- 	Tinode uint64
- 	Fname  [6]int8
- 	Fpack  [6]int8
-@@ -667,37 +233,14 @@ type EpollEvent struct {
- }
- 
- const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
--}
--
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
- 	POLLRDHUP = 0x2000
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
- )
- 
- type Sigset_t struct {
--	_ [16]uint64
-+	Val [16]uint64
- }
- 
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
- 
- type Termios struct {
- 	Iflag  uint32
-@@ -710,20 +253,11 @@ type Termios struct {
- 	Ospeed uint32
- }
- 
--type Winsize struct {
--	Row    uint16
--	Col    uint16
--	Xpixel uint16
--	Ypixel uint16
--}
--
- type Taskstats struct {
- 	Version                   uint16
--	_                         [2]byte
- 	Ac_exitcode               uint32
- 	Ac_flag                   uint8
- 	Ac_nice                   uint8
--	_                         [6]byte
- 	Cpu_count                 uint64
- 	Cpu_delay_total           uint64
- 	Blkio_count               uint64
-@@ -741,7 +275,6 @@ type Taskstats struct {
- 	Ac_pid                    uint32
- 	Ac_ppid                   uint32
- 	Ac_btime                  uint32
--	_                         [4]byte
- 	Ac_etime                  uint64
- 	Ac_utime                  uint64
- 	Ac_stime                  uint64
-@@ -765,55 +298,320 @@ type Taskstats struct {
- 	Cpu_scaled_run_real_total uint64
- 	Freepages_count           uint64
- 	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+	_NCPUBITS = 0x40
-+)
-+
-+const (
-+	CBitFieldMaskBit0  = 0x8000000000000000
-+	CBitFieldMaskBit1  = 0x4000000000000000
-+	CBitFieldMaskBit2  = 0x2000000000000000
-+	CBitFieldMaskBit3  = 0x1000000000000000
-+	CBitFieldMaskBit4  = 0x800000000000000
-+	CBitFieldMaskBit5  = 0x400000000000000
-+	CBitFieldMaskBit6  = 0x200000000000000
-+	CBitFieldMaskBit7  = 0x100000000000000
-+	CBitFieldMaskBit8  = 0x80000000000000
-+	CBitFieldMaskBit9  = 0x40000000000000
-+	CBitFieldMaskBit10 = 0x20000000000000
-+	CBitFieldMaskBit11 = 0x10000000000000
-+	CBitFieldMaskBit12 = 0x8000000000000
-+	CBitFieldMaskBit13 = 0x4000000000000
-+	CBitFieldMaskBit14 = 0x2000000000000
-+	CBitFieldMaskBit15 = 0x1000000000000
-+	CBitFieldMaskBit16 = 0x800000000000
-+	CBitFieldMaskBit17 = 0x400000000000
-+	CBitFieldMaskBit18 = 0x200000000000
-+	CBitFieldMaskBit19 = 0x100000000000
-+	CBitFieldMaskBit20 = 0x80000000000
-+	CBitFieldMaskBit21 = 0x40000000000
-+	CBitFieldMaskBit22 = 0x20000000000
-+	CBitFieldMaskBit23 = 0x10000000000
-+	CBitFieldMaskBit24 = 0x8000000000
-+	CBitFieldMaskBit25 = 0x4000000000
-+	CBitFieldMaskBit26 = 0x2000000000
-+	CBitFieldMaskBit27 = 0x1000000000
-+	CBitFieldMaskBit28 = 0x800000000
-+	CBitFieldMaskBit29 = 0x400000000
-+	CBitFieldMaskBit30 = 0x200000000
-+	CBitFieldMaskBit31 = 0x100000000
-+	CBitFieldMaskBit32 = 0x80000000
-+	CBitFieldMaskBit33 = 0x40000000
-+	CBitFieldMaskBit34 = 0x20000000
-+	CBitFieldMaskBit35 = 0x10000000
-+	CBitFieldMaskBit36 = 0x8000000
-+	CBitFieldMaskBit37 = 0x4000000
-+	CBitFieldMaskBit38 = 0x2000000
-+	CBitFieldMaskBit39 = 0x1000000
-+	CBitFieldMaskBit40 = 0x800000
-+	CBitFieldMaskBit41 = 0x400000
-+	CBitFieldMaskBit42 = 0x200000
-+	CBitFieldMaskBit43 = 0x100000
-+	CBitFieldMaskBit44 = 0x80000
-+	CBitFieldMaskBit45 = 0x40000
-+	CBitFieldMaskBit46 = 0x20000
-+	CBitFieldMaskBit47 = 0x10000
-+	CBitFieldMaskBit48 = 0x8000
-+	CBitFieldMaskBit49 = 0x4000
-+	CBitFieldMaskBit50 = 0x2000
-+	CBitFieldMaskBit51 = 0x1000
-+	CBitFieldMaskBit52 = 0x800
-+	CBitFieldMaskBit53 = 0x400
-+	CBitFieldMaskBit54 = 0x200
-+	CBitFieldMaskBit55 = 0x100
-+	CBitFieldMaskBit56 = 0x80
-+	CBitFieldMaskBit57 = 0x40
-+	CBitFieldMaskBit58 = 0x20
-+	CBitFieldMaskBit59 = 0x10
-+	CBitFieldMaskBit60 = 0x8
-+	CBitFieldMaskBit61 = 0x4
-+	CBitFieldMaskBit62 = 0x2
-+	CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    uint32
-+	Bsize   uint32
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen uint32
-+	Frsize  uint32
-+	Flags   uint32
-+	Spare   [4]uint32
-+	_       [4]byte
-+}
-+
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	TASKSTATS_CMD_UNSPEC                  = 0x0
--	TASKSTATS_CMD_GET                     = 0x1
--	TASKSTATS_CMD_NEW                     = 0x2
--	TASKSTATS_TYPE_UNSPEC                 = 0x0
--	TASKSTATS_TYPE_PID                    = 0x1
--	TASKSTATS_TYPE_TGID                   = 0x2
--	TASKSTATS_TYPE_STATS                  = 0x3
--	TASKSTATS_TYPE_AGGR_PID               = 0x4
--	TASKSTATS_TYPE_AGGR_TGID              = 0x5
--	TASKSTATS_TYPE_NULL                   = 0x6
--	TASKSTATS_CMD_ATTR_UNSPEC             = 0x0
--	TASKSTATS_CMD_ATTR_PID                = 0x1
--	TASKSTATS_CMD_ATTR_TGID               = 0x2
--	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3
--	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+	SizeofTpacketHdr = 0x20
- )
- 
--type Genlmsghdr struct {
--	Cmd      uint8
--	Version  uint8
--	Reserved uint16
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
-+}
-+
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
- }
- 
- const (
--	CTRL_CMD_UNSPEC            = 0x0
--	CTRL_CMD_NEWFAMILY         = 0x1
--	CTRL_CMD_DELFAMILY         = 0x2
--	CTRL_CMD_GETFAMILY         = 0x3
--	CTRL_CMD_NEWOPS            = 0x4
--	CTRL_CMD_DELOPS            = 0x5
--	CTRL_CMD_GETOPS            = 0x6
--	CTRL_CMD_NEWMCAST_GRP      = 0x7
--	CTRL_CMD_DELMCAST_GRP      = 0x8
--	CTRL_CMD_GETMCAST_GRP      = 0x9
--	CTRL_ATTR_UNSPEC           = 0x0
--	CTRL_ATTR_FAMILY_ID        = 0x1
--	CTRL_ATTR_FAMILY_NAME      = 0x2
--	CTRL_ATTR_VERSION          = 0x3
--	CTRL_ATTR_HDRSIZE          = 0x4
--	CTRL_ATTR_MAXATTR          = 0x5
--	CTRL_ATTR_OPS              = 0x6
--	CTRL_ATTR_MCAST_GROUPS     = 0x7
--	CTRL_ATTR_OP_UNSPEC        = 0x0
--	CTRL_ATTR_OP_ID            = 0x1
--	CTRL_ATTR_OP_FLAGS         = 0x2
--	CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
--	CTRL_ATTR_MCAST_GRP_NAME   = 0x1
--	CTRL_ATTR_MCAST_GRP_ID     = 0x2
-+	BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
-+}
-+
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
-+}
-+
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
-+}
-+
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
-+}
-+
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
-+}
-+
-+type CryptoStatLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
-+}
-+
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint16
-+	Inode            uint64
-+	Rdevice          uint16
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-index 22bdab96..33a73bf1 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-@@ -1,23 +1,17 @@
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
- // +build sparc64,linux
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_linux.go | go run mkpost.go
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
--	PathMax        = 0x1000
-+	SizeofPtr  = 0x8
-+	SizeofLong = 0x8
- )
- 
- type (
--	_C_short     int16
--	_C_int       int32
--	_C_long      int64
--	_C_long_long int64
-+	_C_long int64
- )
- 
- type Timespec struct {
-@@ -26,20 +20,18 @@ type Timespec struct {
- }
- 
- type Timeval struct {
--	Sec       int64
--	Usec      int32
--	Pad_cgo_0 [4]byte
-+	Sec  int64
-+	Usec int32
-+	_    [4]byte
- }
- 
- type Timex struct {
- 	Modes     uint32
--	Pad_cgo_0 [4]byte
- 	Offset    int64
- 	Freq      int64
- 	Maxerror  int64
- 	Esterror  int64
- 	Status    int32
--	Pad_cgo_1 [4]byte
- 	Constant  int64
- 	Precision int64
- 	Tolerance int64
-@@ -48,14 +40,13 @@ type Timex struct {
- 	Ppsfreq   int64
- 	Jitter    int64
- 	Shift     int32
--	Pad_cgo_2 [4]byte
- 	Stabil    int64
- 	Jitcnt    int64
- 	Calcnt    int64
- 	Errcnt    int64
- 	Stbcnt    int64
- 	Tai       int32
--	Pad_cgo_3 [44]byte
-+	_         [44]byte
- }
- 
- type Time_t int64
-@@ -91,149 +82,50 @@ type Rusage struct {
- 	Nivcsw   int64
- }
- 
--type Rlimit struct {
--	Cur uint64
--	Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
--	Dev                uint64
--	X__pad1            uint16
--	Pad_cgo_0          [6]byte
--	Ino                uint64
--	Mode               uint32
--	Nlink              uint32
--	Uid                uint32
--	Gid                uint32
--	Rdev               uint64
--	X__pad2            uint16
--	Pad_cgo_1          [6]byte
--	Size               int64
--	Blksize            int64
--	Blocks             int64
--	Atim               Timespec
--	Mtim               Timespec
--	Ctim               Timespec
--	X__glibc_reserved4 uint64
--	X__glibc_reserved5 uint64
--}
--
--type Statfs_t struct {
--	Type    int64
--	Bsize   int64
--	Blocks  uint64
--	Bfree   uint64
--	Bavail  uint64
--	Files   uint64
--	Ffree   uint64
--	Fsid    Fsid
--	Namelen int64
--	Frsize  int64
--	Flags   int64
--	Spare   [4]int64
-+	Dev     uint64
-+	_       uint16
-+	Ino     uint64
-+	Mode    uint32
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	_       uint16
-+	Size    int64
-+	Blksize int64
-+	Blocks  int64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	_       uint64
-+	_       uint64
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Type      uint8
--	Name      [256]int8
--	Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
--	X__val [2]int32
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Name   [256]int8
-+	_      [5]byte
- }
- 
- type Flock_t struct {
--	Type              int16
--	Whence            int16
--	Pad_cgo_0         [4]byte
--	Start             int64
--	Len               int64
--	Pid               int32
--	X__glibc_reserved int16
--	Pad_cgo_1         [2]byte
-+	Type   int16
-+	Whence int16
-+	Start  int64
-+	Len    int64
-+	Pid    int32
-+	_      int16
-+	_      [2]byte
- }
- 
- const (
--	FADV_NORMAL     = 0x0
--	FADV_RANDOM     = 0x1
--	FADV_SEQUENTIAL = 0x2
--	FADV_WILLNEED   = 0x3
--	FADV_DONTNEED   = 0x4
--	FADV_NOREUSE    = 0x5
-+	FADV_DONTNEED = 0x4
-+	FADV_NOREUSE  = 0x5
- )
- 
--type RawSockaddrInet4 struct {
--	Family uint16
--	Port   uint16
--	Addr   [4]byte /* in_addr */
--	Zero   [8]uint8
--}
--
--type RawSockaddrInet6 struct {
--	Family   uint16
--	Port     uint16
--	Flowinfo uint32
--	Addr     [16]byte /* in6_addr */
--	Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
--	Family uint16
--	Path   [108]int8
--}
--
--type RawSockaddrLinklayer struct {
--	Family   uint16
--	Protocol uint16
--	Ifindex  int32
--	Hatype   uint16
--	Pkttype  uint8
--	Halen    uint8
--	Addr     [8]uint8
--}
--
--type RawSockaddrNetlink struct {
--	Family uint16
--	Pad    uint16
--	Pid    uint32
--	Groups uint32
--}
--
--type RawSockaddrHCI struct {
--	Family  uint16
--	Dev     uint16
--	Channel uint16
--}
--
--type RawSockaddrCAN struct {
--	Family    uint16
--	Pad_cgo_0 [2]byte
--	Ifindex   int32
--	Addr      [8]byte
--}
--
--type RawSockaddrALG struct {
--	Family uint16
--	Type   [14]uint8
--	Feat   uint32
--	Mask   uint32
--	Name   [64]uint8
--}
--
--type RawSockaddrVM struct {
--	Family    uint16
--	Reserved1 uint16
--	Port      uint32
--	Cid       uint32
--	Zero      [4]uint8
--}
--
- type RawSockaddr struct {
- 	Family uint16
- 	Data   [14]int8
-@@ -244,44 +136,20 @@ type RawSockaddrAny struct {
- 	Pad  [96]int8
- }
- 
--type _Socklen uint32
--
--type Linger struct {
--	Onoff  int32
--	Linger int32
--}
--
- type Iovec struct {
- 	Base *byte
- 	Len  uint64
- }
- 
--type IPMreq struct {
--	Multiaddr [4]byte /* in_addr */
--	Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
--	Multiaddr [4]byte /* in_addr */
--	Address   [4]byte /* in_addr */
--	Ifindex   int32
--}
--
--type IPv6Mreq struct {
--	Multiaddr [16]byte /* in6_addr */
--	Interface uint32
--}
--
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint64
- 	Control    *byte
- 	Controllen uint64
- 	Flags      int32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -290,377 +158,441 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
--type Inet4Pktinfo struct {
--	Ifindex  int32
--	Spec_dst [4]byte /* in_addr */
--	Addr     [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
--	Addr    [16]byte /* in6_addr */
--	Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
--	Addr RawSockaddrInet6
--	Mtu  uint32
--}
--
--type ICMPv6Filter struct {
--	Data [8]uint32
--}
--
--type Ucred struct {
--	Pid int32
--	Uid uint32
--	Gid uint32
--}
--
--type TCPInfo struct {
--	State          uint8
--	Ca_state       uint8
--	Retransmits    uint8
--	Probes         uint8
--	Backoff        uint8
--	Options        uint8
--	Pad_cgo_0      [2]byte
--	Rto            uint32
--	Ato            uint32
--	Snd_mss        uint32
--	Rcv_mss        uint32
--	Unacked        uint32
--	Sacked         uint32
--	Lost           uint32
--	Retrans        uint32
--	Fackets        uint32
--	Last_data_sent uint32
--	Last_ack_sent  uint32
--	Last_data_recv uint32
--	Last_ack_recv  uint32
--	Pmtu           uint32
--	Rcv_ssthresh   uint32
--	Rtt            uint32
--	Rttvar         uint32
--	Snd_ssthresh   uint32
--	Snd_cwnd       uint32
--	Advmss         uint32
--	Reordering     uint32
--	Rcv_rtt        uint32
--	Rcv_space      uint32
--	Total_retrans  uint32
--}
--
- const (
--	SizeofSockaddrInet4     = 0x10
--	SizeofSockaddrInet6     = 0x1c
--	SizeofSockaddrAny       = 0x70
--	SizeofSockaddrUnix      = 0x6e
--	SizeofSockaddrLinklayer = 0x14
--	SizeofSockaddrNetlink   = 0xc
--	SizeofSockaddrHCI       = 0x6
--	SizeofSockaddrCAN       = 0x10
--	SizeofSockaddrALG       = 0x58
--	SizeofSockaddrVM        = 0x10
--	SizeofLinger            = 0x8
--	SizeofIPMreq            = 0x8
--	SizeofIPMreqn           = 0xc
--	SizeofIPv6Mreq          = 0x14
--	SizeofMsghdr            = 0x38
--	SizeofCmsghdr           = 0x10
--	SizeofInet4Pktinfo      = 0xc
--	SizeofInet6Pktinfo      = 0x14
--	SizeofIPv6MTUInfo       = 0x20
--	SizeofICMPv6Filter      = 0x20
--	SizeofUcred             = 0xc
--	SizeofTCPInfo           = 0x68
-+	SizeofIovec   = 0x10
-+	SizeofMsghdr  = 0x38
-+	SizeofCmsghdr = 0x10
- )
- 
- const (
--	IFA_UNSPEC          = 0x0
--	IFA_ADDRESS         = 0x1
--	IFA_LOCAL           = 0x2
--	IFA_LABEL           = 0x3
--	IFA_BROADCAST       = 0x4
--	IFA_ANYCAST         = 0x5
--	IFA_CACHEINFO       = 0x6
--	IFA_MULTICAST       = 0x7
--	IFLA_UNSPEC         = 0x0
--	IFLA_ADDRESS        = 0x1
--	IFLA_BROADCAST      = 0x2
--	IFLA_IFNAME         = 0x3
--	IFLA_MTU            = 0x4
--	IFLA_LINK           = 0x5
--	IFLA_QDISC          = 0x6
--	IFLA_STATS          = 0x7
--	IFLA_COST           = 0x8
--	IFLA_PRIORITY       = 0x9
--	IFLA_MASTER         = 0xa
--	IFLA_WIRELESS       = 0xb
--	IFLA_PROTINFO       = 0xc
--	IFLA_TXQLEN         = 0xd
--	IFLA_MAP            = 0xe
--	IFLA_WEIGHT         = 0xf
--	IFLA_OPERSTATE      = 0x10
--	IFLA_LINKMODE       = 0x11
--	IFLA_LINKINFO       = 0x12
--	IFLA_NET_NS_PID     = 0x13
--	IFLA_IFALIAS        = 0x14
--	IFLA_MAX            = 0x2a
--	RT_SCOPE_UNIVERSE   = 0x0
--	RT_SCOPE_SITE       = 0xc8
--	RT_SCOPE_LINK       = 0xfd
--	RT_SCOPE_HOST       = 0xfe
--	RT_SCOPE_NOWHERE    = 0xff
--	RT_TABLE_UNSPEC     = 0x0
--	RT_TABLE_COMPAT     = 0xfc
--	RT_TABLE_DEFAULT    = 0xfd
--	RT_TABLE_MAIN       = 0xfe
--	RT_TABLE_LOCAL      = 0xff
--	RT_TABLE_MAX        = 0xffffffff
--	RTA_UNSPEC          = 0x0
--	RTA_DST             = 0x1
--	RTA_SRC             = 0x2
--	RTA_IIF             = 0x3
--	RTA_OIF             = 0x4
--	RTA_GATEWAY         = 0x5
--	RTA_PRIORITY        = 0x6
--	RTA_PREFSRC         = 0x7
--	RTA_METRICS         = 0x8
--	RTA_MULTIPATH       = 0x9
--	RTA_FLOW            = 0xb
--	RTA_CACHEINFO       = 0xc
--	RTA_TABLE           = 0xf
--	RTN_UNSPEC          = 0x0
--	RTN_UNICAST         = 0x1
--	RTN_LOCAL           = 0x2
--	RTN_BROADCAST       = 0x3
--	RTN_ANYCAST         = 0x4
--	RTN_MULTICAST       = 0x5
--	RTN_BLACKHOLE       = 0x6
--	RTN_UNREACHABLE     = 0x7
--	RTN_PROHIBIT        = 0x8
--	RTN_THROW           = 0x9
--	RTN_NAT             = 0xa
--	RTN_XRESOLVE        = 0xb
--	RTNLGRP_NONE        = 0x0
--	RTNLGRP_LINK        = 0x1
--	RTNLGRP_NOTIFY      = 0x2
--	RTNLGRP_NEIGH       = 0x3
--	RTNLGRP_TC          = 0x4
--	RTNLGRP_IPV4_IFADDR = 0x5
--	RTNLGRP_IPV4_MROUTE = 0x6
--	RTNLGRP_IPV4_ROUTE  = 0x7
--	RTNLGRP_IPV4_RULE   = 0x8
--	RTNLGRP_IPV6_IFADDR = 0x9
--	RTNLGRP_IPV6_MROUTE = 0xa
--	RTNLGRP_IPV6_ROUTE  = 0xb
--	RTNLGRP_IPV6_IFINFO = 0xc
--	RTNLGRP_IPV6_PREFIX = 0x12
--	RTNLGRP_IPV6_RULE   = 0x13
--	RTNLGRP_ND_USEROPT  = 0x14
--	SizeofNlMsghdr      = 0x10
--	SizeofNlMsgerr      = 0x14
--	SizeofRtGenmsg      = 0x1
--	SizeofNlAttr        = 0x4
--	SizeofRtAttr        = 0x4
--	SizeofIfInfomsg     = 0x10
--	SizeofIfAddrmsg     = 0x8
--	SizeofRtMsg         = 0xc
--	SizeofRtNexthop     = 0x8
-+	SizeofSockFprog = 0x10
- )
- 
--type NlMsghdr struct {
--	Len   uint32
--	Type  uint16
--	Flags uint16
--	Seq   uint32
--	Pid   uint32
-+type PtraceRegs struct {
-+	Regs   [16]uint64
-+	Tstate uint64
-+	Tpc    uint64
-+	Tnpc   uint64
-+	Y      uint32
-+	Magic  uint32
- }
- 
--type NlMsgerr struct {
--	Error int32
--	Msg   NlMsghdr
-+type FdSet struct {
-+	Bits [16]int64
- }
- 
--type RtGenmsg struct {
--	Family uint8
-+type Sysinfo_t struct {
-+	Uptime    int64
-+	Loads     [3]uint64
-+	Totalram  uint64
-+	Freeram   uint64
-+	Sharedram uint64
-+	Bufferram uint64
-+	Totalswap uint64
-+	Freeswap  uint64
-+	Procs     uint16
-+	Pad       uint16
-+	Totalhigh uint64
-+	Freehigh  uint64
-+	Unit      uint32
-+	_         [0]int8
-+	_         [4]byte
- }
- 
--type NlAttr struct {
--	Len  uint16
--	Type uint16
-+type Ustat_t struct {
-+	Tfree  int32
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
--type RtAttr struct {
--	Len  uint16
--	Type uint16
-+type EpollEvent struct {
-+	Events uint32
-+	_      int32
-+	Fd     int32
-+	Pad    int32
- }
- 
--type IfInfomsg struct {
--	Family     uint8
--	X__ifi_pad uint8
--	Type       uint16
--	Index      int32
--	Flags      uint32
--	Change     uint32
-+const (
-+	POLLRDHUP = 0x800
-+)
-+
-+type Sigset_t struct {
-+	Val [16]uint64
- }
- 
--type IfAddrmsg struct {
--	Family    uint8
--	Prefixlen uint8
--	Flags     uint8
--	Scope     uint8
--	Index     uint32
-+const _C__NSIG = 0x41
-+
-+type Termios struct {
-+	Iflag  uint32
-+	Oflag  uint32
-+	Cflag  uint32
-+	Lflag  uint32
-+	Line   uint8
-+	Cc     [19]uint8
-+	Ispeed uint32
-+	Ospeed uint32
- }
- 
--type RtMsg struct {
--	Family   uint8
--	Dst_len  uint8
--	Src_len  uint8
--	Tos      uint8
--	Table    uint8
--	Protocol uint8
--	Scope    uint8
--	Type     uint8
--	Flags    uint32
-+type Taskstats struct {
-+	Version                   uint16
-+	Ac_exitcode               uint32
-+	Ac_flag                   uint8
-+	Ac_nice                   uint8
-+	Cpu_count                 uint64
-+	Cpu_delay_total           uint64
-+	Blkio_count               uint64
-+	Blkio_delay_total         uint64
-+	Swapin_count              uint64
-+	Swapin_delay_total        uint64
-+	Cpu_run_real_total        uint64
-+	Cpu_run_virtual_total     uint64
-+	Ac_comm                   [32]int8
-+	Ac_sched                  uint8
-+	Ac_pad                    [3]uint8
-+	_                         [4]byte
-+	Ac_uid                    uint32
-+	Ac_gid                    uint32
-+	Ac_pid                    uint32
-+	Ac_ppid                   uint32
-+	Ac_btime                  uint32
-+	Ac_etime                  uint64
-+	Ac_utime                  uint64
-+	Ac_stime                  uint64
-+	Ac_minflt                 uint64
-+	Ac_majflt                 uint64
-+	Coremem                   uint64
-+	Virtmem                   uint64
-+	Hiwater_rss               uint64
-+	Hiwater_vm                uint64
-+	Read_char                 uint64
-+	Write_char                uint64
-+	Read_syscalls             uint64
-+	Write_syscalls            uint64
-+	Read_bytes                uint64
-+	Write_bytes               uint64
-+	Cancelled_write_bytes     uint64
-+	Nvcsw                     uint64
-+	Nivcsw                    uint64
-+	Ac_utimescaled            uint64
-+	Ac_stimescaled            uint64
-+	Cpu_scaled_run_real_total uint64
-+	Freepages_count           uint64
-+	Freepages_delay_total     uint64
-+	Thrashing_count           uint64
-+	Thrashing_delay_total     uint64
-+	Ac_btime64                uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+	_NCPUBITS = 0x40
-+)
-+
-+const (
-+	CBitFieldMaskBit0  = 0x8000000000000000
-+	CBitFieldMaskBit1  = 0x4000000000000000
-+	CBitFieldMaskBit2  = 0x2000000000000000
-+	CBitFieldMaskBit3  = 0x1000000000000000
-+	CBitFieldMaskBit4  = 0x800000000000000
-+	CBitFieldMaskBit5  = 0x400000000000000
-+	CBitFieldMaskBit6  = 0x200000000000000
-+	CBitFieldMaskBit7  = 0x100000000000000
-+	CBitFieldMaskBit8  = 0x80000000000000
-+	CBitFieldMaskBit9  = 0x40000000000000
-+	CBitFieldMaskBit10 = 0x20000000000000
-+	CBitFieldMaskBit11 = 0x10000000000000
-+	CBitFieldMaskBit12 = 0x8000000000000
-+	CBitFieldMaskBit13 = 0x4000000000000
-+	CBitFieldMaskBit14 = 0x2000000000000
-+	CBitFieldMaskBit15 = 0x1000000000000
-+	CBitFieldMaskBit16 = 0x800000000000
-+	CBitFieldMaskBit17 = 0x400000000000
-+	CBitFieldMaskBit18 = 0x200000000000
-+	CBitFieldMaskBit19 = 0x100000000000
-+	CBitFieldMaskBit20 = 0x80000000000
-+	CBitFieldMaskBit21 = 0x40000000000
-+	CBitFieldMaskBit22 = 0x20000000000
-+	CBitFieldMaskBit23 = 0x10000000000
-+	CBitFieldMaskBit24 = 0x8000000000
-+	CBitFieldMaskBit25 = 0x4000000000
-+	CBitFieldMaskBit26 = 0x2000000000
-+	CBitFieldMaskBit27 = 0x1000000000
-+	CBitFieldMaskBit28 = 0x800000000
-+	CBitFieldMaskBit29 = 0x400000000
-+	CBitFieldMaskBit30 = 0x200000000
-+	CBitFieldMaskBit31 = 0x100000000
-+	CBitFieldMaskBit32 = 0x80000000
-+	CBitFieldMaskBit33 = 0x40000000
-+	CBitFieldMaskBit34 = 0x20000000
-+	CBitFieldMaskBit35 = 0x10000000
-+	CBitFieldMaskBit36 = 0x8000000
-+	CBitFieldMaskBit37 = 0x4000000
-+	CBitFieldMaskBit38 = 0x2000000
-+	CBitFieldMaskBit39 = 0x1000000
-+	CBitFieldMaskBit40 = 0x800000
-+	CBitFieldMaskBit41 = 0x400000
-+	CBitFieldMaskBit42 = 0x200000
-+	CBitFieldMaskBit43 = 0x100000
-+	CBitFieldMaskBit44 = 0x80000
-+	CBitFieldMaskBit45 = 0x40000
-+	CBitFieldMaskBit46 = 0x20000
-+	CBitFieldMaskBit47 = 0x10000
-+	CBitFieldMaskBit48 = 0x8000
-+	CBitFieldMaskBit49 = 0x4000
-+	CBitFieldMaskBit50 = 0x2000
-+	CBitFieldMaskBit51 = 0x1000
-+	CBitFieldMaskBit52 = 0x800
-+	CBitFieldMaskBit53 = 0x400
-+	CBitFieldMaskBit54 = 0x200
-+	CBitFieldMaskBit55 = 0x100
-+	CBitFieldMaskBit56 = 0x80
-+	CBitFieldMaskBit57 = 0x40
-+	CBitFieldMaskBit58 = 0x20
-+	CBitFieldMaskBit59 = 0x10
-+	CBitFieldMaskBit60 = 0x8
-+	CBitFieldMaskBit61 = 0x4
-+	CBitFieldMaskBit62 = 0x2
-+	CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+	Family uint16
-+	_      [118]int8
-+	_      uint64
-+}
-+
-+type HDGeometry struct {
-+	Heads     uint8
-+	Sectors   uint8
-+	Cylinders uint16
-+	Start     uint64
-+}
-+
-+type Statfs_t struct {
-+	Type    int64
-+	Bsize   int64
-+	Blocks  uint64
-+	Bfree   uint64
-+	Bavail  uint64
-+	Files   uint64
-+	Ffree   uint64
-+	Fsid    Fsid
-+	Namelen int64
-+	Frsize  int64
-+	Flags   int64
-+	Spare   [4]int64
- }
- 
--type RtNexthop struct {
--	Len     uint16
--	Flags   uint8
--	Hops    uint8
--	Ifindex int32
-+type TpacketHdr struct {
-+	Status  uint64
-+	Len     uint32
-+	Snaplen uint32
-+	Mac     uint16
-+	Net     uint16
-+	Sec     uint32
-+	Usec    uint32
-+	_       [4]byte
- }
- 
- const (
--	SizeofSockFilter = 0x8
--	SizeofSockFprog  = 0x10
-+	SizeofTpacketHdr = 0x20
- )
- 
--type SockFilter struct {
--	Code uint16
--	Jt   uint8
--	Jf   uint8
--	K    uint32
-+type RTCPLLInfo struct {
-+	Ctrl    int32
-+	Value   int32
-+	Max     int32
-+	Min     int32
-+	Posmult int32
-+	Negmult int32
-+	Clock   int64
- }
- 
--type SockFprog struct {
--	Len       uint16
--	Pad_cgo_0 [6]byte
--	Filter    *SockFilter
-+type BlkpgPartition struct {
-+	Start   int64
-+	Length  int64
-+	Pno     int32
-+	Devname [64]uint8
-+	Volname [64]uint8
-+	_       [4]byte
- }
- 
--type InotifyEvent struct {
--	Wd     int32
--	Mask   uint32
--	Cookie uint32
--	Len    uint32
-+const (
-+	BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+	Addr     uint64
-+	Len      uint64
-+	Size     uint32
-+	Headroom uint32
-+	Flags    uint32
-+	_        [4]byte
- }
- 
--const SizeofInotifyEvent = 0x10
-+type CryptoUserAlg struct {
-+	Name        [64]int8
-+	Driver_name [64]int8
-+	Module_name [64]int8
-+	Type        uint32
-+	Mask        uint32
-+	Refcnt      uint32
-+	Flags       uint32
-+}
- 
--type PtraceRegs struct {
--	Regs   [16]uint64
--	Tstate uint64
--	Tpc    uint64
--	Tnpc   uint64
--	Y      uint32
--	Magic  uint32
-+type CryptoStatAEAD struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
- }
- 
--type ptracePsw struct {
-+type CryptoStatAKCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Verify_cnt   uint64
-+	Sign_cnt     uint64
-+	Err_cnt      uint64
- }
- 
--type ptraceFpregs struct {
-+type CryptoStatCipher struct {
-+	Type         [64]int8
-+	Encrypt_cnt  uint64
-+	Encrypt_tlen uint64
-+	Decrypt_cnt  uint64
-+	Decrypt_tlen uint64
-+	Err_cnt      uint64
- }
- 
--type ptracePer struct {
-+type CryptoStatCompress struct {
-+	Type            [64]int8
-+	Compress_cnt    uint64
-+	Compress_tlen   uint64
-+	Decompress_cnt  uint64
-+	Decompress_tlen uint64
-+	Err_cnt         uint64
- }
- 
--type FdSet struct {
--	Bits [16]int64
-+type CryptoStatHash struct {
-+	Type      [64]int8
-+	Hash_cnt  uint64
-+	Hash_tlen uint64
-+	Err_cnt   uint64
- }
- 
--type Sysinfo_t struct {
--	Uptime    int64
--	Loads     [3]uint64
--	Totalram  uint64
--	Freeram   uint64
--	Sharedram uint64
--	Bufferram uint64
--	Totalswap uint64
--	Freeswap  uint64
--	Procs     uint16
--	Pad       uint16
--	Pad_cgo_0 [4]byte
--	Totalhigh uint64
--	Freehigh  uint64
--	Unit      uint32
--	X_f       [0]int8
--	Pad_cgo_1 [4]byte
-+type CryptoStatKPP struct {
-+	Type                      [64]int8
-+	Setsecret_cnt             uint64
-+	Generate_public_key_cnt   uint64
-+	Compute_shared_secret_cnt uint64
-+	Err_cnt                   uint64
- }
- 
--type Utsname struct {
--	Sysname    [65]int8
--	Nodename   [65]int8
--	Release    [65]int8
--	Version    [65]int8
--	Machine    [65]int8
--	Domainname [65]int8
-+type CryptoStatRNG struct {
-+	Type          [64]int8
-+	Generate_cnt  uint64
-+	Generate_tlen uint64
-+	Seed_cnt      uint64
-+	Err_cnt       uint64
- }
- 
--type Ustat_t struct {
--	Tfree     int32
--	Pad_cgo_0 [4]byte
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_1 [4]byte
-+type CryptoStatLarval struct {
-+	Type [64]int8
- }
- 
--type EpollEvent struct {
--	Events  uint32
--	X_padFd int32
--	Fd      int32
--	Pad     int32
-+type CryptoReportLarval struct {
-+	Type [64]int8
- }
- 
--const (
--	AT_FDCWD            = -0x64
--	AT_REMOVEDIR        = 0x200
--	AT_SYMLINK_FOLLOW   = 0x400
--	AT_SYMLINK_NOFOLLOW = 0x100
--)
-+type CryptoReportHash struct {
-+	Type       [64]int8
-+	Blocksize  uint32
-+	Digestsize uint32
-+}
- 
--type PollFd struct {
--	Fd      int32
--	Events  int16
--	Revents int16
-+type CryptoReportCipher struct {
-+	Type        [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
- }
- 
--const (
--	POLLIN    = 0x1
--	POLLPRI   = 0x2
--	POLLOUT   = 0x4
--	POLLRDHUP = 0x800
--	POLLERR   = 0x8
--	POLLHUP   = 0x10
--	POLLNVAL  = 0x20
--)
-+type CryptoReportBlkCipher struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Min_keysize uint32
-+	Max_keysize uint32
-+	Ivsize      uint32
-+}
- 
--type Sigset_t struct {
--	X__val [16]uint64
-+type CryptoReportAEAD struct {
-+	Type        [64]int8
-+	Geniv       [64]int8
-+	Blocksize   uint32
-+	Maxauthsize uint32
-+	Ivsize      uint32
- }
- 
--const _SC_PAGESIZE = 0x1e
-+type CryptoReportComp struct {
-+	Type [64]int8
-+}
- 
--type Termios struct {
--	Iflag  uint32
--	Oflag  uint32
--	Cflag  uint32
--	Lflag  uint32
--	Line   uint8
--	Cc     [19]uint8
--	Ispeed uint32
--	Ospeed uint32
-+type CryptoReportRNG struct {
-+	Type     [64]int8
-+	Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+	Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+	Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+	Number           int32
-+	Device           uint32
-+	Inode            uint64
-+	Rdevice          uint32
-+	Offset           int32
-+	Encrypt_type     int32
-+	Encrypt_key_size int32
-+	Flags            int32
-+	Name             [64]int8
-+	Encrypt_key      [32]uint8
-+	Init             [2]uint64
-+	Reserved         [4]int8
-+	_                [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+	Seq     TIPCServiceRange
-+	Timeout uint32
-+	Filter  uint32
-+	Handle  [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+	Peer     uint32
-+	Id       uint32
-+	Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+	Peer uint32
-+	Id   [16]int8
- }
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-index 42f99c0a..a89100c0 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,netbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -57,27 +57,54 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           uint64
--	Mode          uint32
--	Ino           uint64
--	Nlink         uint32
--	Uid           uint32
--	Gid           uint32
--	Rdev          uint64
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       uint32
--	Flags         uint32
--	Gen           uint32
--	Spare         [2]uint32
-+	Dev     uint64
-+	Mode    uint32
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize uint32
-+	Flags   uint32
-+	Gen     uint32
-+	Spare   [2]uint32
- }
- 
- type Statfs_t [0]byte
- 
-+type Statvfs_t struct {
-+	Flag        uint32
-+	Bsize       uint32
-+	Frsize      uint32
-+	Iosize      uint32
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      uint64
-+	Bresvd      uint64
-+	Files       uint64
-+	Ffree       uint64
-+	Favail      uint64
-+	Fresvd      uint64
-+	Syncreads   uint64
-+	Syncwrites  uint64
-+	Asyncreads  uint64
-+	Asyncwrites uint64
-+	Fsidx       Fsid
-+	Fsid        uint32
-+	Namemax     uint32
-+	Owner       uint32
-+	Spare       [4]uint32
-+	Fstypename  [32]byte
-+	Mntonname   [1024]byte
-+	Mntfromname [1024]byte
-+}
-+
- type Flock_t struct {
- 	Start  int64
- 	Len    int64
-@@ -99,6 +126,24 @@ type Fsid struct {
- 	X__fsid_val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
-+const (
-+	ST_WAIT   = 0x1
-+	ST_NOWAIT = 0x2
-+)
-+
-+const (
-+	FADV_NORMAL     = 0x0
-+	FADV_RANDOM     = 0x1
-+	FADV_SEQUENTIAL = 0x2
-+	FADV_WILLNEED   = 0x3
-+	FADV_DONTNEED   = 0x4
-+	FADV_NOREUSE    = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -382,11 +427,45 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+	Cfd int32
-+	Sfd int32
-+	Cn  [1024]byte
-+	Sn  [1024]byte
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x400
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- 	Flags           uint32
- 	Num             int32
-@@ -399,3 +478,21 @@ type Sysctlnode struct {
- 	X_sysctl_parent [8]byte
- 	X_sysctl_desc   [8]byte
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-index ff290ba0..289184e0 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,netbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -58,30 +58,58 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           uint64
--	Mode          uint32
--	Pad_cgo_0     [4]byte
--	Ino           uint64
--	Nlink         uint32
--	Uid           uint32
--	Gid           uint32
--	Pad_cgo_1     [4]byte
--	Rdev          uint64
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       uint32
--	Flags         uint32
--	Gen           uint32
--	Spare         [2]uint32
--	Pad_cgo_2     [4]byte
-+	Dev     uint64
-+	Mode    uint32
-+	_       [4]byte
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	_       [4]byte
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize uint32
-+	Flags   uint32
-+	Gen     uint32
-+	Spare   [2]uint32
-+	_       [4]byte
- }
- 
- type Statfs_t [0]byte
- 
-+type Statvfs_t struct {
-+	Flag        uint64
-+	Bsize       uint64
-+	Frsize      uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      uint64
-+	Bresvd      uint64
-+	Files       uint64
-+	Ffree       uint64
-+	Favail      uint64
-+	Fresvd      uint64
-+	Syncreads   uint64
-+	Syncwrites  uint64
-+	Asyncreads  uint64
-+	Asyncwrites uint64
-+	Fsidx       Fsid
-+	Fsid        uint64
-+	Namemax     uint64
-+	Owner       uint32
-+	Spare       [4]uint32
-+	Fstypename  [32]byte
-+	Mntonname   [1024]byte
-+	Mntfromname [1024]byte
-+	_           [4]byte
-+}
-+
- type Flock_t struct {
- 	Start  int64
- 	Len    int64
-@@ -103,6 +131,24 @@ type Fsid struct {
- 	X__fsid_val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
-+const (
-+	ST_WAIT   = 0x1
-+	ST_NOWAIT = 0x2
-+)
-+
-+const (
-+	FADV_NORMAL     = 0x0
-+	FADV_RANDOM     = 0x1
-+	FADV_SEQUENTIAL = 0x2
-+	FADV_WILLNEED   = 0x3
-+	FADV_DONTNEED   = 0x4
-+	FADV_NOREUSE    = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -389,11 +435,45 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+	Cfd int32
-+	Sfd int32
-+	Cn  [1024]byte
-+	Sn  [1024]byte
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x400
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- 	Flags           uint32
- 	Num             int32
-@@ -406,3 +486,21 @@ type Sysctlnode struct {
- 	X_sysctl_parent [8]byte
- 	X_sysctl_desc   [8]byte
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-index 66dbd7c0..428c450e 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,netbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -59,30 +59,57 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           uint64
--	Mode          uint32
--	Pad_cgo_0     [4]byte
--	Ino           uint64
--	Nlink         uint32
--	Uid           uint32
--	Gid           uint32
--	Pad_cgo_1     [4]byte
--	Rdev          uint64
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       uint32
--	Flags         uint32
--	Gen           uint32
--	Spare         [2]uint32
--	Pad_cgo_2     [4]byte
-+	Dev     uint64
-+	Mode    uint32
-+	_       [4]byte
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	_       [4]byte
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize uint32
-+	Flags   uint32
-+	Gen     uint32
-+	Spare   [2]uint32
-+	_       [4]byte
- }
- 
- type Statfs_t [0]byte
- 
-+type Statvfs_t struct {
-+	Flag        uint32
-+	Bsize       uint32
-+	Frsize      uint32
-+	Iosize      uint32
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      uint64
-+	Bresvd      uint64
-+	Files       uint64
-+	Ffree       uint64
-+	Favail      uint64
-+	Fresvd      uint64
-+	Syncreads   uint64
-+	Syncwrites  uint64
-+	Asyncreads  uint64
-+	Asyncwrites uint64
-+	Fsidx       Fsid
-+	Fsid        uint32
-+	Namemax     uint32
-+	Owner       uint32
-+	Spare       [4]uint32
-+	Fstypename  [32]byte
-+	Mntonname   [1024]byte
-+	Mntfromname [1024]byte
-+}
-+
- type Flock_t struct {
- 	Start  int64
- 	Len    int64
-@@ -104,6 +131,24 @@ type Fsid struct {
- 	X__fsid_val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
-+const (
-+	ST_WAIT   = 0x1
-+	ST_NOWAIT = 0x2
-+)
-+
-+const (
-+	FADV_NORMAL     = 0x0
-+	FADV_RANDOM     = 0x1
-+	FADV_SEQUENTIAL = 0x2
-+	FADV_WILLNEED   = 0x3
-+	FADV_DONTNEED   = 0x4
-+	FADV_NOREUSE    = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -387,11 +432,45 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+	Cfd int32
-+	Sfd int32
-+	Cn  [1024]byte
-+	Sn  [1024]byte
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x400
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- 	Flags           uint32
- 	Num             int32
-@@ -404,3 +483,21 @@ type Sysctlnode struct {
- 	X_sysctl_parent [8]byte
- 	X_sysctl_desc   [8]byte
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-similarity index 73%
-copy from vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-index ff290ba0..6f1f2842 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,netbsd
-+// +build arm64,netbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -58,30 +58,58 @@ type Rlimit struct {
- type _Gid_t uint32
- 
- type Stat_t struct {
--	Dev           uint64
--	Mode          uint32
--	Pad_cgo_0     [4]byte
--	Ino           uint64
--	Nlink         uint32
--	Uid           uint32
--	Gid           uint32
--	Pad_cgo_1     [4]byte
--	Rdev          uint64
--	Atimespec     Timespec
--	Mtimespec     Timespec
--	Ctimespec     Timespec
--	Birthtimespec Timespec
--	Size          int64
--	Blocks        int64
--	Blksize       uint32
--	Flags         uint32
--	Gen           uint32
--	Spare         [2]uint32
--	Pad_cgo_2     [4]byte
-+	Dev     uint64
-+	Mode    uint32
-+	_       [4]byte
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	_       [4]byte
-+	Rdev    uint64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Btim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize uint32
-+	Flags   uint32
-+	Gen     uint32
-+	Spare   [2]uint32
-+	_       [4]byte
- }
- 
- type Statfs_t [0]byte
- 
-+type Statvfs_t struct {
-+	Flag        uint64
-+	Bsize       uint64
-+	Frsize      uint64
-+	Iosize      uint64
-+	Blocks      uint64
-+	Bfree       uint64
-+	Bavail      uint64
-+	Bresvd      uint64
-+	Files       uint64
-+	Ffree       uint64
-+	Favail      uint64
-+	Fresvd      uint64
-+	Syncreads   uint64
-+	Syncwrites  uint64
-+	Asyncreads  uint64
-+	Asyncwrites uint64
-+	Fsidx       Fsid
-+	Fsid        uint64
-+	Namemax     uint64
-+	Owner       uint32
-+	Spare       [4]uint32
-+	Fstypename  [32]byte
-+	Mntonname   [1024]byte
-+	Mntfromname [1024]byte
-+	_           [4]byte
-+}
-+
- type Flock_t struct {
- 	Start  int64
- 	Len    int64
-@@ -103,6 +131,24 @@ type Fsid struct {
- 	X__fsid_val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
-+const (
-+	ST_WAIT   = 0x1
-+	ST_NOWAIT = 0x2
-+)
-+
-+const (
-+	FADV_NORMAL     = 0x0
-+	FADV_RANDOM     = 0x1
-+	FADV_SEQUENTIAL = 0x2
-+	FADV_WILLNEED   = 0x3
-+	FADV_DONTNEED   = 0x4
-+	FADV_NOREUSE    = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -389,11 +435,45 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+	Cfd int32
-+	Sfd int32
-+	Cn  [1024]byte
-+	Sn  [1024]byte
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x400
- 	AT_SYMLINK_NOFOLLOW = 0x200
- )
- 
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- 	Flags           uint32
- 	Num             int32
-@@ -406,3 +486,21 @@ type Sysctlnode struct {
- 	X_sysctl_parent [8]byte
- 	X_sysctl_desc   [8]byte
- }
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-index 20fc9f45..61ea0019 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build 386,openbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -56,23 +56,6 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
- 	Mode           uint32
- 	Dev            int32
-@@ -140,6 +123,10 @@ type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -440,7 +427,145 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x4
- 	AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+	Pagesize           int32
-+	Pagemask           int32
-+	Pageshift          int32
-+	Npages             int32
-+	Free               int32
-+	Active             int32
-+	Inactive           int32
-+	Paging             int32
-+	Wired              int32
-+	Zeropages          int32
-+	Reserve_pagedaemon int32
-+	Reserve_kernel     int32
-+	Anonpages          int32
-+	Vnodepages         int32
-+	Vtextpages         int32
-+	Freemin            int32
-+	Freetarg           int32
-+	Inactarg           int32
-+	Wiredmax           int32
-+	Anonmin            int32
-+	Vtextmin           int32
-+	Vnodemin           int32
-+	Anonminpct         int32
-+	Vtextminpct        int32
-+	Vnodeminpct        int32
-+	Nswapdev           int32
-+	Swpages            int32
-+	Swpginuse          int32
-+	Swpgonly           int32
-+	Nswget             int32
-+	Nanon              int32
-+	Nanonneeded        int32
-+	Nfreeanon          int32
-+	Faults             int32
-+	Traps              int32
-+	Intrs              int32
-+	Swtch              int32
-+	Softs              int32
-+	Syscalls           int32
-+	Pageins            int32
-+	Obsolete_swapins   int32
-+	Obsolete_swapouts  int32
-+	Pgswapin           int32
-+	Pgswapout          int32
-+	Forks              int32
-+	Forks_ppwait       int32
-+	Forks_sharevm      int32
-+	Pga_zerohit        int32
-+	Pga_zeromiss       int32
-+	Zeroaborts         int32
-+	Fltnoram           int32
-+	Fltnoanon          int32
-+	Fltnoamap          int32
-+	Fltpgwait          int32
-+	Fltpgrele          int32
-+	Fltrelck           int32
-+	Fltrelckok         int32
-+	Fltanget           int32
-+	Fltanretry         int32
-+	Fltamcopy          int32
-+	Fltnamap           int32
-+	Fltnomap           int32
-+	Fltlget            int32
-+	Fltget             int32
-+	Flt_anon           int32
-+	Flt_acow           int32
-+	Flt_obj            int32
-+	Flt_prcopy         int32
-+	Flt_przero         int32
-+	Pdwoke             int32
-+	Pdrevs             int32
-+	Pdswout            int32
-+	Pdfreed            int32
-+	Pdscans            int32
-+	Pdanscan           int32
-+	Pdobscan           int32
-+	Pdreact            int32
-+	Pdbusy             int32
-+	Pdpageouts         int32
-+	Pdpending          int32
-+	Pddeact            int32
-+	Pdreanon           int32
-+	Pdrevnode          int32
-+	Pdrevtext          int32
-+	Fpswtch            int32
-+	Kmapent            int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-index 46fe9490..87a493f6 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build amd64,openbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -56,48 +56,31 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
--	Mode           uint32
--	Dev            int32
--	Ino            uint64
--	Nlink          uint32
--	Uid            uint32
--	Gid            uint32
--	Rdev           int32
--	Atim           Timespec
--	Mtim           Timespec
--	Ctim           Timespec
--	Size           int64
--	Blocks         int64
--	Blksize        uint32
--	Flags          uint32
--	Gen            uint32
--	Pad_cgo_0      [4]byte
--	X__st_birthtim Timespec
-+	Mode    uint32
-+	Dev     int32
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	_       [4]byte
-+	_       Timespec
- }
- 
- type Statfs_t struct {
- 	F_flags       uint32
- 	F_bsize       uint32
- 	F_iosize      uint32
--	Pad_cgo_0     [4]byte
-+	_             [4]byte
- 	F_blocks      uint64
- 	F_bfree       uint64
- 	F_bavail      int64
-@@ -116,7 +99,7 @@ type Statfs_t struct {
- 	F_mntonname   [90]int8
- 	F_mntfromname [90]int8
- 	F_mntfromspec [90]int8
--	Pad_cgo_1     [2]byte
-+	_             [2]byte
- 	Mount_info    [160]byte
- }
- 
-@@ -129,19 +112,23 @@ type Flock_t struct {
- }
- 
- type Dirent struct {
--	Fileno       uint64
--	Off          int64
--	Reclen       uint16
--	Type         uint8
--	Namlen       uint8
--	X__d_padding [4]uint8
--	Name         [256]int8
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Namlen uint8
-+	_      [4]uint8
-+	Name   [256]int8
- }
- 
- type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -212,10 +199,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
-+	_          [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint32
--	Pad_cgo_1  [4]byte
-+	_          [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -277,8 +264,8 @@ type FdSet struct {
- }
- 
- const (
--	SizeofIfMsghdr         = 0xf8
--	SizeofIfData           = 0xe0
-+	SizeofIfMsghdr         = 0xa8
-+	SizeofIfData           = 0x90
- 	SizeofIfaMsghdr        = 0x18
- 	SizeofIfAnnounceMsghdr = 0x1a
- 	SizeofRtMsghdr         = 0x60
-@@ -307,7 +294,7 @@ type IfData struct {
- 	Link_state   uint8
- 	Mtu          uint32
- 	Metric       uint32
--	Pad          uint32
-+	Rdomain      uint32
- 	Baudrate     uint64
- 	Ipackets     uint64
- 	Ierrors      uint64
-@@ -319,12 +306,11 @@ type IfData struct {
- 	Imcasts      uint64
- 	Omcasts      uint64
- 	Iqdrops      uint64
-+	Oqdrops      uint64
- 	Noproto      uint64
- 	Capabilities uint32
--	Pad_cgo_0    [4]byte
-+	_            [4]byte
- 	Lastchange   Timeval
--	Mclpool      [7]Mclpool
--	Pad_cgo_1    [4]byte
- }
- 
- type IfaMsghdr struct {
-@@ -385,13 +371,7 @@ type RtMetrics struct {
- 	Pad      uint32
- }
- 
--type Mclpool struct {
--	Grown int32
--	Alive uint16
--	Hwm   uint16
--	Cwm   uint16
--	Lwm   uint16
--}
-+type Mclpool struct{}
- 
- const (
- 	SizeofBpfVersion = 0x4
-@@ -412,9 +392,9 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	_     [4]byte
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -425,11 +405,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    BpfTimeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  BpfTimeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type BpfTimeval struct {
-@@ -447,7 +427,145 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x4
- 	AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+	Pagesize           int32
-+	Pagemask           int32
-+	Pageshift          int32
-+	Npages             int32
-+	Free               int32
-+	Active             int32
-+	Inactive           int32
-+	Paging             int32
-+	Wired              int32
-+	Zeropages          int32
-+	Reserve_pagedaemon int32
-+	Reserve_kernel     int32
-+	Anonpages          int32
-+	Vnodepages         int32
-+	Vtextpages         int32
-+	Freemin            int32
-+	Freetarg           int32
-+	Inactarg           int32
-+	Wiredmax           int32
-+	Anonmin            int32
-+	Vtextmin           int32
-+	Vnodemin           int32
-+	Anonminpct         int32
-+	Vtextminpct        int32
-+	Vnodeminpct        int32
-+	Nswapdev           int32
-+	Swpages            int32
-+	Swpginuse          int32
-+	Swpgonly           int32
-+	Nswget             int32
-+	Nanon              int32
-+	Nanonneeded        int32
-+	Nfreeanon          int32
-+	Faults             int32
-+	Traps              int32
-+	Intrs              int32
-+	Swtch              int32
-+	Softs              int32
-+	Syscalls           int32
-+	Pageins            int32
-+	Obsolete_swapins   int32
-+	Obsolete_swapouts  int32
-+	Pgswapin           int32
-+	Pgswapout          int32
-+	Forks              int32
-+	Forks_ppwait       int32
-+	Forks_sharevm      int32
-+	Pga_zerohit        int32
-+	Pga_zeromiss       int32
-+	Zeroaborts         int32
-+	Fltnoram           int32
-+	Fltnoanon          int32
-+	Fltnoamap          int32
-+	Fltpgwait          int32
-+	Fltpgrele          int32
-+	Fltrelck           int32
-+	Fltrelckok         int32
-+	Fltanget           int32
-+	Fltanretry         int32
-+	Fltamcopy          int32
-+	Fltnamap           int32
-+	Fltnomap           int32
-+	Fltlget            int32
-+	Fltget             int32
-+	Flt_anon           int32
-+	Flt_acow           int32
-+	Flt_obj            int32
-+	Flt_prcopy         int32
-+	Flt_przero         int32
-+	Pdwoke             int32
-+	Pdrevs             int32
-+	Pdswout            int32
-+	Pdfreed            int32
-+	Pdscans            int32
-+	Pdanscan           int32
-+	Pdobscan           int32
-+	Pdreact            int32
-+	Pdbusy             int32
-+	Pdpageouts         int32
-+	Pdpending          int32
-+	Pddeact            int32
-+	Pdreanon           int32
-+	Pdrevnode          int32
-+	Pdrevtext          int32
-+	Fpswtch            int32
-+	Kmapent            int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-index 62e1f7c0..d80836ef 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
- // +build arm,openbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x4
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x4
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x4
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x4
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -23,11 +23,13 @@ type (
- type Timespec struct {
- 	Sec  int64
- 	Nsec int32
-+	_    [4]byte
- }
- 
- type Timeval struct {
- 	Sec  int64
- 	Usec int32
-+	_    [4]byte
- }
- 
- type Rusage struct {
-@@ -56,46 +58,31 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
--	Mode           uint32
--	Dev            int32
--	Ino            uint64
--	Nlink          uint32
--	Uid            uint32
--	Gid            uint32
--	Rdev           int32
--	Atim           Timespec
--	Mtim           Timespec
--	Ctim           Timespec
--	Size           int64
--	Blocks         int64
--	Blksize        int32
--	Flags          uint32
--	Gen            uint32
--	X__st_birthtim Timespec
-+	Mode    uint32
-+	Dev     int32
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	_       [4]byte
-+	_       Timespec
- }
- 
- type Statfs_t struct {
- 	F_flags       uint32
- 	F_bsize       uint32
- 	F_iosize      uint32
-+	_             [4]byte
- 	F_blocks      uint64
- 	F_bfree       uint64
- 	F_bavail      int64
-@@ -110,11 +97,11 @@ type Statfs_t struct {
- 	F_namemax     uint32
- 	F_owner       uint32
- 	F_ctime       uint64
--	F_fstypename  [16]uint8
--	F_mntonname   [90]uint8
--	F_mntfromname [90]uint8
--	F_mntfromspec [90]uint8
--	Pad_cgo_0     [2]byte
-+	F_fstypename  [16]int8
-+	F_mntonname   [90]int8
-+	F_mntfromname [90]int8
-+	F_mntfromspec [90]int8
-+	_             [2]byte
- 	Mount_info    [160]byte
- }
- 
-@@ -127,19 +114,23 @@ type Flock_t struct {
- }
- 
- type Dirent struct {
--	Fileno       uint64
--	Off          int64
--	Reclen       uint16
--	Type         uint8
--	Namlen       uint8
--	X__d_padding [4]uint8
--	Name         [256]uint8
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Namlen uint8
-+	_      [4]uint8
-+	Name   [256]int8
- }
- 
- type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -264,8 +255,10 @@ type Kevent_t struct {
- 	Filter int16
- 	Flags  uint16
- 	Fflags uint32
-+	_      [4]byte
- 	Data   int64
- 	Udata  *byte
-+	_      [4]byte
- }
- 
- type FdSet struct {
-@@ -273,8 +266,8 @@ type FdSet struct {
- }
- 
- const (
--	SizeofIfMsghdr         = 0x98
--	SizeofIfData           = 0x80
-+	SizeofIfMsghdr         = 0xa8
-+	SizeofIfData           = 0x90
- 	SizeofIfaMsghdr        = 0x18
- 	SizeofIfAnnounceMsghdr = 0x1a
- 	SizeofRtMsghdr         = 0x60
-@@ -303,7 +296,7 @@ type IfData struct {
- 	Link_state   uint8
- 	Mtu          uint32
- 	Metric       uint32
--	Pad          uint32
-+	Rdomain      uint32
- 	Baudrate     uint64
- 	Ipackets     uint64
- 	Ierrors      uint64
-@@ -315,8 +308,10 @@ type IfData struct {
- 	Imcasts      uint64
- 	Omcasts      uint64
- 	Iqdrops      uint64
-+	Oqdrops      uint64
- 	Noproto      uint64
- 	Capabilities uint32
-+	_            [4]byte
- 	Lastchange   Timeval
- }
- 
-@@ -341,7 +336,7 @@ type IfAnnounceMsghdr struct {
- 	Hdrlen  uint16
- 	Index   uint16
- 	What    uint16
--	Name    [16]uint8
-+	Name    [16]int8
- }
- 
- type RtMsghdr struct {
-@@ -411,11 +406,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    BpfTimeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  BpfTimeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type BpfTimeval struct {
-@@ -433,7 +428,145 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x4
- 	AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+	Pagesize           int32
-+	Pagemask           int32
-+	Pageshift          int32
-+	Npages             int32
-+	Free               int32
-+	Active             int32
-+	Inactive           int32
-+	Paging             int32
-+	Wired              int32
-+	Zeropages          int32
-+	Reserve_pagedaemon int32
-+	Reserve_kernel     int32
-+	Unused01           int32
-+	Vnodepages         int32
-+	Vtextpages         int32
-+	Freemin            int32
-+	Freetarg           int32
-+	Inactarg           int32
-+	Wiredmax           int32
-+	Anonmin            int32
-+	Vtextmin           int32
-+	Vnodemin           int32
-+	Anonminpct         int32
-+	Vtextminpct        int32
-+	Vnodeminpct        int32
-+	Nswapdev           int32
-+	Swpages            int32
-+	Swpginuse          int32
-+	Swpgonly           int32
-+	Nswget             int32
-+	Nanon              int32
-+	Unused05           int32
-+	Unused06           int32
-+	Faults             int32
-+	Traps              int32
-+	Intrs              int32
-+	Swtch              int32
-+	Softs              int32
-+	Syscalls           int32
-+	Pageins            int32
-+	Unused07           int32
-+	Unused08           int32
-+	Pgswapin           int32
-+	Pgswapout          int32
-+	Forks              int32
-+	Forks_ppwait       int32
-+	Forks_sharevm      int32
-+	Pga_zerohit        int32
-+	Pga_zeromiss       int32
-+	Unused09           int32
-+	Fltnoram           int32
-+	Fltnoanon          int32
-+	Fltnoamap          int32
-+	Fltpgwait          int32
-+	Fltpgrele          int32
-+	Fltrelck           int32
-+	Fltrelckok         int32
-+	Fltanget           int32
-+	Fltanretry         int32
-+	Fltamcopy          int32
-+	Fltnamap           int32
-+	Fltnomap           int32
-+	Fltlget            int32
-+	Fltget             int32
-+	Flt_anon           int32
-+	Flt_acow           int32
-+	Flt_obj            int32
-+	Flt_prcopy         int32
-+	Flt_przero         int32
-+	Pdwoke             int32
-+	Pdrevs             int32
-+	Pdswout            int32
-+	Pdfreed            int32
-+	Pdscans            int32
-+	Pdanscan           int32
-+	Pdobscan           int32
-+	Pdreact            int32
-+	Pdbusy             int32
-+	Pdpageouts         int32
-+	Pdpending          int32
-+	Pddeact            int32
-+	Unused11           int32
-+	Unused12           int32
-+	Unused13           int32
-+	Fpswtch            int32
-+	Kmapent            int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-similarity index 58%
-copy from vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-index 46fe9490..4e158746 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
- 
--// +build amd64,openbsd
-+// +build arm64,openbsd
- 
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- )
- 
- type (
-@@ -56,48 +56,29 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
--	Mode           uint32
--	Dev            int32
--	Ino            uint64
--	Nlink          uint32
--	Uid            uint32
--	Gid            uint32
--	Rdev           int32
--	Atim           Timespec
--	Mtim           Timespec
--	Ctim           Timespec
--	Size           int64
--	Blocks         int64
--	Blksize        uint32
--	Flags          uint32
--	Gen            uint32
--	Pad_cgo_0      [4]byte
--	X__st_birthtim Timespec
-+	Mode    uint32
-+	Dev     int32
-+	Ino     uint64
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    int32
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Size    int64
-+	Blocks  int64
-+	Blksize int32
-+	Flags   uint32
-+	Gen     uint32
-+	_       Timespec
- }
- 
- type Statfs_t struct {
- 	F_flags       uint32
- 	F_bsize       uint32
- 	F_iosize      uint32
--	Pad_cgo_0     [4]byte
- 	F_blocks      uint64
- 	F_bfree       uint64
- 	F_bavail      int64
-@@ -116,7 +97,7 @@ type Statfs_t struct {
- 	F_mntonname   [90]int8
- 	F_mntfromname [90]int8
- 	F_mntfromspec [90]int8
--	Pad_cgo_1     [2]byte
-+	_             [2]byte
- 	Mount_info    [160]byte
- }
- 
-@@ -129,19 +110,23 @@ type Flock_t struct {
- }
- 
- type Dirent struct {
--	Fileno       uint64
--	Off          int64
--	Reclen       uint16
--	Type         uint8
--	Namlen       uint8
--	X__d_padding [4]uint8
--	Name         [256]int8
-+	Fileno uint64
-+	Off    int64
-+	Reclen uint16
-+	Type   uint8
-+	Namlen uint8
-+	_      [4]uint8
-+	Name   [256]int8
- }
- 
- type Fsid struct {
- 	Val [2]int32
- }
- 
-+const (
-+	PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- 	Len    uint8
- 	Family uint8
-@@ -212,10 +197,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name       *byte
- 	Namelen    uint32
--	Pad_cgo_0  [4]byte
- 	Iov        *Iovec
- 	Iovlen     uint32
--	Pad_cgo_1  [4]byte
- 	Control    *byte
- 	Controllen uint32
- 	Flags      int32
-@@ -277,8 +260,8 @@ type FdSet struct {
- }
- 
- const (
--	SizeofIfMsghdr         = 0xf8
--	SizeofIfData           = 0xe0
-+	SizeofIfMsghdr         = 0xa8
-+	SizeofIfData           = 0x90
- 	SizeofIfaMsghdr        = 0x18
- 	SizeofIfAnnounceMsghdr = 0x1a
- 	SizeofRtMsghdr         = 0x60
-@@ -307,7 +290,7 @@ type IfData struct {
- 	Link_state   uint8
- 	Mtu          uint32
- 	Metric       uint32
--	Pad          uint32
-+	Rdomain      uint32
- 	Baudrate     uint64
- 	Ipackets     uint64
- 	Ierrors      uint64
-@@ -319,12 +302,10 @@ type IfData struct {
- 	Imcasts      uint64
- 	Omcasts      uint64
- 	Iqdrops      uint64
-+	Oqdrops      uint64
- 	Noproto      uint64
- 	Capabilities uint32
--	Pad_cgo_0    [4]byte
- 	Lastchange   Timeval
--	Mclpool      [7]Mclpool
--	Pad_cgo_1    [4]byte
- }
- 
- type IfaMsghdr struct {
-@@ -385,13 +366,7 @@ type RtMetrics struct {
- 	Pad      uint32
- }
- 
--type Mclpool struct {
--	Grown int32
--	Alive uint16
--	Hwm   uint16
--	Cwm   uint16
--	Lwm   uint16
--}
-+type Mclpool struct{}
- 
- const (
- 	SizeofBpfVersion = 0x4
-@@ -412,9 +387,8 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -425,11 +399,11 @@ type BpfInsn struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    BpfTimeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  BpfTimeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
- type BpfTimeval struct {
-@@ -447,7 +421,145 @@ type Termios struct {
- 	Ospeed int32
- }
- 
-+type Winsize struct {
-+	Row    uint16
-+	Col    uint16
-+	Xpixel uint16
-+	Ypixel uint16
-+}
-+
- const (
- 	AT_FDCWD            = -0x64
-+	AT_SYMLINK_FOLLOW   = 0x4
- 	AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+	Sysname  [256]byte
-+	Nodename [256]byte
-+	Release  [256]byte
-+	Version  [256]byte
-+	Machine  [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+	Pagesize           int32
-+	Pagemask           int32
-+	Pageshift          int32
-+	Npages             int32
-+	Free               int32
-+	Active             int32
-+	Inactive           int32
-+	Paging             int32
-+	Wired              int32
-+	Zeropages          int32
-+	Reserve_pagedaemon int32
-+	Reserve_kernel     int32
-+	Unused01           int32
-+	Vnodepages         int32
-+	Vtextpages         int32
-+	Freemin            int32
-+	Freetarg           int32
-+	Inactarg           int32
-+	Wiredmax           int32
-+	Anonmin            int32
-+	Vtextmin           int32
-+	Vnodemin           int32
-+	Anonminpct         int32
-+	Vtextminpct        int32
-+	Vnodeminpct        int32
-+	Nswapdev           int32
-+	Swpages            int32
-+	Swpginuse          int32
-+	Swpgonly           int32
-+	Nswget             int32
-+	Nanon              int32
-+	Unused05           int32
-+	Unused06           int32
-+	Faults             int32
-+	Traps              int32
-+	Intrs              int32
-+	Swtch              int32
-+	Softs              int32
-+	Syscalls           int32
-+	Pageins            int32
-+	Unused07           int32
-+	Unused08           int32
-+	Pgswapin           int32
-+	Pgswapout          int32
-+	Forks              int32
-+	Forks_ppwait       int32
-+	Forks_sharevm      int32
-+	Pga_zerohit        int32
-+	Pga_zeromiss       int32
-+	Unused09           int32
-+	Fltnoram           int32
-+	Fltnoanon          int32
-+	Fltnoamap          int32
-+	Fltpgwait          int32
-+	Fltpgrele          int32
-+	Fltrelck           int32
-+	Fltrelckok         int32
-+	Fltanget           int32
-+	Fltanretry         int32
-+	Fltamcopy          int32
-+	Fltnamap           int32
-+	Fltnomap           int32
-+	Fltlget            int32
-+	Fltget             int32
-+	Flt_anon           int32
-+	Flt_acow           int32
-+	Flt_obj            int32
-+	Flt_prcopy         int32
-+	Flt_przero         int32
-+	Pdwoke             int32
-+	Pdrevs             int32
-+	Pdswout            int32
-+	Pdfreed            int32
-+	Pdscans            int32
-+	Pdanscan           int32
-+	Pdobscan           int32
-+	Pdreact            int32
-+	Pdbusy             int32
-+	Pdpageouts         int32
-+	Pdpending          int32
-+	Pddeact            int32
-+	Unused11           int32
-+	Unused12           int32
-+	Unused13           int32
-+	Fpswtch            int32
-+	Kmapent            int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+	Hz      int32
-+	Tick    int32
-+	Tickadj int32
-+	Stathz  int32
-+	Profhz  int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-index 92336f9f..23ed9fe5 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-@@ -6,11 +6,11 @@
- package unix
- 
- const (
--	sizeofPtr      = 0x8
--	sizeofShort    = 0x2
--	sizeofInt      = 0x4
--	sizeofLong     = 0x8
--	sizeofLongLong = 0x8
-+	SizeofPtr      = 0x8
-+	SizeofShort    = 0x2
-+	SizeofInt      = 0x4
-+	SizeofLong     = 0x8
-+	SizeofLongLong = 0x8
- 	PathMax        = 0x400
- 	MaxHostNameLen = 0x100
- )
-@@ -75,58 +75,41 @@ type Rlimit struct {
- 
- type _Gid_t uint32
- 
--const (
--	S_IFMT   = 0xf000
--	S_IFIFO  = 0x1000
--	S_IFCHR  = 0x2000
--	S_IFDIR  = 0x4000
--	S_IFBLK  = 0x6000
--	S_IFREG  = 0x8000
--	S_IFLNK  = 0xa000
--	S_IFSOCK = 0xc000
--	S_ISUID  = 0x800
--	S_ISGID  = 0x400
--	S_ISVTX  = 0x200
--	S_IRUSR  = 0x100
--	S_IWUSR  = 0x80
--	S_IXUSR  = 0x40
--)
--
- type Stat_t struct {
--	Dev       uint64
--	Ino       uint64
--	Mode      uint32
--	Nlink     uint32
--	Uid       uint32
--	Gid       uint32
--	Rdev      uint64
--	Size      int64
--	Atim      Timespec
--	Mtim      Timespec
--	Ctim      Timespec
--	Blksize   int32
--	Pad_cgo_0 [4]byte
--	Blocks    int64
--	Fstype    [16]int8
-+	Dev     uint64
-+	Ino     uint64
-+	Mode    uint32
-+	Nlink   uint32
-+	Uid     uint32
-+	Gid     uint32
-+	Rdev    uint64
-+	Size    int64
-+	Atim    Timespec
-+	Mtim    Timespec
-+	Ctim    Timespec
-+	Blksize int32
-+	_       [4]byte
-+	Blocks  int64
-+	Fstype  [16]int8
- }
- 
- type Flock_t struct {
--	Type      int16
--	Whence    int16
--	Pad_cgo_0 [4]byte
--	Start     int64
--	Len       int64
--	Sysid     int32
--	Pid       int32
--	Pad       [4]int64
-+	Type   int16
-+	Whence int16
-+	_      [4]byte
-+	Start  int64
-+	Len    int64
-+	Sysid  int32
-+	Pid    int32
-+	Pad    [4]int64
- }
- 
- type Dirent struct {
--	Ino       uint64
--	Off       int64
--	Reclen    uint16
--	Name      [1]int8
--	Pad_cgo_0 [5]byte
-+	Ino    uint64
-+	Off    int64
-+	Reclen uint16
-+	Name   [1]int8
-+	_      [5]byte
- }
- 
- type _Fsblkcnt_t uint64
-@@ -213,13 +196,13 @@ type IPv6Mreq struct {
- type Msghdr struct {
- 	Name         *byte
- 	Namelen      uint32
--	Pad_cgo_0    [4]byte
-+	_            [4]byte
- 	Iov          *Iovec
- 	Iovlen       int32
--	Pad_cgo_1    [4]byte
-+	_            [4]byte
- 	Accrights    *int8
- 	Accrightslen int32
--	Pad_cgo_2    [4]byte
-+	_            [4]byte
- }
- 
- type Cmsghdr struct {
-@@ -228,6 +211,12 @@ type Cmsghdr struct {
- 	Type  int32
- }
- 
-+type Inet4Pktinfo struct {
-+	Ifindex  uint32
-+	Spec_dst [4]byte /* in_addr */
-+	Addr     [4]byte /* in_addr */
-+}
-+
- type Inet6Pktinfo struct {
- 	Addr    [16]byte /* in6_addr */
- 	Ifindex uint32
-@@ -253,6 +242,7 @@ const (
- 	SizeofIPv6Mreq         = 0x14
- 	SizeofMsghdr           = 0x30
- 	SizeofCmsghdr          = 0xc
-+	SizeofInet4Pktinfo     = 0xc
- 	SizeofInet6Pktinfo     = 0x14
- 	SizeofIPv6MTUInfo      = 0x24
- 	SizeofICMPv6Filter     = 0x20
-@@ -263,19 +253,19 @@ type FdSet struct {
- }
- 
- type Utsname struct {
--	Sysname  [257]int8
--	Nodename [257]int8
--	Release  [257]int8
--	Version  [257]int8
--	Machine  [257]int8
-+	Sysname  [257]byte
-+	Nodename [257]byte
-+	Release  [257]byte
-+	Version  [257]byte
-+	Machine  [257]byte
- }
- 
- type Ustat_t struct {
--	Tfree     int64
--	Tinode    uint64
--	Fname     [6]int8
--	Fpack     [6]int8
--	Pad_cgo_0 [4]byte
-+	Tfree  int64
-+	Tinode uint64
-+	Fname  [6]int8
-+	Fpack  [6]int8
-+	_      [4]byte
- }
- 
- const (
-@@ -295,21 +285,21 @@ const (
- )
- 
- type IfMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Data      IfData
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Data    IfData
- }
- 
- type IfData struct {
- 	Type       uint8
- 	Addrlen    uint8
- 	Hdrlen     uint8
--	Pad_cgo_0  [1]byte
-+	_          [1]byte
- 	Mtu        uint32
- 	Metric     uint32
- 	Baudrate   uint32
-@@ -328,30 +318,30 @@ type IfData struct {
- }
- 
- type IfaMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Addrs     int32
--	Flags     int32
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Metric    int32
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Addrs   int32
-+	Flags   int32
-+	Index   uint16
-+	_       [2]byte
-+	Metric  int32
- }
- 
- type RtMsghdr struct {
--	Msglen    uint16
--	Version   uint8
--	Type      uint8
--	Index     uint16
--	Pad_cgo_0 [2]byte
--	Flags     int32
--	Addrs     int32
--	Pid       int32
--	Seq       int32
--	Errno     int32
--	Use       int32
--	Inits     uint32
--	Rmx       RtMetrics
-+	Msglen  uint16
-+	Version uint8
-+	Type    uint8
-+	Index   uint16
-+	_       [2]byte
-+	Flags   int32
-+	Addrs   int32
-+	Pid     int32
-+	Seq     int32
-+	Errno   int32
-+	Use     int32
-+	Inits   uint32
-+	Rmx     RtMetrics
- }
- 
- type RtMetrics struct {
-@@ -388,9 +378,9 @@ type BpfStat struct {
- }
- 
- type BpfProgram struct {
--	Len       uint32
--	Pad_cgo_0 [4]byte
--	Insns     *BpfInsn
-+	Len   uint32
-+	_     [4]byte
-+	Insns *BpfInsn
- }
- 
- type BpfInsn struct {
-@@ -406,32 +396,30 @@ type BpfTimeval struct {
- }
- 
- type BpfHdr struct {
--	Tstamp    BpfTimeval
--	Caplen    uint32
--	Datalen   uint32
--	Hdrlen    uint16
--	Pad_cgo_0 [2]byte
-+	Tstamp  BpfTimeval
-+	Caplen  uint32
-+	Datalen uint32
-+	Hdrlen  uint16
-+	_       [2]byte
- }
- 
--const _SC_PAGESIZE = 0xb
--
- type Termios struct {
--	Iflag     uint32
--	Oflag     uint32
--	Cflag     uint32
--	Lflag     uint32
--	Cc        [19]uint8
--	Pad_cgo_0 [1]byte
-+	Iflag uint32
-+	Oflag uint32
-+	Cflag uint32
-+	Lflag uint32
-+	Cc    [19]uint8
-+	_     [1]byte
- }
- 
- type Termio struct {
--	Iflag     uint16
--	Oflag     uint16
--	Cflag     uint16
--	Lflag     uint16
--	Line      int8
--	Cc        [8]uint8
--	Pad_cgo_0 [1]byte
-+	Iflag uint16
-+	Oflag uint16
-+	Cflag uint16
-+	Lflag uint16
-+	Line  int8
-+	Cc    [8]uint8
-+	_     [1]byte
- }
- 
- type Winsize struct {
-@@ -440,3 +428,22 @@ type Winsize struct {
- 	Xpixel uint16
- 	Ypixel uint16
- }
-+
-+type PollFd struct {
-+	Fd      int32
-+	Events  int16
-+	Revents int16
-+}
-+
-+const (
-+	POLLERR    = 0x8
-+	POLLHUP    = 0x10
-+	POLLIN     = 0x1
-+	POLLNVAL   = 0x20
-+	POLLOUT    = 0x4
-+	POLLPRI    = 0x2
-+	POLLRDBAND = 0x80
-+	POLLRDNORM = 0x40
-+	POLLWRBAND = 0x100
-+	POLLWRNORM = 0x4
-+)
--- 
-2.26.2
-
diff --git a/poky/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch b/poky/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch
deleted file mode 100644
index 4d97d48..0000000
--- a/poky/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5e051669d117d7cd9b24cea3494959eec396ec1e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 25 Jan 2020 22:37:25 -0800
-Subject: [PATCH] /bolt_riscv64: Add support for riscv64
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- vendor/github.com/boltdb/bolt/bolt_riscv64.go | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_riscv64.go
-
-diff --git a/vendor/github.com/boltdb/bolt/bolt_riscv64.go b/vendor/github.com/boltdb/bolt/bolt_riscv64.go
-new file mode 100644
-index 00000000..3d6b88d4
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_riscv64.go
-@@ -0,0 +1,12 @@
-+// +build riscv64
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0xFFFFFFFFFFFF // 256TB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0x7FFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
--- 
-2.25.0
-
diff --git a/poky/meta/recipes-devtools/go/go-dep_0.5.4.bb b/poky/meta/recipes-devtools/go/go-dep_0.5.4.bb
deleted file mode 100644
index 0da2c66..0000000
--- a/poky/meta/recipes-devtools/go/go-dep_0.5.4.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Dependency management tool for Golang"
-HOMEPAGE = "https://github.com/golang/dep"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=1bad315647751fab0007812f70d42c0d"
-
-GO_IMPORT = "github.com/golang/dep"
-SRC_URI = "git://${GO_IMPORT} \
-           file://0001-Add-support-for-mips-mips64.patch;patchdir=src/github.com/golang/dep \
-           file://0001-bolt_riscv64-Add-support-for-riscv64.patch;patchdir=src/github.com/golang/dep \
-          "
-SRC_URI_append_riscv64 = " file://0001-Update-sys-module-to-latest.patch;patchdir=src/github.com/golang/dep "
-
-SRCREV = "1f7c19e5f52f49ffb9f956f64c010be14683468b"
-
-inherit go
-
-# New Go versions has Go modules support enabled by default and cause the Glide
-# tool build to fail.
-export GO111MODULE = "off"
-
-GO_INSTALL = "${GO_IMPORT}/cmd/dep"
-
-RDEPENDS_${PN}-dev += "bash"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# For compiling ptest on mips and mips64, the current go-dep version fails with the go 1.11 toolchain.
-# error message: vet config not found
-PTEST_ENABLED_mips = "0"
-PTEST_ENABLED_mips64 = "0"
diff --git a/poky/meta/recipes-devtools/go/go-native_1.16.bb b/poky/meta/recipes-devtools/go/go-native_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-native_1.16.bb
rename to poky/meta/recipes-devtools/go/go-native_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-runtime_1.16.bb b/poky/meta/recipes-devtools/go/go-runtime_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-runtime_1.16.bb
rename to poky/meta/recipes-devtools/go/go-runtime_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/go/go_1.16.bb b/poky/meta/recipes-devtools/go/go_1.16.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go_1.16.bb
rename to poky/meta/recipes-devtools/go/go_1.16.2.bb
diff --git a/poky/meta/recipes-devtools/help2man/help2man_1.48.1.bb b/poky/meta/recipes-devtools/help2man/help2man_1.48.2.bb
similarity index 88%
rename from poky/meta/recipes-devtools/help2man/help2man_1.48.1.bb
rename to poky/meta/recipes-devtools/help2man/help2man_1.48.2.bb
index bdea59d..3e9b509 100644
--- a/poky/meta/recipes-devtools/help2man/help2man_1.48.1.bb
+++ b/poky/meta/recipes-devtools/help2man/help2man_1.48.2.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "de8a74740bd058646567b92ab4ecdeb9da9f1a07cc7c4f607a3c14dd38d10799"
+SRC_URI[sha256sum] = "20cb36111df91d61741a20680912ab0e4c59da479c3fb05837c6f0a8cb7cb467"
 
 inherit autotools
 
diff --git a/poky/meta/recipes-devtools/jquery/jquery_3.5.1.bb b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb
similarity index 75%
rename from poky/meta/recipes-devtools/jquery/jquery_3.5.1.bb
rename to poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb
index cfc3295..6590596 100644
--- a/poky/meta/recipes-devtools/jquery/jquery_3.5.1.bb
+++ b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb
@@ -3,7 +3,7 @@
 DESCRIPTION = "${SUMMARY}"
 LICENSE = "MIT"
 SECTION = "devel"
-LIC_FILES_CHKSUM = "file://${S}/${BP}.js;beginline=8;endline=10;md5=ebd7bc5d23ab165188e526a0c65d24bb"
+LIC_FILES_CHKSUM = "file://${S}/${BP}.js;beginline=8;endline=10;md5=9c7c6e9ab275fc1e0d99cb7180ecd14c"
 
 # unpack items to ${S} so the archiver can see them
 #
@@ -13,9 +13,9 @@
     https://code.jquery.com/${BP}.min.map;name=map;subdir=${BP} \
     "
 
-SRC_URI[js.sha256sum] = "416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37"
-SRC_URI[min.sha256sum] = "f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d"
-SRC_URI[map.sha256sum] = "511d6f6d3e7acec78cd2505f04282b6e01329b4c24931f39d91739d0d1ddeef8"
+SRC_URI[js.sha256sum] = "1fe2bb5390a75e5d61e72c107cab528fc3c29a837d69aab7d200e1dbb5dcd239"
+SRC_URI[min.sha256sum] = "ff1523fb7389539c84c65aba19260648793bb4f5e29329d2ee8804bc37a3fe6e"
+SRC_URI[map.sha256sum] = "399548fb0e7b146c12f5ba18099a47d594a970fee96212eee0ab4852f3e56782"
 
 UPSTREAM_CHECK_REGEX = "jquery-(?P<pver>\d+(\.\d+)+)\.js"
 
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch
new file mode 100644
index 0000000..f8d256e
--- /dev/null
+++ b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch
@@ -0,0 +1,31 @@
+From 8aa5402393fabaf4fff51be3af4868e8dfab6da7 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 9 Mar 2021 19:30:42 +0000
+Subject: [PATCH] libdnf/config.h: avoid the use of non-portable __WORDSIZE
+
+Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1159]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libdnf/config.h | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/libdnf/config.h b/libdnf/config.h
+index 16121f6f..2925923e 100644
+--- a/libdnf/config.h
++++ b/libdnf/config.h
+@@ -18,12 +18,10 @@
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ 
+-#include <bits/wordsize.h>
++#include <limits.h>
+ 
+-#if __WORDSIZE == 32
+-#include "config-32.h"
+-#elif __WORDSIZE == 64
++#if (ULONG_MAX == 0xffffffffffffffff)
+ #include "config-64.h"
+ #else
+-#error "Unknown word size"
++#include "config-32.h"
+ #endif
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf_0.55.2.bb b/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb
similarity index 92%
rename from poky/meta/recipes-devtools/libdnf/libdnf_0.55.2.bb
rename to poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb
index b34bb5d..dbe68d5 100644
--- a/poky/meta/recipes-devtools/libdnf/libdnf_0.55.2.bb
+++ b/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb
@@ -11,9 +11,10 @@
            file://0001-Add-WITH_TESTS-option.patch \
            file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \
            file://enable_test_data_dir_set.patch \
+           file://0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch \
            "
 
-SRCREV = "d2d0ec98fd2e0a2623123fb1ddf8fdd8936c6046"
+SRCREV = "85278894f21bc1957dc47a2a09ddacf59bc3cda8"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210216-3.1.bb
similarity index 82%
rename from poky/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb
rename to poky/meta/recipes-devtools/libedit/libedit_20210216-3.1.bb
index 8d2d57a..97aceaf 100644
--- a/poky/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb
+++ b/poky/meta/recipes-devtools/libedit/libedit_20210216-3.1.bb
@@ -13,8 +13,7 @@
 SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
            file://stdc-predef.patch \
           "
-SRC_URI[md5sum] = "2e22a51131de94ff2df24901f7cfe416"
-SRC_URI[sha256sum] = "dbb82cb7e116a5f8025d35ef5b4f7d4a3cdd0a3909a146a39112095a2d229071"
+SRC_URI[sha256sum] = "2283f741d2aab935c8c52c04b57bf952d02c2c02e651172f8ac811f77b1fc77a"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch b/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
index b61f0c9..46ab9a1 100644
--- a/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
+++ b/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
@@ -1,4 +1,4 @@
-From b08a3b71e716dd0485ef51036d32e4c304fb4e67 Mon Sep 17 00:00:00 2001
+From 82bd6d196a0453657cbacaaedd75b2d2fe0bf9ba Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 30 Dec 2016 18:05:36 +0200
 Subject: [PATCH] Do not try to obtain PYTHON_INSTALL_DIR by running python.
@@ -7,35 +7,17 @@
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 
 ---
- librepo/python/python2/CMakeLists.txt | 12 ++++++------
- librepo/python/python3/CMakeLists.txt | 12 ++++++------
- 2 files changed, 12 insertions(+), 12 deletions(-)
+ librepo/python/CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
 
-diff --git a/librepo/python/python2/CMakeLists.txt b/librepo/python/python2/CMakeLists.txt
-index a0f1f9a..1665079 100644
---- a/librepo/python/python2/CMakeLists.txt
-+++ b/librepo/python/python2/CMakeLists.txt
-@@ -1,9 +1,9 @@
--EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
--from sys import stdout
--from distutils import sysconfig
--path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
--stdout.write(path)"
--OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
-+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
-+#from sys import stdout
-+#from distutils import sysconfig
-+#path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
-+#stdout.write(path)"
-+#OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
- INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
+diff --git a/librepo/python/CMakeLists.txt b/librepo/python/CMakeLists.txt
+index 52fc39e..2024407 100644
+--- a/librepo/python/CMakeLists.txt
++++ b/librepo/python/CMakeLists.txt
+@@ -16,12 +16,12 @@ SET (librepomodule_SRCS
  
- MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
-diff --git a/librepo/python/python3/CMakeLists.txt b/librepo/python/python3/CMakeLists.txt
-index 52ba44e..da51e10 100644
---- a/librepo/python/python3/CMakeLists.txt
-+++ b/librepo/python/python3/CMakeLists.txt
-@@ -1,9 +1,9 @@
+ MESSAGE("Building python bindings")
+ 
 -EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
 -from sys import stdout
 -from distutils import sysconfig
diff --git a/poky/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch b/poky/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
index 73902e5..d61d8fb 100644
--- a/poky/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
+++ b/poky/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
@@ -1,4 +1,4 @@
-From f5a1dfe4c87c228165bc25e7fe464120d8139a3d Mon Sep 17 00:00:00 2001
+From 25113b34bc1aae377d7bf447e69528783e2c177e Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 30 Dec 2016 18:23:27 +0200
 Subject: [PATCH] Set gpgme variables with pkg-config, not with cmake module
@@ -12,13 +12,13 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e949dbe..c954b2e 100644
+index a45d5c4..40249e6 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -31,7 +31,8 @@ PKG_CHECK_MODULES(GLIB2 glib-2.0 REQUIRED)
+@@ -32,7 +32,8 @@ PKG_CHECK_MODULES(GLIB2 glib-2.0 REQUIRED)
  PKG_SEARCH_MODULE(LIBCRYPTO REQUIRED libcrypto openssl)
  PKG_CHECK_MODULES(LIBXML2 libxml-2.0 REQUIRED)
- FIND_PACKAGE(CURL REQUIRED)
+ FIND_PACKAGE(CURL 7.52.0 REQUIRED)
 -FIND_PACKAGE(Gpgme REQUIRED)
 +PKG_CHECK_MODULES(GPGME gpgme REQUIRED)
 +set(GPGME_VANILLA_LIBRARIES ${GPGME_LIBRARIES})
diff --git a/poky/meta/recipes-devtools/librepo/librepo_1.12.1.bb b/poky/meta/recipes-devtools/librepo/librepo_1.13.0.bb
similarity index 94%
rename from poky/meta/recipes-devtools/librepo/librepo_1.12.1.bb
rename to poky/meta/recipes-devtools/librepo/librepo_1.13.0.bb
index e90928d..0a68e0a 100644
--- a/poky/meta/recipes-devtools/librepo/librepo_1.12.1.bb
+++ b/poky/meta/recipes-devtools/librepo/librepo_1.13.0.bb
@@ -10,7 +10,7 @@
            file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
            "
 
-SRCREV = "d4ad350291f2937c0b6a3eea9e1d0c8e1051fc32"
+SRCREV = "a244d78bab11510408fb9413f1c78c2f56c69fa5"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
index 8e17b56..19a03d4 100644
--- a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
+++ b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
@@ -21,6 +21,7 @@
            file://unwind-opt-parsing.patch \
            file://0001-libtool-Fix-support-for-NIOS2-processor.patch \
            file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \
+           file://0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
           "
 
 SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e"
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
new file mode 100644
index 0000000..2e99087
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
@@ -0,0 +1,35 @@
+From dfbbbd359e43e0a55fbea06f2647279ad8761cb9 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 24 Mar 2021 03:04:13 +0000
+Subject: [PATCH] Makefile.am: make sure autoheader run before autoconf
+
+autoheader will update ../libtool-2.4.6/libltdl/config-h.in which
+autoconf needs, so there comes a race sometimes as below:
+ | configure.ac:45: error: required file 'config-h.in' not found
+ | touch '../libtool-2.4.6/libltdl/config-h.in'
+
+So make sure autoheader run before autoconf to avoid this race.
+
+Upstream-Status: Submitted [libtool-patches@gnu.org maillist]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 4142c90..fe1a9fc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -365,7 +365,7 @@ lt_configure_deps = $(lt_aclocal_m4) $(lt_aclocal_m4_deps)
+ $(lt_aclocal_m4): $(lt_aclocal_m4_deps)
+ 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(ACLOCAL) -I ../m4
+ 
+-$(lt_configure): $(lt_configure_deps)
++$(lt_configure): $(lt_configure_deps) $(lt_config_h_in)
+ 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOCONF)
+ 
+ $(lt_config_h_in): $(lt_configure_deps)
+-- 
+2.29.2
+
diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc
index 622c22a..e186ded 100644
--- a/poky/meta/recipes-devtools/meson/meson.inc
+++ b/poky/meta/recipes-devtools/meson/meson.inc
@@ -14,6 +14,8 @@
            file://disable-rpath-handling.patch \
            file://cross-prop-default.patch \
            file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
+           file://0001-minstall-Correctly-set-uid-gid-of-installed-files.patch \
+           file://gi-target-dep.patch \
            "
 SRC_URI[sha256sum] = "72e1c782ba9bda204f4a1ed57f98d027d7b6eb9414c723eebbd6ec7f1955c8a6"
 
@@ -22,6 +24,10 @@
     file://0002-Support-building-allarch-recipes-again.patch \
 "
 
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".1"
+
 UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
 UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"
 
@@ -30,3 +36,13 @@
 RDEPENDS_${PN} = "ninja python3-modules python3-pkg-resources"
 
 FILES_${PN} += "${datadir}/polkit-1"
+
+do_install_append () {
+	# As per the same issue in the python recipe itself:
+	# Unfortunately the following pyc files are non-deterministc due to 'frozenset'
+	# being written without strict ordering, even with PYTHONHASHSEED = 0
+	# Upstream is discussing ways to solve the issue properly, until then let's
+	# just not install the problematic files.
+	# More info: http://benno.id.au/blog/2013/01/15/python-determinism
+	rm ${D}${libdir}/python*/site-packages/mesonbuild/dependencies/__pycache__/mpi.cpython*
+}
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch b/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch
new file mode 100644
index 0000000..d55b7cc
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch
@@ -0,0 +1,28 @@
+From 3f6f4964dc79ae986f44afe1687922381f237edd Mon Sep 17 00:00:00 2001
+From: Peter Kjellerstedt <pkj@axis.com>
+Date: Wed, 3 Mar 2021 12:47:28 +0100
+Subject: [PATCH] minstall: Correctly set uid/gid of installed files
+
+In commit caab4d3d, the uid and gid arguments passed to os.chown() by
+set_chown() were accidentally swapped, causing files to end up with
+incorrect owner/group if the owner and group are not the same.
+
+Upstream-Status: Backport [https://github.com/mesonbuild/meson/commit/6226ac26ef63335bfb817db02b3f295c78214a82]
+Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+---
+ mesonbuild/minstall.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py
+index 785ff5869..07da408aa 100644
+--- a/mesonbuild/minstall.py
++++ b/mesonbuild/minstall.py
+@@ -148,7 +148,7 @@ def set_chown(path: str, user: T.Optional[str] = None, group: T.Optional[str] =
+         Use a real function rather than a lambda to help mypy out. Also real
+         functions are faster.
+         """
+-        real_os_chown(path, gid, uid, dir_fd=dir_fd, follow_symlinks=follow_symlinks)
++        real_os_chown(path, uid, gid, dir_fd=dir_fd, follow_symlinks=follow_symlinks)
+ 
+     try:
+         os.chown = chown
diff --git a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
new file mode 100644
index 0000000..25b30ca
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
@@ -0,0 +1,41 @@
+When building gobject-introspection we want the *native* binaries (as they need
+to be executed) but *host* gobject-introspection libraries, as otherwise the
+native pkg-config can be used and the build will try to link native and host
+binaries together.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index f9660838e..2eefc3fc7 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -84,8 +84,8 @@ class GnomeModule(ExtensionModule):
+                      mlog.bold('https://github.com/mesonbuild/meson/issues/1387'),
+                      once=True)
+ 
+-    def _get_native_dep(self, state, depname, required=True):
+-        kwargs = {'native': True, 'required': required}
++    def _get_dep(self, state, depname, native=False, required=True):
++        kwargs = {'native': native, 'required': required}
+         holder = self.interpreter.func_dependency(state.current_node, [depname], kwargs)
+         return holder.held_object
+ 
+@@ -101,7 +101,7 @@ class GnomeModule(ExtensionModule):
+             return ExternalProgram.from_entry(name, prog)
+ 
+         # Check if pkgconfig has a variable
+-        dep = self._get_native_dep(state, depname, required=False)
++        dep = self._get_dep(state, depname, native=True, required=False)
+         if dep.found() and dep.type_name == 'pkgconfig':
+             value = dep.get_pkgconfig_variable(varname, {})
+             if value:
+@@ -481,7 +481,7 @@ class GnomeModule(ExtensionModule):
+ 
+     def _get_gir_dep(self, state):
+         if not self.gir_dep:
+-            self.gir_dep = self._get_native_dep(state, 'gobject-introspection-1.0')
++            self.gir_dep = self._get_dep(state, 'gobject-introspection-1.0')
+             self.giscanner = self._get_native_binary(state, 'g-ir-scanner', 'gobject-introspection-1.0', 'g_ir_scanner')
+             self.gicompiler = self._get_native_binary(state, 'g-ir-compiler', 'gobject-introspection-1.0', 'g_ir_compiler')
+         return self.gir_dep, self.giscanner, self.gicompiler
diff --git a/poky/meta/recipes-devtools/perl/liburi-perl_1.74.bb b/poky/meta/recipes-devtools/perl/liburi-perl_5.08.bb
similarity index 90%
rename from poky/meta/recipes-devtools/perl/liburi-perl_1.74.bb
rename to poky/meta/recipes-devtools/perl/liburi-perl_5.08.bb
index c27765b..4d22b17 100644
--- a/poky/meta/recipes-devtools/perl/liburi-perl_1.74.bb
+++ b/poky/meta/recipes-devtools/perl/liburi-perl_5.08.bb
@@ -13,8 +13,8 @@
 
 SRC_URI = "http://www.cpan.org/authors/id/E/ET/ETHER/URI-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "892f7183b178af40f205ba37128225db"
-SRC_URI[sha256sum] = "a9c254f45f89cb1dd946b689dfe433095404532a4543bdaab0b71ce0fdcdd53d"
+SRC_URI[md5sum] = "cdbbf8f8ccdec5c162c8505077a35c2c"
+SRC_URI[sha256sum] = "7e2c6fe3b1d5947da334fa558a96e748aaa619213b85bcdce5b5347d4d26c46e"
 
 S = "${WORKDIR}/URI-${PV}"
 
diff --git a/poky/meta/recipes-devtools/python/python-cython.inc b/poky/meta/recipes-devtools/python/python-cython.inc
index da6eba2..0e6bac0 100644
--- a/poky/meta/recipes-devtools/python/python-cython.inc
+++ b/poky/meta/recipes-devtools/python/python-cython.inc
@@ -1,3 +1,5 @@
+SUMMARY = "The Cython language"
+HOMEPAGE = "https://pypi.org/project/Cython/"
 DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
 It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
 and the messy, low-level world of C."
diff --git a/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb b/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb
index 01f716c..2ec4033 100644
--- a/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb
+++ b/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb
@@ -20,8 +20,7 @@
 PACKAGEBUILDPKGD += "cython_fix_sources"
 
 cython_fix_sources () {
-	sed -i -e 's#${WORKDIR}#/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}#g' \
-		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FlowControl.c \
+	for f in ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FlowControl.c \
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FusedNode.c \
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Scanning.c \
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Visitor.c \
@@ -29,5 +28,9 @@
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Scanners.c \
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Runtime/refnanny.c \
 		${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Tempita/_tempita.c \
-		${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt
+		${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt; do
+		if [ -e $f ]; then
+			sed -i -e 's#${WORKDIR}#/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}#g' $f
+		fi
+	done
 }
diff --git a/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb b/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb
index b1feee8..0b87ab0 100644
--- a/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb
@@ -1,4 +1,5 @@
 SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+HOMEPAGE = "https://pypi.org/project/python-dbusmock/"
 
 LICENSE = "GPL-3.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
diff --git a/poky/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb b/poky/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
index af4291b..6b33597 100644
--- a/poky/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
@@ -1,4 +1,5 @@
 SUMMARY = "A small and simple INI-file parser module"
+HOMEPAGE = "https://pypi.org/project/iniconfig/"
 
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
diff --git a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb b/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb
index 19a4eee..dbdf563 100644
--- a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb
+++ b/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb
@@ -1,4 +1,5 @@
 DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+HOMEPAGE = "https://pypi.org/project/Jinja/"
 
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
@@ -7,6 +8,8 @@
 
 PYPI_PACKAGE = "Jinja2"
 
+CVE_PRODUCT = "jinja2 jinja"
+
 CLEANBROKEN = "1"
 
 inherit pypi setuptools3
diff --git a/poky/meta/recipes-devtools/python/python3-pygments_2.8.0.bb b/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb
similarity index 82%
rename from poky/meta/recipes-devtools/python/python3-pygments_2.8.0.bb
rename to poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb
index 6c8afc5..a2e0083 100644
--- a/poky/meta/recipes-devtools/python/python3-pygments_2.8.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc"
 
 inherit setuptools3
-SRC_URI[sha256sum] = "37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0"
+SRC_URI[sha256sum] = "2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94"
 
 DEPENDS += "\
             ${PYTHON_PN} \
diff --git a/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb b/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
index b442705..8df3150 100644
--- a/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
@@ -1,4 +1,6 @@
 SUMMARY = "Python GObject bindings"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject"
+DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more."
 SECTION = "devel/python"
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb
index 392c20d..d221cbc 100644
--- a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb
@@ -1,4 +1,6 @@
 SUMMARY = "Simple powerful testing with python"
+HOMEPAGE = "https://pypi.org/project/pytest/"
+DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries."
 
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
diff --git a/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb b/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb
index ce117a9..1212213 100644
--- a/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Software Construction tool (make/autotools replacement)"
+HOMEPAGE = "https://github.com/SCons/scons"
 SECTION = "devel/python"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-python3-scons-${PV};md5=e14e1b33428df24a40a782ae142785d0"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb b/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb
index 406404e..ead80da 100644
--- a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb
@@ -1,4 +1,6 @@
 SUMMARY = "the blessed package to manage your versions by scm tags"
+HOMEPAGE = "https://pypi.org/project/setuptools-scm/"
+DESCRIPTION = "setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file."
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
 
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_53.0.0.bb b/poky/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb
similarity index 94%
rename from poky/meta/recipes-devtools/python/python3-setuptools_53.0.0.bb
rename to poky/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb
index 811c8a5..74264a3 100644
--- a/poky/meta/recipes-devtools/python/python3-setuptools_53.0.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb
@@ -10,7 +10,7 @@
 
 SRC_URI += "file://0001-change-shebang-to-python3.patch"
 
-SRC_URI[sha256sum] = "1b18ef17d74ba97ac9c0e4b4265f123f07a8ae85d9cd093949fa056d3eeeead5"
+SRC_URI[sha256sum] = "1ce82798848a978696465866bb3aaab356003c42d6143e1111fcf069ac838274"
 
 DEPENDS += "${PYTHON_PN}"
 
diff --git a/poky/meta/recipes-devtools/python/python3-zipp_3.4.0.bb b/poky/meta/recipes-devtools/python/python3-zipp_3.4.1.bb
similarity index 77%
rename from poky/meta/recipes-devtools/python/python3-zipp_3.4.0.bb
rename to poky/meta/recipes-devtools/python/python3-zipp_3.4.1.bb
index 97523e8..191d3b3 100644
--- a/poky/meta/recipes-devtools/python/python3-zipp_3.4.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-zipp_3.4.1.bb
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
 
-SRC_URI[md5sum] = "ae81f228995578b840d76d1b7d87fede"
-SRC_URI[sha256sum] = "ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"
+SRC_URI[md5sum] = "3d91c7ab73b62ac3674210df94df600a"
+SRC_URI[sha256sum] = "3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76"
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
diff --git a/poky/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/poky/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
index 5c62036..5823273 100644
--- a/poky/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
+++ b/poky/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
@@ -10,6 +10,8 @@
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org>
 
 ---
  setup.py | 4 ++++
@@ -19,13 +21,17 @@
 index 7691258..ec3f2a4 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
+@@ -408,6 +408,14 @@ class PyBuildExt(build_ext):
                  print("%-*s   %-*s   %-*s" % (longest, e, longest, f,
                                                longest, g))
  
 +        # There is no need to report missing module dependencies,
 +        # if the modules have been disabled in the first place.
-+        self.missing = list(set(self.missing) - set(mods_disabled))
++        # cannot use mods_disabled here, because remove_configured_extensions adds
++        # only disabled extensions into it (doesn't cover _dbm, _gdbm, readline
++        # we support disabling through PACKAGECONFIG)
++        sysconf_dis = sysconfig.get_config_var('MODDISABLED_NAMES').split()
++        self.missing = list(set(self.missing) - set(sysconf_dis))
 +
          if self.missing:
              print()
diff --git a/poky/meta/recipes-devtools/python/python3_3.9.2.bb b/poky/meta/recipes-devtools/python/python3_3.9.2.bb
index af1843a..c5e47ee 100644
--- a/poky/meta/recipes-devtools/python/python3_3.9.2.bb
+++ b/poky/meta/recipes-devtools/python/python3_3.9.2.bb
@@ -371,6 +371,7 @@
 RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
 RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}"
 RDEPENDS_${PN}-dev = ""
+RDEPENDS_${PN}-pydoc += "${PN}-io"
 
 RDEPENDS_${PN}-tests_append_class-target = " ${MLPREFIX}bash"
 RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash"
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index a6dc941..a625809 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -30,6 +30,7 @@
            file://mmap2.patch \
            file://determinism.patch \
            file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \
+	   file://CVE-2021-20203.patch \
            "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch
new file mode 100644
index 0000000..269c6f1
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch
@@ -0,0 +1,73 @@
+From: Prasad J Pandit <pjp@fedoraproject.org>
+
+While activating device in vmxnet3_acticate_device(), it does not
+validate guest supplied configuration values against predefined
+minimum - maximum limits. This may lead to integer overflow or
+OOB access issues. Add checks to avoid it.
+
+Fixes: CVE-2021-20203
+Buglink: https://bugs.launchpad.net/qemu/+bug/1913873
+Reported-by: Gaoning Pan <pgn@zju.edu.cn>
+Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
+
+Upstream-Status: Acepted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg07935.html]
+CVE: CVE-2021-20203
+Signed-off-by: Minjae Kim <flowergom@gmail.com>
+---
+ hw/net/vmxnet3.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
+index eff299f629..4a910ca971 100644
+--- a/hw/net/vmxnet3.c
++++ b/hw/net/vmxnet3.c
+@@ -1420,6 +1420,7 @@ static void vmxnet3_activate_device(VMXNET3State *s)
+     vmxnet3_setup_rx_filtering(s);
+     /* Cache fields from shared memory */
+     s->mtu = VMXNET3_READ_DRV_SHARED32(d, s->drv_shmem, devRead.misc.mtu);
++    assert(VMXNET3_MIN_MTU <= s->mtu && s->mtu < VMXNET3_MAX_MTU);
+     VMW_CFPRN("MTU is %u", s->mtu);
+ 
+     s->max_rx_frags =
+@@ -1473,6 +1474,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
+         /* Read rings memory locations for TX queues */
+         pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.txRingBasePA);
+         size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.txRingSize);
++        if (size > VMXNET3_TX_RING_MAX_SIZE) {
++            size = VMXNET3_TX_RING_MAX_SIZE;
++        }
+ 
+         vmxnet3_ring_init(d, &s->txq_descr[i].tx_ring, pa, size,
+                           sizeof(struct Vmxnet3_TxDesc), false);
+@@ -1483,6 +1487,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
+         /* TXC ring */
+         pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.compRingBasePA);
+         size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.compRingSize);
++        if (size > VMXNET3_TC_RING_MAX_SIZE) {
++            size = VMXNET3_TC_RING_MAX_SIZE;
++        }
+         vmxnet3_ring_init(d, &s->txq_descr[i].comp_ring, pa, size,
+                           sizeof(struct Vmxnet3_TxCompDesc), true);
+         VMXNET3_RING_DUMP(VMW_CFPRN, "TXC", i, &s->txq_descr[i].comp_ring);
+@@ -1524,6 +1531,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
+             /* RX rings */
+             pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.rxRingBasePA[j]);
+             size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.rxRingSize[j]);
++            if (size > VMXNET3_RX_RING_MAX_SIZE) {
++                size = VMXNET3_RX_RING_MAX_SIZE;
++            }
+             vmxnet3_ring_init(d, &s->rxq_descr[i].rx_ring[j], pa, size,
+                               sizeof(struct Vmxnet3_RxDesc), false);
+             VMW_CFPRN("RX queue %d:%d: Base: %" PRIx64 ", Size: %d",
+@@ -1533,6 +1543,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
+         /* RXC ring */
+         pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.compRingBasePA);
+         size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.compRingSize);
++        if (size > VMXNET3_RC_RING_MAX_SIZE) {
++            size = VMXNET3_RC_RING_MAX_SIZE;
++        }
+         vmxnet3_ring_init(d, &s->rxq_descr[i].comp_ring, pa, size,
+                           sizeof(struct Vmxnet3_RxCompDesc), true);
+         VMW_CFPRN("RXC queue %d: Base: %" PRIx64 ", Size: %d", i, pa, size);
+-- 
+2.29.2
diff --git a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb
index 9195d66..d369c70 100644
--- a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb
+++ b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb
@@ -145,15 +145,46 @@
 
 FILES_${PN}-dev += "${libdir}/rpm-plugins/*.la \
                     "
+PACKAGE_BEFORE_PN += "${PN}-build ${PN}-sign ${PN}-archive"
+
+RRECOMMENDS_${PN} += "rpm-build rpm-sign rpm-archive"
+
+FILES_${PN}-build = "\
+    ${bindir}/rpmbuild \
+    ${bindir}/gendiff \
+    ${bindir}/rpmspec \
+    ${libdir}/librpmbuild.so.* \
+    ${libdir}/rpm/brp-* \
+    ${libdir}/rpm/check-* \
+    ${libdir}/rpm/debugedit \
+    ${libdir}/rpm/sepdebugcrcfix \
+    ${libdir}/rpm/find-debuginfo.sh \
+    ${libdir}/rpm/find-lang.sh \
+    ${libdir}/rpm/*provides* \
+    ${libdir}/rpm/*requires* \
+    ${libdir}/rpm/*deps* \
+    ${libdir}/rpm/*.prov \
+    ${libdir}/rpm/*.req \
+    ${libdir}/rpm/config.* \
+    ${libdir}/rpm/mkinstalldirs \
+    ${libdir}/rpm/macros.p* \
+    ${libdir}/rpm/fileattrs/* \
+"
+
+FILES_${PN}-sign = "\
+    ${bindir}/rpmsign \
+    ${libdir}/librpmsign.so.* \
+"
+
+FILES_${PN}-archive = "\
+    ${bindir}/rpm2archive \
+"
 
 PACKAGES += "python3-rpm"
 PROVIDES += "python3-rpm"
 FILES_python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
 
-# rpm 5.x was packaging the rpm build tools separately
-RPROVIDES_${PN} += "rpm-build"
-
-RDEPENDS_${PN} = "bash perl python3-core"
+RDEPENDS_${PN}-build = "bash perl python3-core"
 
 PACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
 
diff --git a/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index f84a7e1..95dccb9 100755
--- a/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -72,12 +72,12 @@
 		else
 			echo "ERROR: postinst $i failed."
 			[ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
-			remove_pi_dir=0
+			remove_rcsd_link=0
 		fi
 	done
 }
 
-remove_pi_dir=1
+remove_rcsd_link=1
 if $pm_installed; then
 	case $pm in
 		"ipk")
@@ -92,9 +92,7 @@
 	exec_postinst_scriptlets
 fi
 
-# since all postinstalls executed successfully, remove the postinstalls directory
-# and the rcS.d link
-if [ $remove_pi_dir = 1 ]; then
-	rm -rf $pi_dir
+# since all postinstalls executed successfully, remove the rcS.d link
+if [ $remove_rcsd_link = 1 ]; then
 	remove_rcsd_link
 fi
diff --git a/poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch b/poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
index 42c1893..4cef0c0 100644
--- a/poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
+++ b/poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
@@ -1,4 +1,4 @@
-From ee47e205255928679701a5b769bd7ae0f815119d Mon Sep 17 00:00:00 2001
+From 205e7661822987825c7149ada4eefdc5368828ce Mon Sep 17 00:00:00 2001
 From: Gabriel Barbu <gabriel.barbu@enea.com>
 Date: Thu, 25 Jul 2013 15:28:33 +0200
 Subject: [PATCH] strace: Add ptest
@@ -10,14 +10,14 @@
 Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
 
 ---
- tests/Makefile.am | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
+ tests/Makefile.am | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
 
 diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 8cf4c36..66162eb 100644
+index b8efce8..fa9a1af 100644
 --- a/tests/Makefile.am
 +++ b/tests/Makefile.am
-@@ -15,6 +15,7 @@ SIZEOF_LONG = @SIZEOF_LONG@
+@@ -16,6 +16,7 @@ SIZEOF_LONG = @SIZEOF_LONG@
  MPERS_NAME =
  MPERS_CC_FLAGS =
  ARCH_MFLAGS =
@@ -25,16 +25,17 @@
  AM_CFLAGS = $(WARN_CFLAGS)
  AM_CPPFLAGS = $(ARCH_MFLAGS) \
  	      -I$(builddir) \
-@@ -538,3 +539,21 @@ BUILT_SOURCES = ksysent.h
+@@ -692,3 +693,22 @@ BUILT_SOURCES = ksysent.h
  CLEANFILES = ksysent.h
  
- include ../scno.am
+ include ../src/scno.am
 +
 +buildtest-TESTS: $(check_PROGRAMS) $(TESTS)
 +
 +install-ptest:
-+	install $(BUILDDIR)/strace $(DESTDIR)
-+	install $(srcdir)/../strace-log-merge $(DESTDIR)
++	install -d $(DESTDIR)/src
++	install $(BUILDDIR)/src/strace $(DESTDIR)/src
++	install $(srcdir)/../src/strace-log-merge $(DESTDIR)/src
 +	install -d $(DESTDIR)/$(TESTDIR)
 +	cp $(BUILDDIR)/$(TESTDIR)/Makefile $(DESTDIR)/$(TESTDIR)
 +	sed -i -e 's/^Makefile:/_Makefile:/' $(DESTDIR)/$(TESTDIR)/Makefile
diff --git a/poky/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch b/poky/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
deleted file mode 100644
index e8dbd7f..0000000
--- a/poky/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d87a7feb5ea75da7061afdd473faba044ec8eb0f Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Mon, 18 Jan 2016 13:33:50 -0800
-Subject: [PATCH] strace: remove need for scripts
-
-git-version-gen copyright-year-gen file-date-gen are not included in
-tarball releases, so we need to avoid attempts to call them.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index dd4f13f..65f000b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -12,12 +12,12 @@
- 
- AC_PREREQ(2.57)
- AC_INIT([strace],
--	st_esyscmd_s([./git-version-gen .tarball-version]),
-+	m4_esyscmd_s([cat .tarball-version]),
- 	[strace-devel@lists.strace.io],
- 	[strace],
- 	[https://strace.io])
--m4_define([copyright_year], st_esyscmd_s([./copyright-year-gen .year]))
--m4_define([manpage_date], st_esyscmd_s([./file-date-gen strace.1.in]))
-+m4_define([copyright_year], m4_esyscmd_s([cat .year]))
-+m4_define([manpage_date], m4_esyscmd_s([cat .strace.1.in.date]))
- AC_COPYRIGHT([Copyright (c) 1999-]copyright_year[ The strace developers.])
- AC_CONFIG_SRCDIR([strace.c])
- AC_CONFIG_AUX_DIR([.])
diff --git a/poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch b/poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
index d46b147..0c68349 100644
--- a/poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
+++ b/poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
@@ -1,4 +1,4 @@
-From 12a726b280eca94883edcb4da1eaaf8e93d41739 Mon Sep 17 00:00:00 2001
+From 4cd26cfaec255ec87f22abe886e0be89312a9671 Mon Sep 17 00:00:00 2001
 From: Andre McCurdy <armccurdy@gmail.com>
 Date: Mon, 18 Jan 2016 11:01:00 -0800
 Subject: [PATCH] update gawk paths, /bin/gawk -> /usr/bin/gawk
@@ -13,7 +13,7 @@
 Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
 
 ---
- mpers.awk                   | 2 +-
+ src/mpers.awk               | 2 +-
  tests-m32/caps.awk          | 2 +-
  tests-m32/match.awk         | 2 +-
  tests-m32/rt_sigaction.awk  | 2 +-
@@ -25,18 +25,18 @@
  tests/rt_sigaction.awk      | 2 +-
  10 files changed, 10 insertions(+), 10 deletions(-)
 
-diff --git a/mpers.awk b/mpers.awk
-index 17f8f2b..d69dcd5 100644
---- a/mpers.awk
-+++ b/mpers.awk
+diff --git a/src/mpers.awk b/src/mpers.awk
+index 25a212f..b2ff53f 100644
+--- a/src/mpers.awk
++++ b/src/mpers.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
  # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@strace.io>
 diff --git a/tests-m32/caps.awk b/tests-m32/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
 --- a/tests-m32/caps.awk
 +++ b/tests-m32/caps.awk
 @@ -1,4 +1,4 @@
@@ -46,27 +46,27 @@
  # This file is part of caps strace test.
  #
 diff --git a/tests-m32/match.awk b/tests-m32/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
 --- a/tests-m32/match.awk
 +++ b/tests-m32/match.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
  # All rights reserved.
 diff --git a/tests-m32/rt_sigaction.awk b/tests-m32/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
 --- a/tests-m32/rt_sigaction.awk
 +++ b/tests-m32/rt_sigaction.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
  # Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
 diff --git a/tests-mx32/caps.awk b/tests-mx32/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
 --- a/tests-mx32/caps.awk
 +++ b/tests-mx32/caps.awk
 @@ -1,4 +1,4 @@
@@ -76,27 +76,27 @@
  # This file is part of caps strace test.
  #
 diff --git a/tests-mx32/match.awk b/tests-mx32/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
 --- a/tests-mx32/match.awk
 +++ b/tests-mx32/match.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
  # All rights reserved.
 diff --git a/tests-mx32/rt_sigaction.awk b/tests-mx32/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
 --- a/tests-mx32/rt_sigaction.awk
 +++ b/tests-mx32/rt_sigaction.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
  # Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
 diff --git a/tests/caps.awk b/tests/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
 --- a/tests/caps.awk
 +++ b/tests/caps.awk
 @@ -1,4 +1,4 @@
@@ -106,22 +106,22 @@
  # This file is part of caps strace test.
  #
 diff --git a/tests/match.awk b/tests/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
 --- a/tests/match.awk
 +++ b/tests/match.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
  # All rights reserved.
 diff --git a/tests/rt_sigaction.awk b/tests/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
 --- a/tests/rt_sigaction.awk
 +++ b/tests/rt_sigaction.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
  # Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
diff --git a/poky/meta/recipes-devtools/strace/strace_5.10.bb b/poky/meta/recipes-devtools/strace/strace_5.11.bb
similarity index 79%
rename from poky/meta/recipes-devtools/strace/strace_5.10.bb
rename to poky/meta/recipes-devtools/strace/strace_5.11.bb
index 17bde08..f6a91df 100644
--- a/poky/meta/recipes-devtools/strace/strace_5.10.bb
+++ b/poky/meta/recipes-devtools/strace/strace_5.11.bb
@@ -3,10 +3,9 @@
 DESCRIPTION = "strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state."
 SECTION = "console/utils"
 LICENSE = "LGPL-2.1+ & GPL-2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c756d9d5dabc27663df64f0bf492166c"
+LIC_FILES_CHKSUM = "file://COPYING;md5=318cfc887fc8723f4e9d4709b55e065b"
 
 SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
-           file://disable-git-version-gen.patch \
            file://update-gawk-paths.patch \
            file://Makefile-ptest.patch \
            file://run-ptest \
@@ -16,7 +15,7 @@
            file://uintptr_t.patch \
            file://0001-strace-fix-reproducibilty-issues.patch \
            "
-SRC_URI[sha256sum] = "fe3982ea4cd9aeb3b4ba35f6279f0b577a37175d3282be24b9a5537b56b8f01c"
+SRC_URI[sha256sum] = "ffe340b10c145a0f85734271e9cce56457d23f21a7ea5931ab32f8cf4e793879"
 
 inherit autotools ptest
 
@@ -34,19 +33,16 @@
 TESTDIR = "tests"
 PTEST_BUILD_HOST_PATTERN = "^(DEB_CHANGELOGTIME|RPM_CHANGELOGTIME|WARN_CFLAGS_FOR_BUILD|LDFLAGS_FOR_BUILD)"
 
-do_install_append() {
-	# We don't ship strace-graph here because it needs perl
-	rm ${D}${bindir}/strace-graph
-}
-
 do_compile_ptest() {
-	oe_runmake -C ${TESTDIR} buildtest-TESTS
+	oe_runmake ${PARALLEL_MAKE} -C ${TESTDIR} buildtest-TESTS
 }
 
 do_install_ptest() {
 	oe_runmake -C ${TESTDIR} install-ptest BUILDDIR=${B} DESTDIR=${D}${PTEST_PATH} TESTDIR=${TESTDIR}
-	install -m 755 ${S}/test-driver ${D}${PTEST_PATH}
-	install -m 644 ${B}/config.h ${D}${PTEST_PATH}
+	mkdir -p ${D}${PTEST_PATH}/build-aux
+	mkdir -p ${D}${PTEST_PATH}/src
+	install -m 755 ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+	install -m 644 ${B}/src/config.h ${D}${PTEST_PATH}/src/
         sed -i -e '/^src/s/strace.*[0-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
 }
 
diff --git a/poky/meta/recipes-devtools/vala/vala_0.50.3.bb b/poky/meta/recipes-devtools/vala/vala_0.50.3.bb
deleted file mode 100644
index 302f562..0000000
--- a/poky/meta/recipes-devtools/vala/vala_0.50.3.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
-
-SRC_URI[sha256sum] = "6165c1b42beca4856e2fb9a31c5e81949d76fa670e2f0cfc8389ce9b95eca5db"
diff --git a/poky/meta/recipes-devtools/vala/vala_0.50.4.bb b/poky/meta/recipes-devtools/vala/vala_0.50.4.bb
new file mode 100644
index 0000000..4381635
--- /dev/null
+++ b/poky/meta/recipes-devtools/vala/vala_0.50.4.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+
+SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
+
+SRC_URI[sha256sum] = "58fc31fa8bf492035b11d1a7d514801710afc65bd458b24c0f8d00280a92a38c"
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch
new file mode 100644
index 0000000..98cbcd1
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch
@@ -0,0 +1,200 @@
+From 83c24e31df6932a6d4fced179050c6d8d8c6f3b5 Mon Sep 17 00:00:00 2001
+From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
+Date: Sun, 7 Mar 2021 22:29:27 +0100
+Subject: [PATCH] Fix nlcontrolc.vgtest hanging on newer glibc and/or arm64
+
+This test verifies that GDB can interrupt a process with all threads
+blocked in a long select syscall.
+The test used to terminate by having GDB modifying the select argument.
+However, modifying the select argument works only for specific arch
+and/or specific versions of glibc.
+The test then blocks on other architectures/glibc versions.
+
+The previous version of the test was:
+  * first launching sleepers so as to have all threads blocked in long select
+  * interrupting these threads
+  * changing the select time arg so that the threads burn cpu
+  * and then change variables to have the program exit.
+
+The new version does:
+  * first launches sleepers so that all threads are burning cpu.
+  * interrupting these threads
+  * change the local variables of sleepers so that the threads will
+    block in a long select syscall
+  * interrupt these threads
+  * kill the program.
+
+With this new version, we still check the behaviour of gdb+vgdbserver
+for both burning and sleep threads, but without having the termination
+depending on modifying select syscall argument.
+
+Tested on debian amd64 and on ubuntu arm64 (to check the test does not hang
+on an arm64 platform).
+
+Upstream-Status: Backport
+
+From commit on master:
+c79180a3afcf65902e578646c3b716cc749db406
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
+---
+ gdbserver_tests/nlcontrolc.stderr.exp  |  4 +-
+ gdbserver_tests/nlcontrolc.stdinB.gdb  | 57 +++++++++++++++-----------
+ gdbserver_tests/nlcontrolc.stdoutB.exp | 25 ++++++-----
+ gdbserver_tests/nlcontrolc.vgtest      | 12 +++---
+ 4 files changed, 56 insertions(+), 42 deletions(-)
+
+diff --git a/gdbserver_tests/nlcontrolc.stderr.exp b/gdbserver_tests/nlcontrolc.stderr.exp
+index ac75bb3da..b63a9a988 100644
+--- a/gdbserver_tests/nlcontrolc.stderr.exp
++++ b/gdbserver_tests/nlcontrolc.stderr.exp
+@@ -3,9 +3,9 @@ Nulgrind, the minimal Valgrind tool
+ (action at startup) vgdb me ... 
+ 
+ 
+-loops/sleep_ms/burn/threads_spec/affinity:  1000000000 1000000000 1000000000 BSBSBSBS 1
++loops/sleep_ms/burn/threads_spec/affinity:  1000000000 0 100000 BSBSBSBS 1
+ Brussels ready to sleep and/or burn
+ London ready to sleep and/or burn
+ Petaouchnok ready to sleep and/or burn
+ main ready to sleep and/or burn
+-
++Gdb request to kill this process
+diff --git a/gdbserver_tests/nlcontrolc.stdinB.gdb b/gdbserver_tests/nlcontrolc.stdinB.gdb
+index 667ece18d..ea4fcd530 100644
+--- a/gdbserver_tests/nlcontrolc.stdinB.gdb
++++ b/gdbserver_tests/nlcontrolc.stdinB.gdb
+@@ -9,32 +9,43 @@ shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep main nl
+ #
+ continue
+ #
+-# Here, all tasks should be blocked in a loooonnnng select, all in WaitSys
+-info threads
+-# We will unblock them by changing their timeout argument
+-# To avoid going into the frame where the timeval arg is,
+-# it has been defined as global variables, as the nr
+-# of calls on the stack differs between 32bits and 64bits,
+-# and/or between OS.
+-# ensure select finishes in a few milliseconds max:
+-p t[0].tv_sec = 0
+-p t[1].tv_sec = 0
+-p t[2].tv_sec = 0
+-p t[3].tv_sec = 0
+-#
+-# We will change the burning parameters in a few  seconds
++# Threads are burning cpu now
++# We would like to fully test info threads here, but which thread are Runnable
++# or Yielding is unpredictable. With a recent enough gdb, check the nr of
++# threads by state using pipe commands and grep/wc.
++init-if-undefined $_gdb_major = 0
++init-if-undefined $_gdb_minor = 0
++if $_gdb_major >= 9
++  | info threads | grep VgTs_Runnable | wc -l
++  | info threads | grep VgTs_Yielding | wc -l
++else
++  echo 1\n
++  echo 3\n
++end
++# We change the variables so that all the threads are blocked in a syscall
++p burn = 0
++p sleepms = 1000000
++#
++#
+ shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep changed nlcontrolc.stdoutB.out
+ #
+-echo changed burning parameters\n
++echo changed burning parameters to sleeping parameters\n
+ continue
++# Here, all tasks should be blocked in a loooonnnng select, all in WaitSys
++info threads
++# We reset the sleepms to 0. The threads should still be blocked in the syscall
++p sleepms = 0
++shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep reset nlcontrolc.stdoutB.out
+ #
+-# Threads are burning cpu now
+-# We would like to test info threads here, but which thread are Runnable or Yielding
+-# is unpredictable.
+-# info threads
+-p burn = 0
+-p loops = 0
+-p report_finished = 0
++echo reset to sleeping parameters\n
+ continue
+-# and the process should stop very quickly now
++# threads should still be blocked in a loooonnnng select, all in WaitSys
++info threads
++if $_gdb_major >= 9
++  | info threads | grep VgTs_WaitSys | wc -l
++else
++  echo 4\n
++end
++# Make the process die.
++kill
+ quit
+diff --git a/gdbserver_tests/nlcontrolc.stdoutB.exp b/gdbserver_tests/nlcontrolc.stdoutB.exp
+index e8a5ff8ba..2e8dc8498 100644
+--- a/gdbserver_tests/nlcontrolc.stdoutB.exp
++++ b/gdbserver_tests/nlcontrolc.stdoutB.exp
+@@ -1,18 +1,21 @@
+ Continuing.
+ Program received signal SIGTRAP, Trace/breakpoint trap.
++do_burn () at sleepers.c:41
++41	   for (i = 0; i < burn; i++) loopnr++;
++ > > > > > >1
++3
++$1 = 0
++$2 = 1000000
++changed burning parameters to sleeping parameters
++Continuing.
++Program received signal SIGTRAP, Trace/breakpoint trap.
+ 0x........ in syscall ...
+ * 1 Thread .... (tid 1 VgTs_WaitSys)  0x........ in syscall ...
+-$1 = 0
+-$2 = 0
+ $3 = 0
+-$4 = 0
+-changed burning parameters
++reset to sleeping parameters
+ Continuing.
+ Program received signal SIGTRAP, Trace/breakpoint trap.
+-do_burn () at sleepers.c:41
+-41	   for (i = 0; i < burn; i++) loopnr++;
+-$5 = 0
+-$6 = 0
+-$7 = 0
+-Continuing.
+-Program exited normally.
++0x........ in syscall ...
++* 1 Thread .... (tid 1 VgTs_WaitSys)  0x........ in syscall ...
++ > > > >4
++Kill the program being debugged? (y or n) [answered Y; input not from terminal]
+diff --git a/gdbserver_tests/nlcontrolc.vgtest b/gdbserver_tests/nlcontrolc.vgtest
+index bb5308403..09edfcaba 100644
+--- a/gdbserver_tests/nlcontrolc.vgtest
++++ b/gdbserver_tests/nlcontrolc.vgtest
+@@ -4,16 +4,16 @@
+ #          and modify some variables
+ #   the user can control-c an process with all threads in Running/Yielding
+ #          and modify some variables
+-# sleepers is started with argument so that it will compute during ages.
+-# The variable modifications means it will exit in a reasonable time.
+-# This test is disabled on Solaris because modifying select/poll/ppoll timeout
+-# has no effect if a thread is already blocked in that syscall.
++# sleepers is started so that it burns CPU.
++# We then interrupt the process.
++# We modify variables so that instead of burning cpu, sleepers blocks
++# all threads in a select syscall.
+ prog: sleepers
+-args: 1000000000 1000000000 1000000000 BSBSBSBS 1
++args: 1000000000 0 100000 BSBSBSBS 1
+ vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlcontrolc
+ stderr_filter: filter_stderr
+ # Bug 338633 nlcontrol hangs on arm64 currently.
+-prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/arch_test arm64 && ! ../tests/os_test solaris
++prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/os_test solaris
+ progB: gdb
+ argsB: --quiet -l 60 --nx ./sleepers
+ stdinB: nlcontrolc.stdinB.gdb
+-- 
+2.29.2
+
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-gdbserver_tests-Disable-nlcontrolc.vgtest-for-x86-64.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-gdbserver_tests-Disable-nlcontrolc.vgtest-for-x86-64.patch
deleted file mode 100644
index 0bd8273..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-gdbserver_tests-Disable-nlcontrolc.vgtest-for-x86-64.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d8c19e0bb9ca2fd48f223e1fdeffcafeb0aa1745 Mon Sep 17 00:00:00 2001
-From: Yi Fan Yu <yifan.yu@windriver.com>
-Date: Wed, 17 Feb 2021 14:53:44 -0500
-Subject: [PATCH] gdbserver_tests: Disable nlcontrolc.vgtest for x86-64
-
-Test hangs after glibc 2.33 uprev
-
-Using gdb to modify the timeout argument no longer
-affects how long `select` wait.
-
-https://bugs.kde.org/show_bug.cgi?id=432870
-Upstream-Status: Pending
-Waiting for upstream to take action.
-
-Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
----
- gdbserver_tests/nlcontrolc.vgtest | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/gdbserver_tests/nlcontrolc.vgtest b/gdbserver_tests/nlcontrolc.vgtest
-index bb5308403..96d2b52bb 100644
---- a/gdbserver_tests/nlcontrolc.vgtest
-+++ b/gdbserver_tests/nlcontrolc.vgtest
-@@ -13,7 +13,8 @@ args: 1000000000 1000000000 1000000000 BSBSBSBS 1
- vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlcontrolc
- stderr_filter: filter_stderr
- # Bug 338633 nlcontrol hangs on arm64 currently.
--prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/arch_test arm64 && ! ../tests/os_test solaris
-+# Bug 432870 nlcontrolc hangs on x86-64 starting with glibc 2.33
-+prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/arch_test arm64 && ! ../tests/os_test solaris && ! ../tests/arch_test amd64
- progB: gdb
- argsB: --quiet -l 60 --nx ./sleepers
- stdinB: nlcontrolc.stdinB.gdb
--- 
-2.29.2
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch
new file mode 100644
index 0000000..7c62144
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch
@@ -0,0 +1,62 @@
+From 0748ed5403a75c12ad9137b3fabf9d8397206ed8 Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Tue, 1 Dec 2020 13:57:39 +0100
+Subject: [PATCH] lmw, lswi and related PowerPC insns aren't allowed on ppc64le
+
+lmw, lswi and related PowerPC insns aren't allowed on ppc64le
+
+Newer binutils produce an error when the assembly contains lmw, stmw,
+lswi, lswx, stswi, or stswx instructions in little-endian mode.
+
+Only build and run the lsw and ldst_multiple testcases on ppc64[be].
+
+https://bugs.kde.org/show_bug.cgi?id=427870
+Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=74b74174d572fee4015b8f4e326db3cd949bcdc3]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ none/tests/ppc64/Makefile.am          | 9 ++++++---
+ none/tests/ppc64/ldst_multiple.vgtest | 1 +
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/none/tests/ppc64/Makefile.am b/none/tests/ppc64/Makefile.am
+index 9bc0d0a..9d1e8b7 100644
+--- a/none/tests/ppc64/Makefile.am
++++ b/none/tests/ppc64/Makefile.am
+@@ -54,16 +54,20 @@ EXTRA_DIST = \
+ 
+ check_PROGRAMS = \
+ 	allexec \
+-	lsw jm-insns round \
++	jm-insns round \
+ 	test_isa_2_06_part1 test_isa_2_06_part2 test_isa_2_06_part3 \
+ 	test_dfp1 test_dfp2 test_dfp3 test_dfp4 test_dfp5 \
+ 	test_isa_2_07_part1 test_isa_2_07_part2 \
+ 	test_isa_3_0 \
+ 	subnormal_test \
+-	test_tm test_touch_tm ldst_multiple data-cache-instructions \
++	test_tm test_touch_tm data-cache-instructions \
+ 	power6_mf_gpr std_reg_imm \
+ 	twi_tdi tw_td power6_bcmp
+ 
++# lmw, stmw, lswi, lswx, stswi, stswx compile (and run) only on big endian.
++if VGCONF_PLATFORMS_INCLUDE_PPC64BE_LINUX
++check_PROGRAMS += lsw ldst_multiple
++endif
+ 
+ AM_CFLAGS    += @FLAG_M64@
+ AM_CXXFLAGS  += @FLAG_M64@
+@@ -175,4 +179,3 @@ test_isa_2_07_part2_LDADD = -lm
+ test_tm_LDADD = -lm
+ test_touch_tm_LDADD = -lm
+ test_isa_3_0_LDADD = -lm
+-
+diff --git a/none/tests/ppc64/ldst_multiple.vgtest b/none/tests/ppc64/ldst_multiple.vgtest
+index 87e668e..22dd46c 100644
+--- a/none/tests/ppc64/ldst_multiple.vgtest
++++ b/none/tests/ppc64/ldst_multiple.vgtest
+@@ -1 +1,2 @@
++prereq: ../../../tests/is_ppc64_BE
+ prog: ldst_multiple
+-- 
+2.31.0
+
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
index d0aefdf..2b1d185 100644
--- a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
+++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
@@ -45,7 +45,8 @@
            file://0001-drd-Port-to-Fedora-33.patch \
            file://0001-drd-musl-fix.patch \
            file://0001-helgrind-Intercept-libc-functions.patch \
-           file://0001-gdbserver_tests-Disable-nlcontrolc.vgtest-for-x86-64.patch \
+           file://0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch \
+           file://0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch \
            "
 SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589"
 SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca"
diff --git a/poky/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch b/poky/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch
deleted file mode 100644
index ca170db..0000000
--- a/poky/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-If SGML_CATALOG_FILES is in the environment, pass --catalogs to xmllint and
-xsltproc. Also pass --nonet to xsltproc to detect future missing stylesheet
-problems.
-
-An earlier version of this patch was filed upstream at
-https://github.com/asciidoc/asciidoc-py3/issues/61 so depending on how that goes
-this could get merged.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/a2x.py b/a2x.py
-index 2d7699a..582d809 100755
---- a/a2x.py
-+++ b/a2x.py
-@@ -57,6 +57,10 @@ LYNX_OPTS = '-dump'
- W3M_OPTS = '-dump -cols 70 -T text/html -no-graph'
- XSLTPROC_OPTS = ''
- 
-+if "SGML_CATALOG_FILES" in os.environ:
-+  XMLLINT += " --catalogs"
-+  XSLTPROC += " --catalogs"
-+
- ######################################################################
- # End of configuration file parameters.
- ######################################################################
-@@ -298,7 +302,7 @@ def exec_xsltproc(xsl_file, xml_file, dst_dir, opts = ''):
-     cwd = os.getcwd()
-     shell_cd(dst_dir)
-     try:
--        shell('"%s" %s "%s" "%s"' % (XSLTPROC, opts, xsl_file, xml_file))
-+        shell('%s %s "%s" "%s"' % (XSLTPROC, opts, xsl_file, xml_file))
-     finally:
-         shell_cd(cwd)
- 
-@@ -483,7 +487,7 @@ class A2X(AttrDict):
-             self.asciidoc_opts += ' --doctype %s' % self.doctype
-         for attr in self.attributes:
-             self.asciidoc_opts += ' --attribute "%s"' % attr
--#        self.xsltproc_opts += ' --nonet'
-+        self.xsltproc_opts += ' --nonet'
-         if self.verbose:
-             self.asciidoc_opts += ' --verbose'
-             self.dblatex_opts += ' -V'
-@@ -634,7 +638,7 @@ class A2X(AttrDict):
-         shell('"%s" --backend docbook -a "a2x-format=%s" %s --out-file "%s" "%s"' %
-              (self.asciidoc, self.format, self.asciidoc_opts, docbook_file, self.asciidoc_file))
-         if not self.no_xmllint and XMLLINT:
--            shell('"%s" --nonet --noout --valid "%s"' % (XMLLINT, docbook_file))
-+            shell('%s --nonet --noout --valid "%s"' % (XMLLINT, docbook_file))
- 
-     def to_xhtml(self):
-         self.to_docbook()
diff --git a/poky/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb b/poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb
similarity index 90%
rename from poky/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb
rename to poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb
index bb4248a..523bf33 100644
--- a/poky/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb
+++ b/poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb
@@ -8,9 +8,8 @@
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
                     file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
 
-SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=main \
-           file://auto-catalogs.patch"
-SRCREV = "8de61a75572b5b8f90c1f87634aa3767472be7a7"
+SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=9.x"
+SRCREV = "9705d428439530104ce55d0ba12e8ef9d1b57ad1"
 
 DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
 
diff --git a/poky/meta/recipes-extended/bash/bash.inc b/poky/meta/recipes-extended/bash/bash.inc
index db32666..d3e1dfd 100644
--- a/poky/meta/recipes-extended/bash/bash.inc
+++ b/poky/meta/recipes-extended/bash/bash.inc
@@ -1,5 +1,6 @@
 SUMMARY = "An sh-compatible command language interpreter"
 HOMEPAGE = "http://tiswww.case.edu/php/chet/bash/bashtop.html"
+DESCRIPTION = "Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features."
 SECTION = "base/shell"
 
 DEPENDS = "ncurses bison-native virtual/libiconv"
diff --git a/poky/meta/recipes-extended/bc/bc_1.07.1.bb b/poky/meta/recipes-extended/bc/bc_1.07.1.bb
index 4a51302..ff3e8f4 100644
--- a/poky/meta/recipes-extended/bc/bc_1.07.1.bb
+++ b/poky/meta/recipes-extended/bc/bc_1.07.1.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Arbitrary precision calculator language"
 HOMEPAGE = "http://www.gnu.org/software/bc/bc.html"
+DESCRIPTION = "bc is an arbitrary precision numeric processing language. Syntax is similar to C, but differs in many substantial areas. It supports interactive execution of statements."
 
 LICENSE = "GPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
diff --git a/poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb b/poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
index 8299521..9cdb71f 100644
--- a/poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
+++ b/poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Password strength checker library"
-HOMEPAGE = "http://sourceforge.net/projects/cracklib"
+HOMEPAGE = "https://github.com/cracklib/cracklib"
+DESCRIPTION = "${SUMMARY}"
 
 LICENSE = "LGPLv2.1+"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
diff --git a/poky/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb b/poky/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
index 02b016f..e726899 100644
--- a/poky/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
+++ b/poky/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
@@ -1,6 +1,7 @@
 SUMMARY = "Collection of autoconf m4 macros"
 SECTION = "base"
 HOMEPAGE = "http://sourceforge.net/projects/cwautomacros.berlios/"
+DESCRIPTION = "A collection of autoconf macros, plus an autogen.sh script that can be used with them."
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
 
diff --git a/poky/meta/recipes-extended/ed/ed_1.17.bb b/poky/meta/recipes-extended/ed/ed_1.17.bb
index e905eed..addf652 100644
--- a/poky/meta/recipes-extended/ed/ed_1.17.bb
+++ b/poky/meta/recipes-extended/ed/ed_1.17.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Line-oriented text editor"
 HOMEPAGE = "http://www.gnu.org/software/ed/"
+DESCRIPTION = "GNU ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. A restricted version of ed, red, can only edit files in the current directory and cannot execute shell commands."
 
 LICENSE = "GPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7 \
diff --git a/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb b/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
index d3f7525..c51f163 100644
--- a/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
+++ b/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
@@ -6,14 +6,15 @@
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 SRC_URI = "git://${GO_IMPORT}"
-SRCREV = "bcf50bfd7dcd8020c90965747d857ae42802e0c5"
+SRCREV = "46695d81d1fae905a270fb7db8a4d11a334562fe"
 UPSTREAM_CHECK_COMMITS = "1"
 
 GO_IMPORT = "github.com/golang/example"
 GO_INSTALL = "${GO_IMPORT}/hello"
 GO_WORKDIR = "${GO_INSTALL}"
+export GO111MODULE="off"
 
-inherit go-mod
+inherit go
 
 # This is just to make clear where this example is
 do_install_append() {
diff --git a/poky/meta/recipes-extended/grep/grep_3.6.bb b/poky/meta/recipes-extended/grep/grep_3.6.bb
index cb009b9..c17b96d 100644
--- a/poky/meta/recipes-extended/grep/grep_3.6.bb
+++ b/poky/meta/recipes-extended/grep/grep_3.6.bb
@@ -1,5 +1,6 @@
 SUMMARY = "GNU grep utility"
 HOMEPAGE = "http://savannah.gnu.org/projects/grep/"
+DESCRIPTION = "Grep searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines."
 BUGTRACKER = "http://savannah.gnu.org/bugs/?group=grep"
 SECTION = "console/utils"
 LICENSE = "GPLv3"
diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb
index 8597ea3..fa6e8a3 100644
--- a/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb
+++ b/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Library for solving packages and reading repositories"
+DESCRIPTION = "This is libsolv, a free package dependency solver using a satisfiability algorithm for solving packages and reading repositories"
 HOMEPAGE = "https://github.com/openSUSE/libsolv"
 BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
 SECTION = "devel"
diff --git a/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb b/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb
index 705ece8..cf7f478 100644
--- a/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb
+++ b/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Lightweight high-performance web server"
 HOMEPAGE = "http://www.lighttpd.net/"
+DESCRIPTION = "Lightweight high-performance web server is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more)"
 BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
 
 LICENSE = "BSD-3-Clause"
diff --git a/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb b/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb
index 270052f..55684ac 100644
--- a/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb
+++ b/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb
@@ -1,6 +1,7 @@
 SUMMARY = "Rotates, compresses, removes and mails system log files"
 SECTION = "console/utils"
-HOMEPAGE = "https://github.com/logrotate/logrotate/issues"
+HOMEPAGE = "https://github.com/logrotate/logrotate/"
+DESCRIPTION = "The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files."
 LICENSE = "GPLv2"
 
 # TODO: Document coreutils dependency. Why not RDEPENDS? Why not busybox?
diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch b/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch
new file mode 100644
index 0000000..c2a70dc
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch
@@ -0,0 +1,40 @@
+From 2d1d6350af1db28ec520e26d0069a0518950b0a1 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 9 Mar 2021 15:21:11 +0000
+Subject: [PATCH 1/3] open_posix_testsuite/generate-makefiles.sh: Avoid
+ inconsistencies with make version
+
+With make 4.1, INSTALL_TARGETS+=<tab> will add a space to the variable whereas
+with make 4.3, it will not. This leads to differing run.sh files in installed
+in packages which is undesireable. If tests is empty we don't have to add
+the line to the makefiles at all which seems like the easiest way to
+avoid the differences in make behaviour.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021386.html]
+
+---
+ .../open_posix_testsuite/scripts/generate-makefiles.sh      | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
+index 200a631db..4b3aaa4a0 100755
+--- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
++++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
+@@ -148,8 +148,12 @@ EOF
+ 
+ 	fi
+ 
+-	cat >> "$makefile.2" <<EOF
++	if [ ! -z "${tests}" ]; then
++		cat >> "$makefile.2" <<EOF
+ INSTALL_TARGETS+=	${tests}
++EOF
++	fi
++	cat >> "$makefile.2" <<EOF
+ MAKE_TARGETS+=		${targets}
+ 
+ EOF
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch b/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch
new file mode 100644
index 0000000..4859c3e
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch
@@ -0,0 +1,310 @@
+From 4030e28f2c2296ba138cb5e2495202f8aec7ba32 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 9 Mar 2021 15:21:36 +0000
+Subject: [PATCH 2/3] Makefile: Avoid wildcard determinism issues
+
+wildcard used in Makefiles preserves the order of the files on disk
+which leads to differences in the order the binaries are linked.
+
+This patch tweaks the usage of wildcard to also have a sort, making
+the binaries reproducible. A previous patch massively improved
+the situation but wider testing showed that these other changes can
+have an effect on some binaries, this patch avoids those issues as
+exposed by our wider testing.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021388.html]
+
+---
+ include/mk/env_post.mk                                     | 2 +-
+ include/mk/module.mk                                       | 2 +-
+ runtest/Makefile                                           | 2 +-
+ scenario_groups/Makefile                                   | 2 +-
+ testcases/commands/ldd/datafiles/Makefile                  | 2 +-
+ testcases/kernel/hotplug/memory_hotplug/Makefile           | 3 ++-
+ testcases/kernel/io/disktest/Makefile                      | 2 +-
+ testcases/kernel/io/disktest/Makefile.linux                | 4 ++--
+ testcases/kernel/sched/hyperthreading/ht_affinity/Makefile | 2 +-
+ testcases/kernel/sched/hyperthreading/ht_enabled/Makefile  | 2 +-
+ testcases/kernel/sched/sched_stress/Makefile               | 2 +-
+ testcases/kernel/syscalls/lchown/Makefile                  | 2 +-
+ testcases/kernel/syscalls/migrate_pages/Makefile           | 2 +-
+ testcases/kernel/syscalls/move_pages/Makefile              | 2 +-
+ testcases/kernel/syscalls/utils/compat_16.mk               | 2 +-
+ testcases/kernel/syscalls/utils/newer_64.mk                | 2 +-
+ testcases/misc/math/float/Makefile                         | 2 +-
+ testcases/network/nfs/nfs_stress/nfs05_make_tree.c         | 4 ++--
+ testcases/network/nfsv4/locks/Makefile                     | 2 +-
+ utils/sctp/func_tests/Makefile                             | 2 +-
+ 20 files changed, 23 insertions(+), 22 deletions(-)
+
+diff --git a/include/mk/env_post.mk b/include/mk/env_post.mk
+index d52ad9f0b..1d22f9c53 100644
+--- a/include/mk/env_post.mk
++++ b/include/mk/env_post.mk
+@@ -47,7 +47,7 @@ LDFLAGS				+= -L$(top_builddir)/lib/android_libpthread
+ LDFLAGS				+= -L$(top_builddir)/lib/android_librt
+ endif
+ 
+-MAKE_TARGETS			?= $(notdir $(patsubst %.c,%,$(wildcard $(abs_srcdir)/*.c)))
++MAKE_TARGETS			?= $(notdir $(patsubst %.c,%,$(sort $(wildcard $(abs_srcdir)/*.c))))
+ MAKE_TARGETS			:= $(filter-out $(FILTER_OUT_MAKE_TARGETS),$(MAKE_TARGETS))
+ 
+ # with only *.dwo, .[0-9]+.dwo can not be cleaned
+diff --git a/include/mk/module.mk b/include/mk/module.mk
+index 95fb8336a..6c8814b96 100644
+--- a/include/mk/module.mk
++++ b/include/mk/module.mk
+@@ -42,7 +42,7 @@ endif
+ 
+ ifneq ($(filter install clean,$(MAKECMDGOALS)),)
+ MAKE_TARGETS := $(filter-out %.ko, $(MAKE_TARGETS))
+-MAKE_TARGETS += $(wildcard *.ko)
++MAKE_TARGETS += $(sort $(wildcard *.ko))
+ endif
+ 
+ CLEAN_TARGETS += .dep_modules *.mod built-in.a
+diff --git a/runtest/Makefile b/runtest/Makefile
+index b7caaee06..6a1565b6a 100644
+--- a/runtest/Makefile
++++ b/runtest/Makefile
+@@ -36,7 +36,7 @@ ifneq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
+ UNWANTED_FILES		+= power_management_tests
+ endif
+ 
+-INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*))))
++INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*)))))
+ 
+ MAKE_TARGETS		:=
+ 
+diff --git a/scenario_groups/Makefile b/scenario_groups/Makefile
+index 2978675d9..fcbc92708 100644
+--- a/scenario_groups/Makefile
++++ b/scenario_groups/Makefile
+@@ -31,7 +31,7 @@ UNWANTED_FILES		:= Makefile
+ 
+ INSTALL_MODE		:= 00644
+ 
+-INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*))))
++INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*)))))
+ 
+ MAKE_TARGETS		:=
+ 
+diff --git a/testcases/commands/ldd/datafiles/Makefile b/testcases/commands/ldd/datafiles/Makefile
+index d8bcf5c06..01c352052 100644
+--- a/testcases/commands/ldd/datafiles/Makefile
++++ b/testcases/commands/ldd/datafiles/Makefile
+@@ -21,7 +21,7 @@ CPPFLAGS		+= -fpic
+ 
+ INSTALL_TARGETS		:= ldd*.so lddfile.out
+ 
+-LDD_C_FILES		:= $(wildcard $(abs_srcdir)/lddfile*.c)
++LDD_C_FILES		:= $(sort $(wildcard $(abs_srcdir)/lddfile*.c))
+ LDD_SO_FILES		:= $(patsubst $(abs_srcdir)/%.c,%.obj.so,$(LDD_C_FILES))
+ MAKE_TARGETS		:= lddfile.out
+ CLEAN_TARGETS		+= *.obj $(LDD_SO_FILES)
+diff --git a/testcases/kernel/hotplug/memory_hotplug/Makefile b/testcases/kernel/hotplug/memory_hotplug/Makefile
+index d1ba65e65..38a77a2ba 100644
+--- a/testcases/kernel/hotplug/memory_hotplug/Makefile
++++ b/testcases/kernel/hotplug/memory_hotplug/Makefile
+@@ -31,6 +31,7 @@ LDLIBS		:= $(filter-out -lltp,$(LDLIBS))
+ 
+ MAKE_TARGETS	:= memtoy
+ 
+-memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c))
++memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c)))
++
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+diff --git a/testcases/kernel/io/disktest/Makefile b/testcases/kernel/io/disktest/Makefile
+index d10d98434..3a3a9cbf0 100644
+--- a/testcases/kernel/io/disktest/Makefile
++++ b/testcases/kernel/io/disktest/Makefile
+@@ -209,7 +209,7 @@ LDLIBS		+= -lpthread
+ 
+ MAKE_TARGETS	:= disktest
+ 
+-OBJS		:= $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c))
++OBJS		:= $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c)))
+ 
+ disktest-$(VER):
+ 	mkdir -p "$@"
+diff --git a/testcases/kernel/io/disktest/Makefile.linux b/testcases/kernel/io/disktest/Makefile.linux
+index ea45b5a57..0f3aab622 100644
+--- a/testcases/kernel/io/disktest/Makefile.linux
++++ b/testcases/kernel/io/disktest/Makefile.linux
+@@ -167,8 +167,8 @@ mandir=/usr/share/man
+ 
+ VER=`grep VER_STR main.h | awk -F\" '{print $$2}'`
+ GBLHDRS=main.h globals.h defs.h
+-ALLHDRS=$(wildcard *.h)
+-SRCS=$(wildcard *.c)
++ALLHDRS=$(sort $(wildcard *.h))
++SRCS=$(sort $(wildcard *.c))
+ OBJS=$(SRCS:.c=.o)
+ 
+ CFLAGS += -g -Wall -O -D"LINUX" -D"_THREAD_SAFE" -D"_GNU_SOURCE" -D"_LARGE_FILES" -D"_LARGEFILE64_SOURCE" -D"_FILE_OFFSET_BITS=64" $(RPM_OPT_FLAGS)
+diff --git a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile
+index 10fec96dc..6b64bd261 100644
+--- a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile
++++ b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile
+@@ -28,6 +28,6 @@ INSTALL_TARGETS		:= smt_smp_affinity.sh
+ 
+ MAKE_TARGETS		:= ht_affinity
+ 
+-$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c))
++$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c)))
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+diff --git a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile
+index 9c1e139d6..585ff1383 100644
+--- a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile
++++ b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile
+@@ -28,6 +28,6 @@ INSTALL_TARGETS		:= smt_smp_enabled.sh
+ 
+ MAKE_TARGETS		:= ht_enabled
+ 
+-$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c))
++$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c)))
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+diff --git a/testcases/kernel/sched/sched_stress/Makefile b/testcases/kernel/sched/sched_stress/Makefile
+index b76126c73..4dbbf3477 100644
+--- a/testcases/kernel/sched/sched_stress/Makefile
++++ b/testcases/kernel/sched/sched_stress/Makefile
+@@ -10,7 +10,7 @@ INSTALL_TARGETS		:= sched_stress.sh
+ 
+ LDLIBS			+= -lpthread
+ 
+-MAKE_TARGETS		:= $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c)))
++MAKE_TARGETS		:= $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c))))
+ 
+ RM			+= -r
+ 
+diff --git a/testcases/kernel/syscalls/lchown/Makefile b/testcases/kernel/syscalls/lchown/Makefile
+index 13d39cb81..305fee281 100644
+--- a/testcases/kernel/syscalls/lchown/Makefile
++++ b/testcases/kernel/syscalls/lchown/Makefile
+@@ -5,7 +5,7 @@ top_srcdir		?= ../../../..
+ 
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+-SRCS			:= $(wildcard $(abs_srcdir)/lchown*.c)
++SRCS			:= $(sort $(wildcard $(abs_srcdir)/lchown*.c))
+ 
+ include $(abs_srcdir)/../utils/compat_16.mk
+ 
+diff --git a/testcases/kernel/syscalls/migrate_pages/Makefile b/testcases/kernel/syscalls/migrate_pages/Makefile
+index 46912b025..9cf3ce526 100644
+--- a/testcases/kernel/syscalls/migrate_pages/Makefile
++++ b/testcases/kernel/syscalls/migrate_pages/Makefile
+@@ -5,7 +5,7 @@ top_srcdir		?= ../../../..
+ 
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+-MAKE_TARGETS		:= $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c))
++MAKE_TARGETS		:= $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c)))
+ $(MAKE_TARGETS): %: migrate_pages_common.o
+ 
+ CPPFLAGS		+= -I$(abs_srcdir)/../utils/
+diff --git a/testcases/kernel/syscalls/move_pages/Makefile b/testcases/kernel/syscalls/move_pages/Makefile
+index cd7ff6349..4b22160ed 100644
+--- a/testcases/kernel/syscalls/move_pages/Makefile
++++ b/testcases/kernel/syscalls/move_pages/Makefile
+@@ -7,7 +7,7 @@ include $(top_srcdir)/include/mk/testcases.mk
+ 
+ CPPFLAGS		+= -I$(abs_srcdir)/../utils
+ 
+-MAKE_TARGETS		:= $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c))
++MAKE_TARGETS		:= $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c)))
+ 
+ $(MAKE_TARGETS): %: move_pages_support.o
+ 
+diff --git a/testcases/kernel/syscalls/utils/compat_16.mk b/testcases/kernel/syscalls/utils/compat_16.mk
+index a0ff8f558..e81a00c40 100644
+--- a/testcases/kernel/syscalls/utils/compat_16.mk
++++ b/testcases/kernel/syscalls/utils/compat_16.mk
+@@ -50,7 +50,7 @@
+ 
+ CPPFLAGS		+= -I$(abs_srcdir) -I$(abs_srcdir)/../utils
+ 
+-SRCS			?= $(wildcard $(abs_srcdir)/*.c)
++SRCS			?= $(sort $(wildcard $(abs_srcdir)/*.c))
+ 
+ MAKE_TARGETS		:= $(notdir $(patsubst %.c,%,$(SRCS)))
+ MAKE_TARGETS_OBJS_WO_COMPAT_16	:= $(addsuffix .o,$(MAKE_TARGETS))
+diff --git a/testcases/kernel/syscalls/utils/newer_64.mk b/testcases/kernel/syscalls/utils/newer_64.mk
+index 8cd7e03c8..5e798057a 100644
+--- a/testcases/kernel/syscalls/utils/newer_64.mk
++++ b/testcases/kernel/syscalls/utils/newer_64.mk
+@@ -25,7 +25,7 @@
+ 
+ CPPFLAGS		+= -I$(abs_srcdir) -I$(abs_srcdir)/../utils
+ 
+-SRCS			?= $(wildcard $(abs_srcdir)/*.c)
++SRCS			?= $(sort $(wildcard $(abs_srcdir)/*.c))
+ 
+ MAKE_TARGETS		:= $(notdir $(patsubst %.c,%,$(SRCS)))
+ 
+diff --git a/testcases/misc/math/float/Makefile b/testcases/misc/math/float/Makefile
+index 79dda35d6..5f4cb0f6c 100644
+--- a/testcases/misc/math/float/Makefile
++++ b/testcases/misc/math/float/Makefile
+@@ -27,6 +27,6 @@ include $(top_srcdir)/include/mk/testcases.mk
+ LDLIBS		+= -lpthread -lm
+ 
+ # main.c doesn't compile...
+-MAKE_TARGETS	:= $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/float*.c))
++MAKE_TARGETS	:= $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/float*.c)))
+ 
+ include $(top_srcdir)/include/mk/generic_trunk_target.mk
+diff --git a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c
+index 12c86799d..23c520d9d 100644
+--- a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c
++++ b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c
+@@ -104,7 +104,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args)
+ 				"\treturn 0;\n}\n";
+ 
+ 	const char make_buf_n[] = "CFLAGS := -O -w -g\n"
+-				  "SRCS=$(wildcard *.c)\n"
++				  "SRCS=$(sort $(wildcard *.c))\n"
+ 				  "TARGETS=$(SRCS:.c=)\n"
+ 				  "all: $(TARGETS)\n"
+ 				  "$(TARGETS): %: %.c\n"
+@@ -114,7 +114,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args)
+ 
+ 	const char make_buf[] = "CFLAGS := -O -w -g\n"
+ 				"SUBDIR = dir\n"
+-				"SRCS=$(wildcard *.c)\n"
++				"SRCS=$(sort $(wildcard *.c))\n"
+ 				"TARGETS=$(SRCS:.c=)\n"
+ 				"all: $(SUBDIR) $(TARGETS)\n"
+ 				"$(TARGETS): %: %.c\n"
+diff --git a/testcases/network/nfsv4/locks/Makefile b/testcases/network/nfsv4/locks/Makefile
+index 5812dea3a..05941c892 100644
+--- a/testcases/network/nfsv4/locks/Makefile
++++ b/testcases/network/nfsv4/locks/Makefile
+@@ -28,6 +28,6 @@ MAKE_TARGETS		:= locktests
+ 
+ LDLIBS			+= -lpthread
+ 
+-$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c))
++$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c)))
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+diff --git a/utils/sctp/func_tests/Makefile b/utils/sctp/func_tests/Makefile
+index d296c652a..a17107853 100644
+--- a/utils/sctp/func_tests/Makefile
++++ b/utils/sctp/func_tests/Makefile
+@@ -30,7 +30,7 @@ LDFLAGS		+= $(addprefix -L$(abs_builddir)/../,lib testlib)
+ 
+ LDLIBS		+= -lsctputil -lsctp -lpthread
+ 
+-V4_TARGETS	:= $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c))
++V4_TARGETS	:= $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c)))
+ 
+ V6_TARGETS	:= test_basic_v6 test_fragments_v6 test_getname_v6 \
+ 		   test_inaddr_any_v6 test_peeloff_v6 \
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch b/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch
new file mode 100644
index 0000000..5ace82d
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch
@@ -0,0 +1,133 @@
+From 0653f1d809d0cc13f84facb9d2d82d984ac4d0ac Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 9 Mar 2021 15:25:16 +0000
+Subject: [PATCH 3/3] syscalls/swapon/swapoff: Move common library to libs/
+
+There is a race/determinism issue with libswapon currently as depending on
+which makefile path builds it, the debug paths may be "../swapon/libswapon.c"
+or "libswapon.c". To avoid the determinism issue, move libswapon to libs/
+and use it from the shared location.
+
+The header is moved to the common includes directory to match and
+the Makefile.inc fragment can be dropped.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021387.html]
+
+---
+ .../kernel/syscalls/swapon => include}/libswapon.h   |  0
+ libs/libltpswapon/Makefile                           | 12 ++++++++++++
+ .../swapon => libs/libltpswapon}/libswapon.c         |  0
+ testcases/kernel/syscalls/swapoff/Makefile           |  7 +++++--
+ testcases/kernel/syscalls/swapoff/Makefile.inc       |  6 ------
+ testcases/kernel/syscalls/swapoff/swapoff01.c        |  2 +-
+ testcases/kernel/syscalls/swapoff/swapoff02.c        |  2 +-
+ testcases/kernel/syscalls/swapon/Makefile            |  6 +++---
+ 8 files changed, 22 insertions(+), 13 deletions(-)
+ rename {testcases/kernel/syscalls/swapon => include}/libswapon.h (100%)
+ create mode 100644 libs/libltpswapon/Makefile
+ rename {testcases/kernel/syscalls/swapon => libs/libltpswapon}/libswapon.c (100%)
+ delete mode 100644 testcases/kernel/syscalls/swapoff/Makefile.inc
+
+diff --git a/testcases/kernel/syscalls/swapon/libswapon.h b/include/libswapon.h
+similarity index 100%
+rename from testcases/kernel/syscalls/swapon/libswapon.h
+rename to include/libswapon.h
+diff --git a/libs/libltpswapon/Makefile b/libs/libltpswapon/Makefile
+new file mode 100644
+index 000000000..8f738338b
+--- /dev/null
++++ b/libs/libltpswapon/Makefile
+@@ -0,0 +1,12 @@
++# SPDX-License-Identifier: GPL-2.0-or-later
++#
++# Copyright (C) Richard Purdie <richard.purdie@linuxfoundation.org>
++
++top_srcdir		?= ../..
++
++include $(top_srcdir)/include/mk/env_pre.mk
++
++INTERNAL_LIB		:= libltpswapon.a
++
++include $(top_srcdir)/include/mk/lib.mk
++include $(top_srcdir)/include/mk/generic_leaf_target.mk
+diff --git a/testcases/kernel/syscalls/swapon/libswapon.c b/libs/libltpswapon/libswapon.c
+similarity index 100%
+rename from testcases/kernel/syscalls/swapon/libswapon.c
+rename to libs/libltpswapon/libswapon.c
+diff --git a/testcases/kernel/syscalls/swapoff/Makefile b/testcases/kernel/syscalls/swapoff/Makefile
+index fbfbe0441..a74374605 100644
+--- a/testcases/kernel/syscalls/swapoff/Makefile
++++ b/testcases/kernel/syscalls/swapoff/Makefile
+@@ -3,7 +3,10 @@
+ 
+ top_srcdir		?= ../../../..
+ 
++LTPLIBS = ltpswapon
++
+ include $(top_srcdir)/include/mk/testcases.mk
+-include $(abs_srcdir)/./Makefile.inc
++
++LTPLDLIBS  = -lltpswapon
++
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+-$(MAKE_TARGETS): %: ../swapon/libswapon.o
+diff --git a/testcases/kernel/syscalls/swapoff/Makefile.inc b/testcases/kernel/syscalls/swapoff/Makefile.inc
+deleted file mode 100644
+index 65350cbeb..000000000
+--- a/testcases/kernel/syscalls/swapoff/Makefile.inc
++++ /dev/null
+@@ -1,6 +0,0 @@
+-LIBDIR			+= ../swapon/
+-LIBSWAPON		:= $(LIBDIR)/libswapon.o
+-$(LIBSWAPON):
+-	$(MAKE) -C $(LIBDIR)
+-CPPFLAGS		+= -I$(abs_srcdir)/$(LIBDIR)
+-LDFLAGS			+= -L$(abs_builddir)/$(LIBDIR)
+diff --git a/testcases/kernel/syscalls/swapoff/swapoff01.c b/testcases/kernel/syscalls/swapoff/swapoff01.c
+index e115269c0..87a217a89 100644
+--- a/testcases/kernel/syscalls/swapoff/swapoff01.c
++++ b/testcases/kernel/syscalls/swapoff/swapoff01.c
+@@ -25,7 +25,7 @@
+ #include <stdlib.h>
+ #include "config.h"
+ #include "lapi/syscalls.h"
+-#include "../swapon/libswapon.h"
++#include "libswapon.h"
+ 
+ static void setup(void);
+ static void cleanup(void);
+diff --git a/testcases/kernel/syscalls/swapoff/swapoff02.c b/testcases/kernel/syscalls/swapoff/swapoff02.c
+index 8954f975f..60cd66c26 100644
+--- a/testcases/kernel/syscalls/swapoff/swapoff02.c
++++ b/testcases/kernel/syscalls/swapoff/swapoff02.c
+@@ -33,7 +33,7 @@
+ #include "test.h"
+ #include "lapi/syscalls.h"
+ #include "safe_macros.h"
+-#include "../swapon/libswapon.h"
++#include "libswapon.h"
+ 
+ static void setup(void);
+ static void cleanup(void);
+diff --git a/testcases/kernel/syscalls/swapon/Makefile b/testcases/kernel/syscalls/swapon/Makefile
+index 97113a447..57ec45d48 100644
+--- a/testcases/kernel/syscalls/swapon/Makefile
++++ b/testcases/kernel/syscalls/swapon/Makefile
+@@ -8,10 +8,10 @@ endif
+ 
+ top_srcdir		?= ../../../..
+ 
++LTPLIBS = ltpswapon
++
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+-FILTER_OUT_MAKE_TARGETS         := libswapon
++LTPLDLIBS  = -lltpswapon
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+-
+-$(MAKE_TARGETS): %: libswapon.o
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/libswapon.patch b/poky/meta/recipes-extended/ltp/ltp/libswapon.patch
new file mode 100644
index 0000000..07b0dce
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/libswapon.patch
@@ -0,0 +1,368 @@
+Index: git/libs/libltpswapon/Makefile
+===================================================================
+--- /dev/null
++++ git/libs/libltpswapon/Makefile
+@@ -0,0 +1,12 @@
++# SPDX-License-Identifier: GPL-2.0-or-later
++#
++# Copyright (C) Richard Purdie <richard.purdie@linuxfoundation.org>
++
++top_srcdir		?= ../..
++
++include $(top_srcdir)/include/mk/env_pre.mk
++
++INTERNAL_LIB		:= libltpswapon.a
++
++include $(top_srcdir)/include/mk/lib.mk
++include $(top_srcdir)/include/mk/generic_leaf_target.mk
+Index: git/libs/libltpswapon/libswapon.c
+===================================================================
+--- /dev/null
++++ git/libs/libltpswapon/libswapon.c
+@@ -0,0 +1,90 @@
++/*
++ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it would be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write the Free Software Foundation,
++ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
++ *
++ * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
++ *
++ */
++
++#include <errno.h>
++#include "lapi/syscalls.h"
++#include "test.h"
++#include "libswapon.h"
++
++/*
++ * Make a swap file
++ */
++int make_swapfile(void (cleanup)(void), const char *swapfile, int safe)
++{
++	if (!tst_fs_has_free(NULL, ".", sysconf(_SC_PAGESIZE) * 10,
++	    TST_BYTES)) {
++		tst_brkm(TBROK, cleanup,
++			"Insufficient disk space to create swap file");
++	}
++
++	/* create file */
++	if (tst_fill_file(swapfile, 0,
++			sysconf(_SC_PAGESIZE), 10) != 0) {
++		tst_brkm(TBROK, cleanup, "Failed to create swapfile");
++	}
++
++	/* make the file swapfile */
++	const char *argv[2 + 1];
++	argv[0] = "mkswap";
++	argv[1] = swapfile;
++	argv[2] = NULL;
++
++	return tst_cmd(cleanup, argv, "/dev/null", "/dev/null", safe);
++}
++
++/*
++ * Check swapon/swapoff support status of filesystems or files
++ * we are testing on.
++ */
++void is_swap_supported(void (cleanup)(void), const char *filename)
++{
++	int fibmap = tst_fibmap(filename);
++	long fs_type = tst_fs_type(cleanup, filename);
++	const char *fstype = tst_fs_type_name(fs_type);
++
++	int ret = make_swapfile(NULL, filename, 1);
++	if (ret != 0) {
++		if (fibmap == 1) {
++			tst_brkm(TCONF, cleanup,
++				"mkswap on %s not supported", fstype);
++		} else {
++			tst_brkm(TFAIL, cleanup,
++				"mkswap on %s failed", fstype);
++		}
++	}
++
++	TEST(ltp_syscall(__NR_swapon, filename, 0));
++	if (TEST_RETURN == -1) {
++		if (fibmap == 1 && errno == EINVAL) {
++			tst_brkm(TCONF, cleanup,
++				"Swapfile on %s not implemented", fstype);
++		} else {
++			tst_brkm(TFAIL | TERRNO, cleanup,
++				 "swapon on %s failed", fstype);
++		}
++	}
++
++	TEST(ltp_syscall(__NR_swapoff, filename, 0));
++	if (TEST_RETURN == -1) {
++		tst_brkm(TFAIL | TERRNO, cleanup,
++			"swapoff on %s failed", fstype);
++	}
++}
+Index: git/testcases/kernel/syscalls/swapoff/Makefile
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapoff/Makefile
++++ git/testcases/kernel/syscalls/swapoff/Makefile
+@@ -3,7 +3,11 @@
+ 
+ top_srcdir		?= ../../../..
+ 
++LTPLIBS = ltpswapon
++ 
+ include $(top_srcdir)/include/mk/testcases.mk
+-include $(abs_srcdir)/./Makefile.inc
++
++LTPLDLIBS  = -lltpswapon
++
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+-$(MAKE_TARGETS): %: ../swapon/libswapon.o
++
+Index: git/testcases/kernel/syscalls/swapoff/Makefile.inc
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapoff/Makefile.inc
++++ /dev/null
+@@ -1,6 +0,0 @@
+-LIBDIR			+= ../swapon/
+-LIBSWAPON		:= $(LIBDIR)/libswapon.o
+-$(LIBSWAPON):
+-	$(MAKE) -C $(LIBDIR)
+-CPPFLAGS		+= -I$(abs_srcdir)/$(LIBDIR)
+-LDFLAGS			+= -L$(abs_builddir)/$(LIBDIR)
+Index: git/testcases/kernel/syscalls/swapon/Makefile
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapon/Makefile
++++ git/testcases/kernel/syscalls/swapon/Makefile
+@@ -8,10 +8,10 @@ endif
+ 
+ top_srcdir		?= ../../../..
+ 
++LTPLIBS = ltpswapon
++
+ include $(top_srcdir)/include/mk/testcases.mk
+ 
+-FILTER_OUT_MAKE_TARGETS         := libswapon
++LTPLDLIBS  = -lltpswapon
+ 
+ include $(top_srcdir)/include/mk/generic_leaf_target.mk
+-
+-$(MAKE_TARGETS): %: libswapon.o
+Index: git/testcases/kernel/syscalls/swapon/libswapon.c
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapon/libswapon.c
++++ /dev/null
+@@ -1,90 +0,0 @@
+-/*
+- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License as
+- * published by the Free Software Foundation; either version 2 of
+- * the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it would be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write the Free Software Foundation,
+- * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+- *
+- * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
+- *
+- */
+-
+-#include <errno.h>
+-#include "lapi/syscalls.h"
+-#include "test.h"
+-#include "libswapon.h"
+-
+-/*
+- * Make a swap file
+- */
+-int make_swapfile(void (cleanup)(void), const char *swapfile, int safe)
+-{
+-	if (!tst_fs_has_free(NULL, ".", sysconf(_SC_PAGESIZE) * 10,
+-	    TST_BYTES)) {
+-		tst_brkm(TBROK, cleanup,
+-			"Insufficient disk space to create swap file");
+-	}
+-
+-	/* create file */
+-	if (tst_fill_file(swapfile, 0,
+-			sysconf(_SC_PAGESIZE), 10) != 0) {
+-		tst_brkm(TBROK, cleanup, "Failed to create swapfile");
+-	}
+-
+-	/* make the file swapfile */
+-	const char *argv[2 + 1];
+-	argv[0] = "mkswap";
+-	argv[1] = swapfile;
+-	argv[2] = NULL;
+-
+-	return tst_cmd(cleanup, argv, "/dev/null", "/dev/null", safe);
+-}
+-
+-/*
+- * Check swapon/swapoff support status of filesystems or files
+- * we are testing on.
+- */
+-void is_swap_supported(void (cleanup)(void), const char *filename)
+-{
+-	int fibmap = tst_fibmap(filename);
+-	long fs_type = tst_fs_type(cleanup, filename);
+-	const char *fstype = tst_fs_type_name(fs_type);
+-
+-	int ret = make_swapfile(NULL, filename, 1);
+-	if (ret != 0) {
+-		if (fibmap == 1) {
+-			tst_brkm(TCONF, cleanup,
+-				"mkswap on %s not supported", fstype);
+-		} else {
+-			tst_brkm(TFAIL, cleanup,
+-				"mkswap on %s failed", fstype);
+-		}
+-	}
+-
+-	TEST(ltp_syscall(__NR_swapon, filename, 0));
+-	if (TEST_RETURN == -1) {
+-		if (fibmap == 1 && errno == EINVAL) {
+-			tst_brkm(TCONF, cleanup,
+-				"Swapfile on %s not implemented", fstype);
+-		} else {
+-			tst_brkm(TFAIL | TERRNO, cleanup,
+-				 "swapon on %s failed", fstype);
+-		}
+-	}
+-
+-	TEST(ltp_syscall(__NR_swapoff, filename, 0));
+-	if (TEST_RETURN == -1) {
+-		tst_brkm(TFAIL | TERRNO, cleanup,
+-			"swapoff on %s failed", fstype);
+-	}
+-}
+Index: git/testcases/kernel/syscalls/swapon/libswapon.h
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapon/libswapon.h
++++ /dev/null
+@@ -1,39 +0,0 @@
+-/*
+- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License as
+- * published by the Free Software Foundation; either version 2 of
+- * the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it would be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write the Free Software Foundation,
+- * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+- *
+- * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
+- *
+- */
+-
+-/*
+- * Contains common content for all swapon tests
+- */
+-
+-#ifndef __LIBSWAPON_H__
+-#define __LIBSWAPON_H__
+-
+-/*
+- * Make a swap file
+- */
+-int make_swapfile(void (cleanup)(void), const char *swapfile, int safe);
+-
+-/*
+- * Check swapon/swapoff support status of filesystems or files
+- * we are testing on.
+- */
+-void is_swap_supported(void (cleanup)(void), const char *filename);
+-#endif /* __LIBSWAPON_H__ */
+Index: git/testcases/kernel/syscalls/swapoff/swapoff01.c
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapoff/swapoff01.c
++++ git/testcases/kernel/syscalls/swapoff/swapoff01.c
+@@ -25,7 +25,7 @@
+ #include <stdlib.h>
+ #include "config.h"
+ #include "lapi/syscalls.h"
+-#include "../swapon/libswapon.h"
++#include "libswapon.h"
+ 
+ static void setup(void);
+ static void cleanup(void);
+Index: git/testcases/kernel/syscalls/swapoff/swapoff02.c
+===================================================================
+--- git.orig/testcases/kernel/syscalls/swapoff/swapoff02.c
++++ git/testcases/kernel/syscalls/swapoff/swapoff02.c
+@@ -33,7 +33,7 @@
+ #include "test.h"
+ #include "lapi/syscalls.h"
+ #include "safe_macros.h"
+-#include "../swapon/libswapon.h"
++#include "libswapon.h"
+ 
+ static void setup(void);
+ static void cleanup(void);
+Index: git/include/libswapon.h
+===================================================================
+--- /dev/null
++++ git/include/libswapon.h
+@@ -0,0 +1,39 @@
++/*
++ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it would be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write the Free Software Foundation,
++ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
++ *
++ * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
++ *
++ */
++
++/*
++ * Contains common content for all swapon tests
++ */
++
++#ifndef __LIBSWAPON_H__
++#define __LIBSWAPON_H__
++
++/*
++ * Make a swap file
++ */
++int make_swapfile(void (cleanup)(void), const char *swapfile, int safe);
++
++/*
++ * Check swapon/swapoff support status of filesystems or files
++ * we are testing on.
++ */
++void is_swap_supported(void (cleanup)(void), const char *filename);
++#endif /* __LIBSWAPON_H__ */
diff --git a/poky/meta/recipes-extended/ltp/ltp_20210121.bb b/poky/meta/recipes-extended/ltp/ltp_20210121.bb
index 593f070..f58ca2e 100644
--- a/poky/meta/recipes-extended/ltp/ltp_20210121.bb
+++ b/poky/meta/recipes-extended/ltp/ltp_20210121.bb
@@ -30,8 +30,8 @@
 SRCREV = "4d005621edd109d119627eb9210b224a63bf22cb"
 
 # remove at next version upgrade or when output changes
-PR = "r1"
-HASHEQUIV_HASH_VERSION .= ".1"
+PR = "r4"
+HASHEQUIV_HASH_VERSION .= ".4"
 
 SRC_URI = "git://github.com/linux-test-project/ltp.git \
            file://0001-build-Add-option-to-select-libc-implementation.patch \
@@ -39,6 +39,9 @@
            file://0001-Add-more-musl-exclusions.patch \
            file://0001-Remove-OOM-tests-from-runtest-mm.patch \
            file://determinism.patch \
+           file://0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch \
+           file://0002-Makefile-Avoid-wildcard-determinism-issues.patch \
+           file://0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -56,14 +59,6 @@
 # ltp network/rpc test cases ftbfs when libtirpc is found
 EXTRA_OECONF += " --without-tirpc "
 
-do_compile_prepend() {
-	# Reported at http://lists.linux.it/pipermail/ltp/2021-March/021274.html
-	# Avoid a race over construction of libswapon.o which is built by swapon and swapoff
-	# but the object differs depending upon which one built it
-	# ("../swapon/libswapon.c" vs "libswapon.c" references)
-	make -C ${B}/testcases/kernel/syscalls/swapon/
-}
-
 do_install(){
     install -d ${D}${prefix}/
     oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install
diff --git a/poky/meta/recipes-extended/lzip/lzip_1.22.bb b/poky/meta/recipes-extended/lzip/lzip_1.22.bb
index d21c36a..3360269 100644
--- a/poky/meta/recipes-extended/lzip/lzip_1.22.bb
+++ b/poky/meta/recipes-extended/lzip/lzip_1.22.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Lossless data compressor based on the LZMA algorithm"
 HOMEPAGE = "http://lzip.nongnu.org/lzip.html"
+DESCRIPTION = "Lzip is a lossless data compressor with a user interface similar to the one of gzip or bzip2. Lzip uses a simplified form of the Lempel-Ziv-Markov chain-Algorithm (LZMA) stream format, chosen to maximize safety and interoperability."
 SECTION = "console/utils"
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
diff --git a/poky/meta/recipes-extended/man-db/man-db_2.9.4.bb b/poky/meta/recipes-extended/man-db/man-db_2.9.4.bb
index 432953a..cfa6561 100644
--- a/poky/meta/recipes-extended/man-db/man-db_2.9.4.bb
+++ b/poky/meta/recipes-extended/man-db/man-db_2.9.4.bb
@@ -1,5 +1,6 @@
 SUMMARY = "An implementation of the standard Unix documentation system accessed using the man command"
 HOMEPAGE = "http://man-db.nongnu.org/"
+DESCRIPTION = "man-db is an implementation of the standard Unix documentation system accessed using the man command. It uses a Berkeley DB database in place of the traditional flat-text whatis databases."
 LICENSE = "LGPLv2.1 & GPLv2"
 LIC_FILES_CHKSUM = "file://docs/COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
                     file://docs/COPYING;md5=eb723b61539feef013de476e68b5c50a"
diff --git a/poky/meta/recipes-extended/mc/mc_4.8.26.bb b/poky/meta/recipes-extended/mc/mc_4.8.26.bb
index 3eb1930..5c5e679 100644
--- a/poky/meta/recipes-extended/mc/mc_4.8.26.bb
+++ b/poky/meta/recipes-extended/mc/mc_4.8.26.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Midnight Commander is an ncurses based file manager"
 HOMEPAGE = "http://www.midnight-commander.org/"
+DESCRIPTION = "GNU Midnight Commander is a visual file manager, licensed under GNU General Public License and therefore qualifies as Free Software. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included."
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=270bbafe360e73f9840bd7981621f9c2"
 SECTION = "console/utils"
diff --git a/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb b/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
index 001d333..bb77759 100644
--- a/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
+++ b/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Tool for managing software RAID under Linux"
 HOMEPAGE = "http://www.kernel.org/pub/linux/utils/raid/mdadm/"
+DESCRIPTION = "mdadm is a Linux utility used to manage and monitor software RAID devices."
 
 # Some files are GPLv2+ while others are GPLv2.
 LICENSE = "GPLv2 & GPLv2+"
diff --git a/poky/meta/recipes-extended/mingetty/mingetty_1.08.bb b/poky/meta/recipes-extended/mingetty/mingetty_1.08.bb
index 491b892..9822e86 100644
--- a/poky/meta/recipes-extended/mingetty/mingetty_1.08.bb
+++ b/poky/meta/recipes-extended/mingetty/mingetty_1.08.bb
@@ -1,6 +1,7 @@
 SUMMARY = "Compact getty terminal handler for virtual consoles only"
 SECTION = "console/utils"
 HOMEPAGE = "http://sourceforge.net/projects/mingetty/"
+DESCRIPTION = "This is a small Linux console getty that is started on the Linux text console, asks for a login name and then tranfers over to login directory. Is extended to allow automatic login and starting any app."
 LICENSE = "GPLv2"
 PR = "r3"
 
diff --git a/poky/meta/recipes-extended/msmtp/msmtp_1.8.14.bb b/poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb
similarity index 91%
rename from poky/meta/recipes-extended/msmtp/msmtp_1.8.14.bb
rename to poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb
index 3bd5f9e..e85873e 100644
--- a/poky/meta/recipes-extended/msmtp/msmtp_1.8.14.bb
+++ b/poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb
@@ -11,7 +11,7 @@
 UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
 
 SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[sha256sum] = "d56f065d711486e9c234618515a02a48a48dab4051b34f3e108fbecb6fb773b4"
+SRC_URI[sha256sum] = "2265dc639ebf2edf3069fffe0a3bd76749f8b58f4001d5cdeae19873949099ce"
 
 inherit gettext autotools update-alternatives pkgconfig
 
diff --git a/poky/meta/recipes-extended/parted/parted_3.4.bb b/poky/meta/recipes-extended/parted/parted_3.4.bb
index 79dad54..c15f5ae 100644
--- a/poky/meta/recipes-extended/parted/parted_3.4.bb
+++ b/poky/meta/recipes-extended/parted/parted_3.4.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Disk partition editing/resizing utility"
 HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
+DESCRIPTION = "GNU Parted manipulates partition tables. This is useful for creating space for new operating systems, reorganizing disk usage, copying data on hard disks and disk imaging."
 LICENSE = "GPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
 SECTION = "console/tools"
diff --git a/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb b/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb
index 9f992d3..409a8f3 100644
--- a/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb
+++ b/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb
@@ -1,5 +1,7 @@
 SUMMARY = "Convert::ASN1 - Perl ASN.1 Encode/Decode library"
 SECTION = "libs"
+HOMEPAGE = "https://metacpan.org/source/GBARR/Convert-ASN1-0.27"
+DESCRIPTION = "Convert::ASN1 is a perl library for encoding/decoding data using ASN.1 definitions."
 LICENSE = "Artistic-1.0 | GPL-1.0+"
 LIC_FILES_CHKSUM = "file://README.md;beginline=91;endline=97;md5=ceff7fd286eb6d8e8e0d3d23e096a63f"
 
diff --git a/poky/meta/recipes-extended/perl/libtimedate-perl_2.30.bb b/poky/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
index d42eadb..46843bf 100644
--- a/poky/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
+++ b/poky/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Perl modules useful for manipulating date and time information"
 HOMEPAGE = "https://metacpan.org/release/TimeDate"
+DESCRIPTION = "This is the perl5 TimeDate distribution. It requires perl version 5.003 or later."
 SECTION = "libs"
 # You can redistribute it and/or modify it under the same terms as Perl itself.
 LICENSE = "Artistic-1.0 | GPL-1.0+"
diff --git a/poky/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch b/poky/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch
new file mode 100644
index 0000000..c92ad28
--- /dev/null
+++ b/poky/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch
@@ -0,0 +1,44 @@
+From 22f8d25567b8d64bdbab0fb0b4915b4362561d9b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 24 Feb 2021 21:14:31 +0000
+Subject: [PATCH] w.c: correct musl builds
+
+No need to redefine UT_ stuff to something that does not exist.
+
+UT_ is already provided in musl but via utmp.h header, so include
+it always.
+
+Upstream-Status: Submitted [https://gitlab.com/procps-ng/procps/-/merge_requests/126]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ w.c | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/w.c b/w.c
+index 9d07ac9..d10639b 100644
+--- a/w.c
++++ b/w.c
+@@ -57,9 +57,8 @@
+ #include <unistd.h>
+ #ifdef HAVE_UTMPX_H
+ #	include <utmpx.h>
+-#else
+-#	include <utmp.h>
+ #endif
++#include <utmp.h>
+ #include <arpa/inet.h>
+ 
+ static int ignoreuser = 0;	/* for '-u' */
+@@ -72,12 +71,6 @@ typedef struct utmpx utmp_t;
+ typedef struct utmp utmp_t;
+ #endif
+ 
+-#if !defined(UT_HOSTSIZE) || defined(__UT_HOSTSIZE)
+-#	define UT_HOSTSIZE __UT_HOSTSIZE
+-#	define UT_LINESIZE __UT_LINESIZE
+-#	define UT_NAMESIZE __UT_NAMESIZE
+-#endif
+-
+ #ifdef W_SHOWFROM
+ # define FROM_STRING "on"
+ #else
diff --git a/poky/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch b/poky/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch
new file mode 100644
index 0000000..5fa1ac9
--- /dev/null
+++ b/poky/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch
@@ -0,0 +1,23 @@
+From 4f964821398dff7ab21fec63da15e1e00b2e9277 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 24 Feb 2021 21:16:14 +0000
+Subject: [PATCH] proc/escape.c: add missing include
+
+Upstream-Status: Submitted [https://gitlab.com/procps-ng/procps/-/merge_requests/126]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ proc/escape.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/proc/escape.c b/proc/escape.c
+index 2e8fb7d..e1f4612 100644
+--- a/proc/escape.c
++++ b/proc/escape.c
+@@ -21,6 +21,7 @@
+ #include <sys/types.h>
+ #include <string.h>
+ #include <limits.h>
++#include <langinfo.h>
+ #include "procps.h"
+ #include "escape.h"
+ #include "readproc.h"
diff --git a/poky/meta/recipes-extended/procps/procps_3.3.16.bb b/poky/meta/recipes-extended/procps/procps_3.3.17.bb
similarity index 95%
rename from poky/meta/recipes-extended/procps/procps_3.3.16.bb
rename to poky/meta/recipes-extended/procps/procps_3.3.17.bb
index ef3ac86..c74a901 100644
--- a/poky/meta/recipes-extended/procps/procps_3.3.16.bb
+++ b/poky/meta/recipes-extended/procps/procps_3.3.17.bb
@@ -14,8 +14,10 @@
 
 SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https \
            file://sysctl.conf \
+           file://0001-w.c-correct-musl-builds.patch \
+           file://0002-proc-escape.c-add-missing-include.patch \
            "
-SRCREV = "59c88e18f29000ceaf7e5f98181b07be443cf12f"
+SRCREV = "19a508ea121c0c4ac6d0224575a036de745eaaf8"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-extended/quota/quota_4.06.bb b/poky/meta/recipes-extended/quota/quota_4.06.bb
index 19ccbd5..027b081 100644
--- a/poky/meta/recipes-extended/quota/quota_4.06.bb
+++ b/poky/meta/recipes-extended/quota/quota_4.06.bb
@@ -1,6 +1,7 @@
 SUMMARY = "Tools for monitoring & limiting user disk usage per filesystem"
 SECTION = "base"
 HOMEPAGE = "http://sourceforge.net/projects/linuxquota/"
+DESCRIPTION = "Tools and patches for the Linux Diskquota system as part of the Linux kernel"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=18136&atid=118136"
 LICENSE = "BSD & GPLv2+ & LGPLv2.1+"
 LIC_FILES_CHKSUM = "file://rquota_server.c;beginline=1;endline=20;md5=fe7e0d7e11c6f820f8fa62a5af71230f \
diff --git a/poky/meta/recipes-extended/sed/sed_4.8.bb b/poky/meta/recipes-extended/sed/sed_4.8.bb
index 048db47..57a769e 100644
--- a/poky/meta/recipes-extended/sed/sed_4.8.bb
+++ b/poky/meta/recipes-extended/sed/sed_4.8.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Stream EDitor (text filtering utility)"
 HOMEPAGE = "http://www.gnu.org/software/sed/"
+DESCRIPTION = "sed (stream editor) is a non-interactive command-line text editor."
 LICENSE = "GPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e \
                     file://sed/sed.h;beginline=1;endline=15;md5=fb3c7e6fbca6f66943859153d4be8efe \
diff --git a/poky/meta/recipes-extended/shadow/shadow.inc b/poky/meta/recipes-extended/shadow/shadow.inc
index 4ae7a78..2278541 100644
--- a/poky/meta/recipes-extended/shadow/shadow.inc
+++ b/poky/meta/recipes-extended/shadow/shadow.inc
@@ -1,5 +1,6 @@
 SUMMARY = "Tools to change and administer password and group data"
 HOMEPAGE = "http://github.com/shadow-maint/shadow"
+DESCRIPTION = "${SUMMARY}"
 BUGTRACKER = "http://github.com/shadow-maint/shadow/issues"
 SECTION = "base/utils"
 LICENSE = "BSD | Artistic-1.0"
diff --git a/poky/meta/recipes-extended/shadow/shadow_4.8.1.bb b/poky/meta/recipes-extended/shadow/shadow_4.8.1.bb
index c975395..ff4aad9 100644
--- a/poky/meta/recipes-extended/shadow/shadow_4.8.1.bb
+++ b/poky/meta/recipes-extended/shadow/shadow_4.8.1.bb
@@ -6,5 +6,6 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-
-
+# Severity is low and marked as closed and won't fix.
+# https://bugzilla.redhat.com/show_bug.cgi?id=884658
+CVE_CHECK_WHITELIST += "CVE-2013-4235"
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.03.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.05.bb
similarity index 89%
rename from poky/meta/recipes-extended/stress-ng/stress-ng_0.12.03.bb
rename to poky/meta/recipes-extended/stress-ng/stress-ng_0.12.05.bb
index 73539c9..eb6bdb4 100644
--- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.03.bb
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.05.bb
@@ -9,7 +9,7 @@
            file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \
            file://no_daddr_t.patch \
            "
-SRC_URI[sha256sum] = "f27ff439b76a17641291d4234c73655cddcb0a5a588441d6ade290b06ca4b805"
+SRC_URI[sha256sum] = "af7779aee38e6d94726ed7d5cf36384a64d50c86e42fff89c141d8609913f425"
 
 DEPENDS = "coreutils-native"
 
diff --git a/poky/meta/recipes-extended/sudo/sudo.inc b/poky/meta/recipes-extended/sudo/sudo.inc
index 97ecabe..0bea35a 100644
--- a/poky/meta/recipes-extended/sudo/sudo.inc
+++ b/poky/meta/recipes-extended/sudo/sudo.inc
@@ -49,3 +49,5 @@
 do_install_prepend (){
 	mkdir -p ${D}/${localstatedir}/lib
 }
+
+CVE_VERSION_SUFFIX = "patch"
diff --git a/poky/meta/recipes-extended/sudo/sudo_1.9.5p2.bb b/poky/meta/recipes-extended/sudo/sudo_1.9.6p1.bb
similarity index 95%
rename from poky/meta/recipes-extended/sudo/sudo_1.9.5p2.bb
rename to poky/meta/recipes-extended/sudo/sudo_1.9.6p1.bb
index ca23e94..b333459 100644
--- a/poky/meta/recipes-extended/sudo/sudo_1.9.5p2.bb
+++ b/poky/meta/recipes-extended/sudo/sudo_1.9.6p1.bb
@@ -7,7 +7,7 @@
 
 PAM_SRC_URI = "file://sudo.pam"
 
-SRC_URI[sha256sum] = "539e2ef43c8a55026697fb0474ab6a925a11206b5aa58710cb42a0e1c81f0978"
+SRC_URI[sha256sum] = "a9e9cdc058fafeb9cd3ebfb864c81755e524d98aa022152763f25bce8ca3ca90"
 
 DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
 RDEPENDS_${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
diff --git a/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.1.bb b/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.2.bb
similarity index 96%
rename from poky/meta/recipes-extended/sysklogd/sysklogd_2.2.1.bb
rename to poky/meta/recipes-extended/sysklogd/sysklogd_2.2.2.bb
index aa3f126..5dfeca5 100644
--- a/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.1.bb
+++ b/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.2.bb
@@ -14,7 +14,7 @@
            file://sysklogd \
            "
 
-SRCREV = "b115c7ec4e6d9f3587ac8d212bfc454bfbfe7023"
+SRCREV = "f507ed8ff3f1e9d71bb6f85acbf5d14b2fa4e5f7"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb b/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
index ec04bfe..a942ac2 100644
--- a/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
+++ b/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Fake version of the texinfo utility suite"
 SECTION = "console/utils"
+DESCRIPTION = "${SUMMARY}"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d6bb62e73ca8b901d3f2e9d71542f4bb"
 DEPENDS = ""
diff --git a/poky/meta/recipes-extended/unzip/unzip_6.0.bb b/poky/meta/recipes-extended/unzip/unzip_6.0.bb
index c1ea0a9..0c56a39 100644
--- a/poky/meta/recipes-extended/unzip/unzip_6.0.bb
+++ b/poky/meta/recipes-extended/unzip/unzip_6.0.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Utilities for extracting and viewing files in .zip archives"
 HOMEPAGE = "http://www.info-zip.org"
+DESCRIPTION = "Info-ZIP's purpose is to provide free, portable, high-quality versions of the Zip and UnZip compressor-archiver utilities that are compatible with the DOS-based PKZIP by PKWARE, Inc."
 SECTION = "console/utils"
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=94caec5a51ef55ef711ee4e8b1c69e29"
diff --git a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
index 4f0f953..2787b27 100644
--- a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
+++ b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Socket-based service activation daemon"
 HOMEPAGE = "https://github.com/xinetd-org/xinetd"
+DESCRIPTION = "xinetd is a powerful replacement for inetd, xinetd has access control mechanisms, extensive logging capabilities, the ability to make services available based on time, can place limits on the number of servers that can be started, and has deployable defence mechanisms to protect against port scanners, among other things."
 
 # xinetd is a BSD-like license
 # Apple and Gentoo say BSD here.
diff --git a/poky/meta/recipes-extended/xz/xz_5.2.5.bb b/poky/meta/recipes-extended/xz/xz_5.2.5.bb
index af21b60..f5f5c31 100644
--- a/poky/meta/recipes-extended/xz/xz_5.2.5.bb
+++ b/poky/meta/recipes-extended/xz/xz_5.2.5.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Utilities for managing LZMA compressed files"
 HOMEPAGE = "https://tukaani.org/xz/"
+DESCRIPTION = "XZ Utils is free general-purpose data compression software with a high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils."
 SECTION = "base"
 
 # The source includes bits of PD, GPLv2, GPLv3, LGPLv2.1+, but the only file
diff --git a/poky/meta/recipes-extended/zip/zip_3.0.bb b/poky/meta/recipes-extended/zip/zip_3.0.bb
index 97e5e57..18b5d86 100644
--- a/poky/meta/recipes-extended/zip/zip_3.0.bb
+++ b/poky/meta/recipes-extended/zip/zip_3.0.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Compressor/archiver for creating and modifying .zip files"
 HOMEPAGE = "http://www.info-zip.org"
+DESCRIPTION = "Info-ZIP's purpose is to provide free, portable, high-quality versions of the Zip and UnZip compressor-archiver utilities that are compatible with the DOS-based PKZIP by PKWARE, Inc."
 SECTION = "console/utils"
 
 LICENSE = "BSD-3-Clause"
diff --git a/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch b/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch
index 178124a..b5ffb95 100644
--- a/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch
+++ b/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch
@@ -1,4 +1,4 @@
-From 8d01b0753162681dcdbb7cf56f1e393c261e3eb0 Mon Sep 17 00:00:00 2001
+From 986c7917aef632745cb3388a86a2f62347d5a0a5 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Wed, 23 Dec 2020 19:14:32 +0100
 Subject: [PATCH] Makefile: sort all wildcard file list expansions
@@ -8,6 +8,7 @@
 
 Upstream-Status: Pending
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
  programs/Makefile   | 10 +++++-----
  tests/Makefile      |  4 ++--
@@ -15,10 +16,10 @@
  3 files changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/programs/Makefile b/programs/Makefile
-index 8641d0ee..26fee45f 100644
+index 936f3c80..b8200fae 100644
 --- a/programs/Makefile
 +++ b/programs/Makefile
-@@ -72,11 +72,11 @@ ZSTDLEGACY_DIR := $(ZSTDDIR)/legacy
+@@ -74,11 +74,11 @@ ZSTDLEGACY_DIR := $(ZSTDDIR)/legacy
  
  vpath %.c $(ZSTDLIB_COMMON) $(ZSTDLIB_COMPRESS) $(ZSTDLIB_DECOMPRESS) $(ZDICT_DIR) $(ZSTDLEGACY_DIR)
  
@@ -34,17 +35,17 @@
  
  ZSTD_LEGACY_SUPPORT ?= 5
  ZSTDLEGACY_SRC :=
-@@ -91,7 +91,7 @@ ZSTDLIB_FULL_SRC = $(sort $(ZSTDLIB_CORE_SRC) $(ZSTDLEGACY_SRC) $(ZDICT_SRC))
- ZSTDLIB_LOCAL_SRC := $(notdir $(ZSTDLIB_FULL_SRC))
+@@ -93,7 +93,7 @@ ZSTDLIB_FULL_SRC = $(sort $(ZSTDLIB_CORE_SRC) $(ZSTDLEGACY_SRC) $(ZDICT_SRC))
+ ZSTDLIB_LOCAL_SRC = $(notdir $(ZSTDLIB_FULL_SRC))
  ZSTDLIB_LOCAL_OBJ := $(ZSTDLIB_LOCAL_SRC:.c=.o)
  
 -ZSTD_CLI_SRC := $(wildcard *.c)
 +ZSTD_CLI_SRC := $(sort $(wildcard *.c))
  ZSTD_CLI_OBJ := $(ZSTD_CLI_SRC:.c=.o)
  
- ZSTD_ALL_SRC := $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC)
+ ZSTD_ALL_SRC = $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC)
 diff --git a/tests/Makefile b/tests/Makefile
-index 42bc353c..5f5654f0 100644
+index f0605057..74a90b0f 100644
 --- a/tests/Makefile
 +++ b/tests/Makefile
 @@ -49,7 +49,7 @@ ZSTD_FILES  := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES)
@@ -56,7 +57,7 @@
  ZSTD_OBJ1 := $(subst $(ZSTDDIR)/common/,zstdm_,$(ZSTD_F1))
  ZSTD_OBJ2 := $(subst $(ZSTDDIR)/compress/,zstdc_,$(ZSTD_OBJ1))
  ZSTD_OBJ3 := $(subst $(ZSTDDIR)/decompress/,zstdd_,$(ZSTD_OBJ2))
-@@ -212,7 +212,7 @@ bigdict: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c bigdict.c
+@@ -211,7 +211,7 @@ bigdict: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c bigdict.c
  invalidDictionaries : $(ZSTD_OBJECTS) invalidDictionaries.c
  
  legacy : CPPFLAGS += -I$(ZSTDDIR)/legacy -DZSTD_LEGACY_SUPPORT=4
@@ -66,7 +67,7 @@
  decodecorpus : LDLIBS += -lm
  decodecorpus : $(filter-out zstdc_zstd_compress.o, $(ZSTD_OBJECTS)) $(ZDICT_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c decodecorpus.c
 diff --git a/tests/fuzz/Makefile b/tests/fuzz/Makefile
-index 36232a8c..574fe877 100644
+index f3a561de..68a29ef0 100644
 --- a/tests/fuzz/Makefile
 +++ b/tests/fuzz/Makefile
 @@ -58,7 +58,7 @@ FUZZ_SRC       := \
diff --git a/poky/meta/recipes-extended/zstd/zstd_1.4.8.bb b/poky/meta/recipes-extended/zstd/zstd_1.4.9.bb
similarity index 95%
rename from poky/meta/recipes-extended/zstd/zstd_1.4.8.bb
rename to poky/meta/recipes-extended/zstd/zstd_1.4.9.bb
index 10a6334..b86fdf8 100644
--- a/poky/meta/recipes-extended/zstd/zstd_1.4.8.bb
+++ b/poky/meta/recipes-extended/zstd/zstd_1.4.9.bb
@@ -13,7 +13,7 @@
            file://0001-Makefile-sort-all-wildcard-file-list-expansions.patch \
            "
 
-SRCREV = "97a3da1df009d4dc67251de0c4b1c9d7fe286fc1"
+SRCREV = "e4558ffd1dc49399faf4ee5d85abed4386b4dcf5"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb b/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb
index 7fedc43..04f340f 100644
--- a/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb
+++ b/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb
@@ -21,5 +21,8 @@
            "
 SRC_URI[archive.sha256sum] = "8b05f2bcc1e80ecf4a10f6f01b3285087eb4cbdf5741dffb8c0355715ef5116d"
 
+# Developer mode enables debugging
+PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false"
+
 FILES_${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
 RDEPENDS_${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
diff --git a/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb b/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb
index fe80439..563087a 100644
--- a/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb
+++ b/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb
@@ -8,7 +8,7 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
 
-DEPENDS = "gtk+3 p11-kit glib-2.0 libgcrypt gnupg-native \
+DEPENDS = "p11-kit glib-2.0 libgcrypt gnupg-native \
            ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
 
 CACHED_CONFIGUREVARS += "ac_cv_path_GPG='gpg2'"
@@ -16,11 +16,12 @@
 GNOMEBASEBUILDCLASS = "meson"
 GTKDOC_MESON_OPTION = "gtk_doc"
 inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
-# depends on gtk+3, but also x11 through gtk+-x11
-REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI[archive.sha256sum] = "17fcaf9c4a93a65fb1c72b82643bb102c13344084687d5886ea66313868d9ec9"
 
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)}"
+PACKAGECONFIG[gtk] = "-Dgtk=true,-Dgtk=false,gtk+3"
+
 FILES_${PN} += " \
     ${datadir}/dbus-1 \
     ${datadir}/gcr-3 \
diff --git a/poky/meta/recipes-gnome/libhandy/libhandy/determinism.patch b/poky/meta/recipes-gnome/libhandy/libhandy/determinism.patch
deleted file mode 100644
index 7c4177f..0000000
--- a/poky/meta/recipes-gnome/libhandy/libhandy/determinism.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-hdy-enums*.c.in: Fix reproducibility issue
-
-When full filenames are used in generated sources it makes the resulting
-debug packages non-reproducible. Best practise is to use basename in
-comments instead.
-
-Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/734]
-
-Index: a/src/hdy-enums-private.c.in
-===================================================================
---- a/src/hdy-enums-private.c.in
-+++ b/src/hdy-enums-private.c.in
-@@ -7,7 +7,7 @@
- /*** END file-header ***/
- 
- /*** BEGIN file-production ***/
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-Index: a/src/hdy-enums.c.in
-===================================================================
---- a/src/hdy-enums.c.in
-+++ b/src/hdy-enums.c.in
-@@ -13,7 +13,7 @@
- /*** END file-header ***/
- 
- /*** BEGIN file-production ***/
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
diff --git a/poky/meta/recipes-gnome/libhandy/libhandy_1.0.3.bb b/poky/meta/recipes-gnome/libhandy/libhandy_1.2.0.bb
similarity index 89%
rename from poky/meta/recipes-gnome/libhandy/libhandy_1.0.3.bb
rename to poky/meta/recipes-gnome/libhandy/libhandy_1.2.0.bb
index a53a138..1e37feb 100644
--- a/poky/meta/recipes-gnome/libhandy/libhandy_1.0.3.bb
+++ b/poky/meta/recipes-gnome/libhandy/libhandy_1.2.0.bb
@@ -9,9 +9,8 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
-SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https;branch=libhandy-1-0 \
-           file://determinism.patch"
-SRCREV = "7126d2e8da9dcdeb5751e60ff6a74930804f9637"
+SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https"
+SRCREV = "7b38a860ffcec6c2ad28153358cc3d037ddb618f"
 S = "${WORKDIR}/git"
 
 GIR_MESON_ENABLE_FLAG = 'enabled'
diff --git a/poky/meta/recipes-graphics/images/core-image-weston.bb b/poky/meta/recipes-graphics/images/core-image-weston.bb
index 8d88e3b..e82e4fb 100644
--- a/poky/meta/recipes-graphics/images/core-image-weston.bb
+++ b/poky/meta/recipes-graphics/images/core-image-weston.bb
@@ -1,14 +1,12 @@
 SUMMARY = "A very basic Wayland image with a terminal"
 
-IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs"
+IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs weston"
 
 LICENSE = "MIT"
 
-inherit core-image features_check
+inherit core-image
 
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples wayland-utils gtk+3-demo clutter-1.0-examples"
+CORE_IMAGE_BASE_INSTALL += "gtk+3-demo clutter-1.0-examples"
 CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}"
 
 QB_MEM = "-m 512"
diff --git a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.14.bb b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.14.bb
index 872592f..54556ab 100644
--- a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.14.bb
+++ b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.14.bb
@@ -65,6 +65,7 @@
 PACKAGECONFIG[x11]        = "--enable-video-x11,--disable-video-x11,virtual/libx11 libxext libxrandr libxrender"
 
 EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader"
+CFLAGS_append_class-native = " -DNO_SHARED_MEMORY"
 
 do_configure_prepend() {
         # Remove old libtool macros.
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch b/poky/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch
deleted file mode 100644
index a61e7b2..0000000
--- a/poky/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f148d4f1b5b13288b254ead07f1d008d997e2342 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 2 Nov 2020 23:23:53 +0100
-Subject: [PATCH] anv: fix a build race between generating a header and using
- it
-
-anv_batch_chain.c includes genX_bits.h but doesn't ensure it gets
-generated first. This causes build failures, as observed here:
-https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/1501/steps/8/logs/step2d
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7412]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/intel/vulkan/meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
-index 36e1689314e..b713d8eade3 100644
---- a/src/intel/vulkan/meson.build
-+++ b/src/intel/vulkan/meson.build
-@@ -131,6 +131,7 @@ libanv_files = files(
- anv_deps = [
-   dep_libdrm,
-   dep_valgrind,
-+  idep_genxml,
-   idep_nir_headers,
-   idep_vulkan_util_headers,
- ]
--- 
-2.29.0
-
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
index 0852543..b6f8674 100644
--- a/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
+++ b/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -1,4 +1,4 @@
-From 0d9ed002eff176b902da266d89829a9b0cb10946 Mon Sep 17 00:00:00 2001
+From 38e984073e4c23b6278d1a2ff21e894fda7b93c5 Mon Sep 17 00:00:00 2001
 From: Alistair Francis <alistair@alistair23.me>
 Date: Thu, 14 Nov 2019 13:04:49 -0800
 Subject: [PATCH] meson.build: check for all linux host_os combinations
@@ -20,10 +20,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 898d025..09e3759 100644
+index 932eb13..efc6171 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -124,7 +124,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
+@@ -153,7 +153,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
  # Only build shared_glapi if at least one OpenGL API is enabled
  with_shared_glapi = with_shared_glapi and with_any_opengl
  
@@ -32,12 +32,12 @@
  
  dri_drivers = get_option('dri-drivers')
  if dri_drivers.contains('auto')
-@@ -884,7 +884,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
+@@ -970,7 +970,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
  endif
  
  # TODO: this is very incomplete
--if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd'].contains(host_machine.system())
-+if ['cygwin', 'gnu', 'gnu/kfreebsd'].contains(host_machine.system()) or host_machine.system().startswith('linux')
+-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system())
++if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system()) or host_machine.system().startswith('linux')
    pre_args += '-D_GNU_SOURCE'
  elif host_machine.system() == 'sunos'
    pre_args += '-D__EXTENSIONS__'
diff --git a/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
index 89c0d15..df2346d 100644
--- a/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
+++ b/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
@@ -1,4 +1,4 @@
-From ce57ce220d9c377beabf4914f33c43118f672ffe Mon Sep 17 00:00:00 2001
+From 624f430dd0a91344146a2b8d49a69f23560c2fa2 Mon Sep 17 00:00:00 2001
 From: Alistair Francis <alistair@alistair23.me>
 Date: Thu, 14 Nov 2019 13:08:31 -0800
 Subject: [PATCH] meson.build: make TLS ELF optional
@@ -30,23 +30,23 @@
  2 files changed, 7 insertions(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index c5136ea..185270d 100644
+index efc6171..8450968 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -424,7 +424,7 @@ endif
+@@ -448,7 +448,7 @@ endif
  
  # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
  use_elf_tls = false
--if not ['windows', 'freebsd', 'openbsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29)
-+if not ['windows', 'freebsd', 'openbsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) and get_option('elf-tls')
+-if not ['windows', 'freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29)
++if not ['windows', 'freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) and get_option('elf-tls')
    pre_args += '-DUSE_ELF_TLS'
    use_elf_tls = true
  endif
 diff --git a/meson_options.txt b/meson_options.txt
-index 2d39d13..72006eb 100644
+index fc73f6e..d7482c0 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
-@@ -368,6 +368,12 @@ option(
+@@ -420,6 +420,12 @@ option(
    value : true,
    description : 'Enable direct rendering in GLX and EGL for DRI',
  )
diff --git a/poky/meta/recipes-graphics/mesa/mesa-gl_20.3.4.bb b/poky/meta/recipes-graphics/mesa/mesa-gl_21.0.0.bb
similarity index 100%
rename from poky/meta/recipes-graphics/mesa/mesa-gl_20.3.4.bb
rename to poky/meta/recipes-graphics/mesa/mesa-gl_21.0.0.bb
diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc
index 9f8ec11..e9b72ce 100644
--- a/poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/poky/meta/recipes-graphics/mesa/mesa.inc
@@ -19,10 +19,9 @@
            file://0002-meson.build-make-TLS-ELF-optional.patch \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
            file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
-           file://0001-anv-fix-a-build-race-between-generating-a-header-and.patch \
            "
 
-SRC_URI[sha256sum] = "dc21a987ec1ff45b278fe4b1419b1719f1968debbb80221480e44180849b4084"
+SRC_URI[sha256sum] = "e6204e98e6a8d77cf9dc5d34f99dd8e3ef7144f3601c808ca0dd26ba522e0d84"
 
 UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 
@@ -103,8 +102,8 @@
 PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc"
 PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
 
-DRIDRIVERS_class-native = "swrast"
-DRIDRIVERS_class-nativesdk = "swrast"
+DRIDRIVERS_class-native = "nouveau"
+DRIDRIVERS_class-nativesdk = "nouveau"
 DRIDRIVERS_append_x86_class-target = ",r100,r200,nouveau,i965,i915"
 DRIDRIVERS_append_x86-64_class-target = ",r100,r200,nouveau,i965,i915"
 # "dri" requires "opengl"
@@ -168,8 +167,7 @@
 PACKAGECONFIG[panfrost] = ""
 GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
 
-OSMESA = "${@bb.utils.contains('PACKAGECONFIG', 'gallium', 'gallium', 'classic', d)}"
-PACKAGECONFIG[osmesa] = "-Dosmesa=${OSMESA},-Dosmesa=none"
+PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false"
 
 PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
 
diff --git a/poky/meta/recipes-graphics/mesa/mesa_20.3.4.bb b/poky/meta/recipes-graphics/mesa/mesa_21.0.0.bb
similarity index 100%
rename from poky/meta/recipes-graphics/mesa/mesa_20.3.4.bb
rename to poky/meta/recipes-graphics/mesa/mesa_21.0.0.bb
diff --git a/poky/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb b/poky/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb
new file mode 100644
index 0000000..7dcfd67
--- /dev/null
+++ b/poky/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Basic Weston compositor setup"
+DESCRIPTION = "Packages required to set up a basic working Weston session"
+PR = "r1"
+
+inherit packagegroup features_check
+
+# weston-init requires pam enabled if started via systemd
+REQUIRED_DISTRO_FEATURES = "wayland ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}"
+
+RDEPENDS_${PN} = "\
+    weston \
+    weston-init \
+    weston-examples \
+    wayland-utils \
+    "
diff --git a/poky/meta/recipes-graphics/shaderc/files/0003-cmake-add-option-to-skip-build-the-examples.patch b/poky/meta/recipes-graphics/shaderc/files/0003-cmake-add-option-to-skip-build-the-examples.patch
deleted file mode 100644
index 43f9edc..0000000
--- a/poky/meta/recipes-graphics/shaderc/files/0003-cmake-add-option-to-skip-build-the-examples.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From f1064e4b6cfc5955bc7e2b036f2d05540da9f09b Mon Sep 17 00:00:00 2001
-From: Jose Quaresma <quaresma.jose@gmail.com>
-Date: Sat, 13 Feb 2021 00:45:56 +0000
-Subject: [PATCH 3/3] cmake: add option to skip build the examples
-
-Upstream-Status: Backport [https://github.com/google/shaderc/commit/8d081127ee28ff5df8123c994c00bc66a57e9e9c]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
----
- CMakeLists.txt | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b358f6b..d8a5405 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -40,6 +40,16 @@ else()
-   message(STATUS "Configuring Shaderc to avoid building tests.")
- endif()
- 
-+option(SHADERC_SKIP_EXAMPLES "Skip building examples" ${SHADERC_SKIP_EXAMPLES})
-+if(NOT ${SHADERC_SKIP_EXAMPLES})
-+  set(SHADERC_ENABLE_EXAMPLES ON)
-+endif()
-+if(${SHADERC_ENABLE_EXAMPLES})
-+  message(STATUS "Configuring Shaderc to build examples.")
-+else()
-+  message(STATUS "Configuring Shaderc to avoid building examples.")
-+endif()
-+
- option(SHADERC_ENABLE_WERROR_COMPILE "Enable passing -Werror to compiler, if available" ON)
- option(BUILD_EXTERNAL "Build external dependencies in /third_party" ON)
- 
-@@ -114,7 +124,9 @@ endif()
- add_subdirectory(libshaderc_util)
- add_subdirectory(libshaderc)
- add_subdirectory(glslc)
--add_subdirectory(examples)
-+if(${SHADERC_ENABLE_EXAMPLES})
-+    add_subdirectory(examples)
-+endif()
- 
- add_custom_target(build-version
-   ${PYTHON_EXECUTABLE}
--- 
-2.30.1
-
diff --git a/poky/meta/recipes-graphics/shaderc/shaderc_2020.4.bb b/poky/meta/recipes-graphics/shaderc/shaderc_2020.5.bb
similarity index 88%
rename from poky/meta/recipes-graphics/shaderc/shaderc_2020.4.bb
rename to poky/meta/recipes-graphics/shaderc/shaderc_2020.5.bb
index 73aa0ee..ce51aab 100644
--- a/poky/meta/recipes-graphics/shaderc/shaderc_2020.4.bb
+++ b/poky/meta/recipes-graphics/shaderc/shaderc_2020.5.bb
@@ -6,11 +6,10 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRCREV = "0dbd899941a43ffd55df527d65128b3b66e75c9c"
+SRCREV = "f3e39a7eed682faececb73f0b85717f2f44ee9ba"
 SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \
            file://0001-cmake-disable-building-external-dependencies.patch \
            file://0002-libshaderc_util-fix-glslang-header-file-location.patch \
-           file://0003-cmake-add-option-to-skip-build-the-examples.patch \
            "
 UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch b/poky/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
deleted file mode 100644
index 5d37da8..0000000
--- a/poky/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From caf59c46ea5dc49e4dbf756c642b03e52c1b5468 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Dec 2019 07:02:24 -0800
-Subject: [PATCH] Respect CMAKE_INSTALL_LIBDIR in installed CMake files
-
-Upstream-Status: Submitted [https://github.com/google/effcee/pull/36]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- CMakeLists.txt        | 1 +
- effcee/CMakeLists.txt | 4 ++--
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/external/effcee/CMakeLists.txt
-+++ b/external/effcee/CMakeLists.txt
-@@ -27,6 +27,7 @@ endif()
- 
- include(cmake/setup_build.cmake)
- include(cmake/utils.cmake)
-+include(GNUInstallDirs)
- 
- add_subdirectory(third_party)
- add_subdirectory(effcee)
---- a/external/effcee/effcee/CMakeLists.txt
-+++ b/external/effcee/effcee/CMakeLists.txt
-@@ -14,8 +14,8 @@ install(
-   DESTINATION
-     include/effcee)
- install(TARGETS effcee
--  LIBRARY DESTINATION lib
--  ARCHIVE DESTINATION lib)
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- 
- if(EFFCEE_BUILD_TESTING)
-   add_executable(effcee-test
diff --git a/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch b/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch
new file mode 100644
index 0000000..bc59faa
--- /dev/null
+++ b/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch
@@ -0,0 +1,30 @@
+From 1ba007583b83468494c4146bcb7267d863de6a7b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 26 Feb 2021 23:54:10 -0800
+Subject: [PATCH] fix strncpy bound error
+
+This patch fixes the following error while using gcc 11
+error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
+
+Upstream-Status: Submitted [https://github.com/KhronosGroup/SPIRV-Tools/pull/4151]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ source/diagnostic.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source/diagnostic.cpp b/source/diagnostic.cpp
+index edc27c8fd..77c29d70c 100644
+--- a/source/diagnostic.cpp
++++ b/source/diagnostic.cpp
+@@ -37,7 +37,7 @@ spv_diagnostic spvDiagnosticCreate(const spv_position position,
+   diagnostic->position = *position;
+   diagnostic->isTextSource = false;
+   memset(diagnostic->error, 0, length);
+-  strncpy(diagnostic->error, message, length);
++  memcpy(diagnostic->error, message, length);
+   return diagnostic;
+ }
+ 
+-- 
+2.30.1
+
diff --git a/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb b/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
index 14723f9..7a43af5 100644
--- a/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
+++ b/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
@@ -7,10 +7,11 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c938b85bceb8fb26c1a807f28a52ae2d"
 
-SRCREV = "f027d53ded7e230e008d37c8b47ede7cd308e19d"
+SRCREV = "bcf55210f13a4fa3c3d0963b509ff1070e434c79"
 SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https"
 UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
 S = "${WORKDIR}/git"
+PV .= "+git${SRCPV}"
 
 inherit cmake
 
diff --git a/poky/meta/recipes-graphics/spir/spirv-tools_2020.6.bb b/poky/meta/recipes-graphics/spir/spirv-tools_2020.7.bb
similarity index 84%
rename from poky/meta/recipes-graphics/spir/spirv-tools_2020.6.bb
rename to poky/meta/recipes-graphics/spir/spirv-tools_2020.7.bb
index f1fe400..8be6985 100644
--- a/poky/meta/recipes-graphics/spir/spirv-tools_2020.6.bb
+++ b/poky/meta/recipes-graphics/spir/spirv-tools_2020.7.bb
@@ -7,12 +7,14 @@
 LICENSE  = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRCREV = "b27b1afd12d05bf238ac7368bb49de73cd620a8e"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git"
+SRCREV = "2573fd781b5408cd7fe5755a78b60d767a748ff9"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git \
+           file://0001-fix-strncpy-bound-error.patch \
+          "
 UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
 S = "${WORKDIR}/git"
 
-inherit cmake
+inherit cmake python3native
 
 DEPENDS = "spirv-headers"
 
diff --git a/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb b/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
index 50c79b3..5226e84 100644
--- a/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
+++ b/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
@@ -1,4 +1,5 @@
 SUMMARY = "The Bitstream Vera fonts - TTF Edition"
+HOMEPAGE = "https://www.gnome.org/fonts/"
 DESCRIPTION = "The Bitstream Vera fonts include four monospace and sans \
 faces (normal, oblique, bold, bold oblique) and two serif faces (normal \
 and bold).  In addition Fontconfig/Xft2 can artificially oblique the \
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.162.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.170.0.bb
similarity index 93%
rename from poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.162.0.bb
rename to poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.170.0.bb
index 19ae67c..4c9c94f 100644
--- a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.162.0.bb
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.170.0.bb
@@ -11,7 +11,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
 SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=master"
 
-SRCREV = "87aaa16d4c8e1ac70f8f04acdcd46eed4bd77209"
+SRCREV = "1d99b835ec3cd5a7fb2f2a2dd9a615ee2d1f0101"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-loader/0001-Rename-LIB_SUFFIX-to-VULKAN_LIB_SUFFIX.patch b/poky/meta/recipes-graphics/vulkan/vulkan-loader/0001-Rename-LIB_SUFFIX-to-VULKAN_LIB_SUFFIX.patch
deleted file mode 100644
index 26b1a40..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-loader/0001-Rename-LIB_SUFFIX-to-VULKAN_LIB_SUFFIX.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 5ae24ece75f2caa69216da7075334711642f5588 Mon Sep 17 00:00:00 2001
-From: Michel Zou <xantares09@hotmail.com>
-Date: Wed, 16 Dec 2020 15:03:23 +0100
-Subject: [PATCH] Rename LIB_SUFFIX to VULKAN_LIB_SUFFIX
-
-Closes #527
-
-Upstream-Status: Backport [https://github.com/KhronosGroup/Vulkan-Loader/commit/66a23ac8c566299343668f094de50798a5f4a0e4]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- loader/CMakeLists.txt | 2 +-
- loader/vulkan.pc.in   | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index 659511855..ba9f460f1 100644
---- a/loader/CMakeLists.txt
-+++ b/loader/CMakeLists.txt
-@@ -327,7 +327,7 @@ if(PKG_CONFIG_FOUND)
-         set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
-     endforeach()
-     if(WIN32)
--        set(LIB_SUFFIX "-1")
-+        set(VULKAN_LIB_SUFFIX "-1")
-     endif ()
-     configure_file("vulkan.pc.in" "vulkan.pc" @ONLY)
-     install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vulkan.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-diff --git a/loader/vulkan.pc.in b/loader/vulkan.pc.in
-index fc17cb1f3..44049ee34 100644
---- a/loader/vulkan.pc.in
-+++ b/loader/vulkan.pc.in
-@@ -6,7 +6,7 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
- Name: @CMAKE_PROJECT_NAME@
- Description: Vulkan Loader
- Version: @VK_API_VERSION@
--Libs: -L${libdir} -lvulkan@LIB_SUFFIX@
-+Libs: -L${libdir} -lvulkan@VULKAN_LIB_SUFFIX@
- Libs.private: @PRIVATE_LIBS@
- Cflags: -I${includedir}
- 
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.162.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bb
similarity index 87%
rename from poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.162.0.bb
rename to poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bb
index d39e7af..6b6ed06 100644
--- a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.162.0.bb
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bb
@@ -10,9 +10,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
 SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git \
-           file://0001-Rename-LIB_SUFFIX-to-VULKAN_LIB_SUFFIX.patch \
            "
-SRCREV = "7a313093b5c4af964d50a5a64e73d7df6152ea3f"
+SRCREV = "c5678a03db383fd0dc5bfb8e9a383043bdbcb57b"
 
 S = "${WORKDIR}/git"
 
@@ -27,6 +26,8 @@
                  -DBUILD_TESTS=OFF \
                  -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
                  -DASSEMBLER_WORKS=FALSE \
+                 -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \
+                 -DVulkanRegistry_DIR=${RECIPE_SYSROOT}/${datadir} \
                  "
 
 # must choose x11 or wayland or both
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.162.1.bb b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.170.0.bb
similarity index 94%
rename from poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.162.1.bb
rename to poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.170.0.bb
index a5c3bbc..0c8bcaa 100644
--- a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.162.1.bb
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.170.0.bb
@@ -6,8 +6,8 @@
 
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.162"
-SRCREV = "8f0c2e40d4134f53f82ce48de72c7be92baa6b3d"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.170"
+SRCREV = "88ea55de928a08ba5c5f65a93d1e7c8f666fc43f"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-graphics/wayland/libinput/run-ptest b/poky/meta/recipes-graphics/wayland/libinput/run-ptest
index 5a84c56..d11e6eb 100644
--- a/poky/meta/recipes-graphics/wayland/libinput/run-ptest
+++ b/poky/meta/recipes-graphics/wayland/libinput/run-ptest
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-/usr/libexec/libinput/libinput-test-suite
+/usr/libexec/libinput/libinput-test-suite -j1
 if [ $? -eq 0 ]; then
   echo 'PASS: libinput-test-suite'
 else
diff --git a/poky/meta/recipes-graphics/wayland/weston-init.bb b/poky/meta/recipes-graphics/wayland/weston-init.bb
index 65d7b81..6b78e67 100644
--- a/poky/meta/recipes-graphics/wayland/weston-init.bb
+++ b/poky/meta/recipes-graphics/wayland/weston-init.bb
@@ -30,6 +30,7 @@
 do_install() {
         if [ "${VIRTUAL-RUNTIME_init_manager}" != "systemd" ]; then
 		install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
+		sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}/${sysconfdir}/init.d/weston
         fi
 	install -D -p -m0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini
 	install -Dm644 ${WORKDIR}/weston.env ${D}${sysconfdir}/default/weston
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/init b/poky/meta/recipes-graphics/wayland/weston-init/init
index d3e87c6..a849f29 100644
--- a/poky/meta/recipes-graphics/wayland/weston-init/init
+++ b/poky/meta/recipes-graphics/wayland/weston-init/init
@@ -30,6 +30,7 @@
 case "$1" in
   start)
         . /etc/profile
+	export HOME=ROOTHOME
 
         weston-start -- $OPTARGS
   ;;
diff --git a/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
index 70b2908..1d900d8 100644
--- a/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -8,7 +8,7 @@
 
 DEPENDS = "git-native"
 
-SRCREV = "73f813024d33432116a122524fd2ae48afc910c7"
+SRCREV = "8f6aaab7f64c6de30d267e31a73f7c3bb30125a9"
 PR = "r12"
 PV = "0.2+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb
index 0013e24..78856cb 100644
--- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb
+++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Firmware files for use with Linux kernel"
+HOMEPAGE = "https://www.kernel.org/"
 DESCRIPTION = "Linux firmware is a package distributed alongside the Linux kernel \
 that contains firmware binary blobs necessary for partial or full functionality \
 of certain hardware devices."
@@ -495,6 +496,13 @@
   ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \
   ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \
   ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0011_2x40.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0012_2x40.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0078-0011_1x100.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/bpf \
+  ${nonarch_base_libdir}/firmware/netronome/flower \
+  ${nonarch_base_libdir}/firmware/netronome/nic \
+  ${nonarch_base_libdir}/firmware/netronome/nic-sriov \
 "
 
 RDEPENDS_${PN}-netronome += "${PN}-netronome-license"
@@ -621,7 +629,9 @@
 FILES_${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*"
 FILES_${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin"
 FILES_${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin"
-FILES_${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin"
+FILES_${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin \
+"
 FILES_${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin"
 FILES_${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin"
 FILES_${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin"
@@ -630,12 +640,18 @@
   ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \
 "
 FILES_${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*"
-FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.*"
+FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.* \
+"
 FILES_${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin"
 FILES_${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin"
-FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.bin"
+FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.bin \
+"
 FILES_${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin"
-FILES_${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin"
+FILES_${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin \
+"
 FILES_${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin"
 FILES_${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \
   ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \
@@ -706,13 +722,21 @@
 FILES_${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress"
 
 FILES_${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd"
-FILES_${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.*"
-FILES_${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.*"
-FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.*"
-FILES_${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin"
-FILES_${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.*"
+FILES_${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*"
+FILES_${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*"
+FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*"
+FILES_${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin \
+"
+FILES_${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \
+"
 FILES_${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \
   ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \
 "
 
 LICENSE_${PN}-bcm-0bb4-0306 = "Firmware-cypress"
diff --git a/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
index 7ec9402..175b2d1 100644
--- a/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -1,4 +1,5 @@
 SUMMARY = "Sanitized set of kernel headers for the C library's use"
+HOMEPAGE = "https://www.kernel.org/"
 DESCRIPTION = "Designed to maintain an Application Programming Interface (API) stable version of the Linux headers"
 SECTION = "devel"
 LICENSE = "GPLv2"
diff --git a/poky/meta/recipes-kernel/linux/kernel-devsrc.bb b/poky/meta/recipes-kernel/linux/kernel-devsrc.bb
index dadeade..455c836 100644
--- a/poky/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/poky/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -271,6 +271,7 @@
     if [ -e "$kerneldir/build/include/config/auto.conf.cmd" ]; then
         sed -i 's/ifneq "$(CC)" ".*-linux-.*gcc.*$/ifneq "$(CC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd"
         sed -i 's/ifneq "$(LD)" ".*-linux-.*ld.bfd.*$/ifneq "$(LD)" "ld"/' "$kerneldir/build/include/config/auto.conf.cmd"
+        sed -i 's/ifneq "$(AR)" ".*-linux-.*ar.*$/ifneq "$(AR)" "ar"/' "$kerneldir/build/include/config/auto.conf.cmd"
         sed -i 's/ifneq "$(HOSTCXX)" ".*$/ifneq "$(HOSTCXX)" "g++"/' "$kerneldir/build/include/config/auto.conf.cmd"
         sed -i 's/ifneq "$(HOSTCC)" ".*$/ifneq "$(HOSTCC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd"
         sed -i 's/ifneq "$(CC_VERSION_TEXT)".*\(gcc.*\)"/ifneq "$(CC_VERSION_TEXT)" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd"
diff --git a/poky/meta/recipes-kernel/linux/linux-dummy.bb b/poky/meta/recipes-kernel/linux/linux-dummy.bb
index 95dc85f..c56f899 100644
--- a/poky/meta/recipes-kernel/linux/linux-dummy.bb
+++ b/poky/meta/recipes-kernel/linux/linux-dummy.bb
@@ -9,7 +9,7 @@
 
 PROVIDES += "virtual/kernel"
 
-inherit deploy
+inherit deploy linux-dummy
 
 PACKAGES_DYNAMIC += "^kernel-module-.*"
 PACKAGES_DYNAMIC += "^kernel-image-.*"
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
index 2ccc0ee..8725473 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -30,7 +30,7 @@
 SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 
-LINUX_VERSION ?= "5.11+"
+LINUX_VERSION ?= "5.12+"
 LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
index 54996a8..cb34887 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
@@ -11,13 +11,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "142456428adbf16db56572889232220afb201974"
-SRCREV_meta ?= "8f72218572b1d4a5f053ced2bbf0558d0557072d"
+SRCREV_machine ?= "be2935bce35f9adb6d0e735d42651e81a5094adf"
+SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "5.10.16"
+LINUX_VERSION ?= "5.10.25"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb
index 2508b9b..2ffc8ed 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb
@@ -11,13 +11,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "0406e600800a40015d02b16ee6a4a46c6673c66f"
-SRCREV_meta ?= "4f6d6c23cc8ca5d9c39b1efc2619b1dfec1ef2bc"
+SRCREV_machine ?= "65bbe689d98a007848008be2c8edeb5fa8066829"
+SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "5.4.98"
+LINUX_VERSION ?= "5.4.107"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
index 8ecd107..83e59b0 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
@@ -6,7 +6,7 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "5.10.16"
+LINUX_VERSION ?= "5.10.25"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -15,9 +15,9 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine_qemuarm ?= "be720c1ce6d1cba2bb3815ad04773355339380ab"
-SRCREV_machine ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_meta ?= "8f72218572b1d4a5f053ced2bbf0558d0557072d"
+SRCREV_machine_qemuarm ?= "0f87ec9fea7a5695cd063d9d11d89751efa53ddd"
+SRCREV_machine ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb
index ff03fd4..2b6e35a 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb
@@ -6,7 +6,7 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "5.4.98"
+LINUX_VERSION ?= "5.4.107"
 LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -15,9 +15,9 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine_qemuarm ?= "fc95a485415d22eb772359b8d350c03b85c0cd1b"
-SRCREV_machine ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_meta ?= "4f6d6c23cc8ca5d9c39b1efc2619b1dfec1ef2bc"
+SRCREV_machine_qemuarm ?= "ac3cbab1d6692d4a032dfffe0a604f39a634d18a"
+SRCREV_machine ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
index 38b56c1..026e695 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
@@ -8,20 +8,22 @@
 KBRANCH_qemumips ?= "v5.10/standard/mti-malta32"
 KBRANCH_qemuppc  ?= "v5.10/standard/qemuppc"
 KBRANCH_qemuriscv64  ?= "v5.10/standard/base"
+KBRANCH_qemuriscv32  ?= "v5.10/standard/base"
 KBRANCH_qemux86  ?= "v5.10/standard/base"
 KBRANCH_qemux86-64 ?= "v5.10/standard/base"
 KBRANCH_qemumips64 ?= "v5.10/standard/mti-malta64"
 
-SRCREV_machine_qemuarm ?= "57a6fbd33df5c7f057f301387b03a70cdc582282"
-SRCREV_machine_qemuarm64 ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_machine_qemumips ?= "79bd439bff3c9f95cac6fb81c76b559a404a32dc"
-SRCREV_machine_qemuppc ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_machine_qemuriscv64 ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_machine_qemux86 ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_machine_qemux86-64 ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_machine_qemumips64 ?= "07bda345fe202b1d2ce233ffc20b7570f78c9c7f"
-SRCREV_machine ?= "98eda36c9616b598b3586c7cc532e8e0ba8b3953"
-SRCREV_meta ?= "8f72218572b1d4a5f053ced2bbf0558d0557072d"
+SRCREV_machine_qemuarm ?= "d8551cae1ccdbe062a5c6068ce39ea8f4e1c72db"
+SRCREV_machine_qemuarm64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemumips ?= "7f1f1ad2f2d90b1b070c6b0a82f0add9aa492e37"
+SRCREV_machine_qemuppc ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemuriscv64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemuriscv32 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemux86 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemux86-64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_machine_qemumips64 ?= "fd5ac097b891642eea13659bea536f3ec5910d6d"
+SRCREV_machine ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
+SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e"
 
 # remap qemuarm to qemuarma15 for the 5.8 kernel
 # KMACHINE_qemuarm ?= "qemuarma15"
@@ -30,7 +32,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "5.10.16"
+LINUX_VERSION ?= "5.10.25"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
@@ -43,7 +45,7 @@
 
 KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
 
-COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64"
+COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32"
 
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb
index 8d0f4b8..245c3d5 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb
@@ -12,16 +12,16 @@
 KBRANCH_qemux86-64 ?= "v5.4/standard/base"
 KBRANCH_qemumips64 ?= "v5.4/standard/mti-malta64"
 
-SRCREV_machine_qemuarm ?= "28bc6b294bb1e49da671b2848234f9011efcad88"
-SRCREV_machine_qemuarm64 ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_machine_qemumips ?= "105568d1696f86625cf7bc30d8c5c921732de2f4"
-SRCREV_machine_qemuppc ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_machine_qemuriscv64 ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_machine_qemux86 ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_machine_qemux86-64 ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_machine_qemumips64 ?= "c76ba20ee1b1de859736f85f0210459c2104b8df"
-SRCREV_machine ?= "2d0a4ea86fe97f13a4bc2a92a097e4edb51d737d"
-SRCREV_meta ?= "4f6d6c23cc8ca5d9c39b1efc2619b1dfec1ef2bc"
+SRCREV_machine_qemuarm ?= "ea4097dbff5a148265018e1a998e02b5a05e3d27"
+SRCREV_machine_qemuarm64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_machine_qemumips ?= "230ca33504faef6f40c5d3b24901aaacb901c9a6"
+SRCREV_machine_qemuppc ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_machine_qemuriscv64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_machine_qemux86 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_machine_qemux86-64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_machine_qemumips64 ?= "84e071a893ef9cea8a8ffbcd233b47a2bc9056b5"
+SRCREV_machine ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72"
+SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f"
 
 # remap qemuarm to qemuarma15 for the 5.4 kernel
 # KMACHINE_qemuarm ?= "qemuarma15"
@@ -30,7 +30,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-LINUX_VERSION ?= "5.4.98"
+LINUX_VERSION ?= "5.4.107"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch
new file mode 100644
index 0000000..21da932
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch
@@ -0,0 +1,58 @@
+From b3fdf78b15beb940918da1e41eb68e24ba31bb87 Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Date: Wed, 3 Mar 2021 10:10:16 -0500
+Subject: [PATCH 1/4] Fix: memory leaks on event destroy
+
+Both filter runtime and event enabler ref objects are owned by the
+event, but are not freed upon destruction of the event object, thus
+leaking memory.
+
+Upstream-status: backport
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: Ice9b1c18b47584838aea2b965494d3c8391f4c84
+---
+ lttng-events.c | 7 +++++++
+ lttng-events.h | 1 +
+ 2 files changed, 8 insertions(+)
+
+diff --git a/lttng-events.c b/lttng-events.c
+index f3398adc..984bd341 100644
+--- a/lttng-events.c
++++ b/lttng-events.c
+@@ -919,6 +919,8 @@ int _lttng_event_unregister(struct lttng_event *event)
+ static
+ void _lttng_event_destroy(struct lttng_event *event)
+ {
++	struct lttng_enabler_ref *enabler_ref, *tmp_enabler_ref;
++
+ 	switch (event->instrumentation) {
+ 	case LTTNG_KERNEL_TRACEPOINT:
+ 		lttng_event_put(event->desc);
+@@ -944,6 +946,11 @@ void _lttng_event_destroy(struct lttng_event *event)
+ 	}
+ 	list_del(&event->list);
+ 	lttng_destroy_context(event->ctx);
++	lttng_free_event_filter_runtime(event);
++	/* Free event enabler refs */
++	list_for_each_entry_safe(enabler_ref, tmp_enabler_ref,
++				 &event->enablers_ref_head, node)
++		kfree(enabler_ref);
+ 	kmem_cache_free(event_cache, event);
+ }
+ 
+diff --git a/lttng-events.h b/lttng-events.h
+index 1b9ab167..13b6abf5 100644
+--- a/lttng-events.h
++++ b/lttng-events.h
+@@ -716,6 +716,7 @@ int lttng_enabler_attach_bytecode(struct lttng_enabler *enabler,
+ 		struct lttng_kernel_filter_bytecode __user *bytecode);
+ void lttng_enabler_event_link_bytecode(struct lttng_event *event,
+ 		struct lttng_enabler *enabler);
++void lttng_free_event_filter_runtime(struct lttng_event *event);
+ 
+ int lttng_probes_init(void);
+ 
+-- 
+2.19.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch
new file mode 100644
index 0000000..609690f
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch
@@ -0,0 +1,159 @@
+From 23a2f61ffc6a656f136fa2044c0c3b8f79766779 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Galarneau?=
+ <jeremie.galarneau@efficios.com>
+Date: Wed, 3 Mar 2021 18:52:19 -0500
+Subject: [PATCH 2/4] Fix: filter interpreter early-exits on uninitialized
+ value
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+I observed that syscall filtering on string arguments wouldn't work on
+my development machines, both running 5.11.2-arch1-1 (Arch Linux).
+
+For instance, enabling the tracing of the `openat()` syscall with the
+'filename == "/proc/cpuinfo"' filter would not produce events even
+though matching events were present in another session that had no
+filtering active. The same problem occurred with `execve()`.
+
+I tried a couple of kernel versions before (5.11.1 and 5.10.13, if
+memory serves me well) and I had the same problem. Meanwhile, I couldn't
+reproduce the problem on various Debian machines (the LTTng CI) nor on a
+fresh Ubuntu 20.04 with both the stock kernel and with an updated 5.11.2
+kernel.
+
+I built the lttng-modules with the interpreter debugging printout and
+saw the following warning:
+  LTTng: [debug bytecode in /home/jgalar/EfficiOS/src/lttng-modules/src/lttng-bytecode-interpreter.c:bytecode_interpret@1508] Bytecode warning: loading a NULL string.
+
+After a shedload (yes, a _shed_load) of digging, I figured that the
+problem was hidden in plain sight near that logging statement.
+
+In the `BYTECODE_OP_LOAD_FIELD_REF_USER_STRING` operation, the 'ax'
+register's 'user_str' is initialized with the stack value (the user
+space string's address in our case). However, a NULL check is performed
+against the register's 'str' member.
+
+I initialy suspected that both members would be part of the same union
+and alias each-other, but they are actually contiguous in a structure.
+
+On the unaffected machines, I could confirm that the `str` member was
+uninitialized to a non-zero value causing the condition to evaluate to
+false.
+
+Francis Deslauriers reproduced the problem by initializing the
+interpreter stack to zero.
+
+I am unsure of the exact kernel configuration option that reveals this
+issue on Arch Linux, but my kernel has the following option enabled:
+
+CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL:
+   Zero-initialize any stack variables that may be passed by reference
+   and had not already been explicitly initialized. This is intended to
+   eliminate all classes of uninitialized stack variable exploits and
+   information exposures.
+
+I have not tried to build without this enabled as, anyhow, this seems
+to be a legitimate issue.
+
+I have spotted what appears to be an identical problem in
+`BYTECODE_OP_LOAD_FIELD_REF_USER_SEQUENCE` and corrected it. However,
+I have not exercised that code path.
+
+The commit that introduced this problem is 5b4ad89.
+
+The debug print-out of the `BYTECODE_OP_LOAD_FIELD_REF_USER_STRING`
+operation is modified to print the user string (truncated to 31 chars).
+
+Upstream-status: backport
+
+Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: I2da3c31b9e3ce0e1b164cf3d2711c0893cbec273
+---
+ lttng-filter-interpreter.c | 41 ++++++++++++++++++++++++++++++++++----
+ 1 file changed, 37 insertions(+), 4 deletions(-)
+
+diff --git a/lttng-filter-interpreter.c b/lttng-filter-interpreter.c
+index 5d572437..6e5a5139 100644
+--- a/lttng-filter-interpreter.c
++++ b/lttng-filter-interpreter.c
+@@ -22,7 +22,7 @@ LTTNG_STACK_FRAME_NON_STANDARD(lttng_filter_interpret_bytecode);
+  * to handle user-space read.
+  */
+ static
+-char get_char(struct estack_entry *reg, size_t offset)
++char get_char(const struct estack_entry *reg, size_t offset)
+ {
+ 	if (unlikely(offset >= reg->u.s.seq_len))
+ 		return '\0';
+@@ -593,6 +593,39 @@ end:
+ 	return ret;
+ }
+ 
++#ifdef DEBUG
++
++#define DBG_USER_STR_CUTOFF 32
++
++/*
++ * In debug mode, print user string (truncated, if necessary).
++ */
++static inline
++void dbg_load_ref_user_str_printk(const struct estack_entry *user_str_reg)
++{
++	size_t pos = 0;
++	char last_char;
++	char user_str[DBG_USER_STR_CUTOFF];
++
++	pagefault_disable();
++	do {
++		last_char = get_char(user_str_reg, pos);
++		user_str[pos] = last_char;
++		pos++;
++	} while (last_char != '\0' && pos < sizeof(user_str));
++	pagefault_enable();
++
++	user_str[sizeof(user_str) - 1] = '\0';
++	dbg_printk("load field ref user string: '%s%s'\n", user_str,
++		last_char != '\0' ? "[...]" : "");
++}
++#else
++static inline
++void dbg_load_ref_user_str_printk(const struct estack_entry *user_str_reg)
++{
++}
++#endif
++
+ /*
+  * Return 0 (discard), or raise the 0x1 flag (log event).
+  * Currently, other flags are kept for future extensions and have no
+@@ -1313,7 +1346,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data,
+ 			estack_push(stack, top, ax, bx);
+ 			estack_ax(stack, top)->u.s.user_str =
+ 				*(const char * const *) &filter_stack_data[ref->offset];
+-			if (unlikely(!estack_ax(stack, top)->u.s.str)) {
++			if (unlikely(!estack_ax(stack, top)->u.s.user_str)) {
+ 				dbg_printk("Filter warning: loading a NULL string.\n");
+ 				ret = -EINVAL;
+ 				goto end;
+@@ -1322,7 +1355,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data,
+ 			estack_ax(stack, top)->u.s.literal_type =
+ 				ESTACK_STRING_LITERAL_TYPE_NONE;
+ 			estack_ax(stack, top)->u.s.user = 1;
+-			dbg_printk("ref load string %s\n", estack_ax(stack, top)->u.s.str);
++			dbg_load_ref_user_str_printk(estack_ax(stack, top));
+ 			next_pc += sizeof(struct load_op) + sizeof(struct field_ref);
+ 			PO;
+ 		}
+@@ -1340,7 +1373,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data,
+ 			estack_ax(stack, top)->u.s.user_str =
+ 				*(const char **) (&filter_stack_data[ref->offset
+ 								+ sizeof(unsigned long)]);
+-			if (unlikely(!estack_ax(stack, top)->u.s.str)) {
++			if (unlikely(!estack_ax(stack, top)->u.s.user_str)) {
+ 				dbg_printk("Filter warning: loading a NULL sequence.\n");
+ 				ret = -EINVAL;
+ 				goto end;
+-- 
+2.19.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch
new file mode 100644
index 0000000..71f99b8
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch
@@ -0,0 +1,91 @@
+From 49c603ef2dc6969f4454f0d849af00ee24bb7f04 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Thu, 4 Mar 2021 16:50:12 -0500
+Subject: [PATCH 3/4] fix: mm, tracing: record slab name for kmem_cache_free()
+ (v5.12)
+
+See upstream commit:
+
+  commit 3544de8ee6e4817278b15fe08658de49abf58954
+  Author: Jacob Wen <jian.w.wen@oracle.com>
+  Date:   Wed Feb 24 12:00:55 2021 -0800
+
+    mm, tracing: record slab name for kmem_cache_free()
+
+    Currently, a trace record generated by the RCU core is as below.
+
+    ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=00000000f3b49a66
+
+    It doesn't tell us what the RCU core has freed.
+
+    This patch adds the slab name to trace_kmem_cache_free().
+    The new format is as follows.
+
+    ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=0000000037f79c8d name=dentry
+    ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=00000000f78cb7b5 name=sock_inode_cache
+    ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=0000000018768985 name=pool_workqueue
+    ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=000000006a6cb484 name=radix_tree_node
+
+    We can use it to understand what the RCU core is going to free. For
+    example, some users maybe interested in when the RCU core starts
+    freeing reclaimable slabs like dentry to reduce memory pressure.
+
+    Link: https://lkml.kernel.org/r/20201216072804.8838-1-jian.w.wen@oracle.com
+
+Upstream-status: backport
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: I1ee2fc476614cadcc8d3ac5d8feddc7910e1aa3a
+---
+ instrumentation/events/lttng-module/kmem.h | 27 ++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/instrumentation/events/lttng-module/kmem.h b/instrumentation/events/lttng-module/kmem.h
+index b134620a..d787ea54 100644
+--- a/instrumentation/events/lttng-module/kmem.h
++++ b/instrumentation/events/lttng-module/kmem.h
+@@ -87,6 +87,32 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
+ 	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
+ )
+ 
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0))
++LTTNG_TRACEPOINT_EVENT(kfree,
++
++	TP_PROTO(unsigned long call_site, const void *ptr),
++
++	TP_ARGS(call_site, ptr),
++
++	TP_FIELDS(
++		ctf_integer_hex(unsigned long, call_site, call_site)
++		ctf_integer_hex(const void *, ptr, ptr)
++	)
++)
++
++LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
++
++	TP_PROTO(unsigned long call_site, const void *ptr, const char *name),
++
++	TP_ARGS(call_site, ptr, name),
++
++	TP_FIELDS(
++		ctf_integer_hex(unsigned long, call_site, call_site)
++		ctf_integer_hex(const void *, ptr, ptr)
++		ctf_string(name, name)
++	)
++)
++#else
+ LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free,
+ 
+ 	TP_PROTO(unsigned long call_site, const void *ptr),
+@@ -114,6 +140,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free,
+ 
+ 	TP_ARGS(call_site, ptr)
+ )
++#endif
+ 
+ #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0))
+ LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free,
+-- 
+2.19.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch
new file mode 100644
index 0000000..8a839c2
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch
@@ -0,0 +1,41 @@
+From 92cc3e7f76a545a2cd4828576971f1eea83f4e68 Mon Sep 17 00:00:00 2001
+From: Francis Deslauriers <francis.deslauriers@efficios.com>
+Date: Wed, 17 Mar 2021 10:40:56 -0400
+Subject: [PATCH 4/4] Fix: kretprobe: null ptr deref on session destroy
+
+The `filter_bytecode_runtime_head` list is currently not initialized for
+the return event of the kretprobe. This caused a kernel null ptr
+dereference when destroying a session. It can reproduced with the
+following commands:
+
+  lttng create
+  lttng enable-event -k --function=lttng_test_filter_event_write my_event
+  lttng start
+  lttng stop
+  lttng destroy
+
+Upstream-status: backport 
+
+Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: I1162ce8b10dd7237a26331531f048346b984eee7
+---
+ lttng-events.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lttng-events.c b/lttng-events.c
+index 984bd341..3450fa40 100644
+--- a/lttng-events.c
++++ b/lttng-events.c
+@@ -704,6 +704,8 @@ struct lttng_event *_lttng_event_create(struct lttng_channel *chan,
+ 		event_return->enabled = 0;
+ 		event_return->registered = 1;
+ 		event_return->instrumentation = itype;
++		INIT_LIST_HEAD(&event_return->bytecode_runtime_head);
++		INIT_LIST_HEAD(&event_return->enablers_ref_head);
+ 		/*
+ 		 * Populate lttng_event structure before kretprobe registration.
+ 		 */
+-- 
+2.19.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.4.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.5.bb
similarity index 73%
rename from poky/meta/recipes-kernel/lttng/lttng-modules_2.12.4.bb
rename to poky/meta/recipes-kernel/lttng/lttng-modules_2.12.5.bb
index 3ca59f7..5b05c64 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.4.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.5.bb
@@ -11,9 +11,13 @@
 
 SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
            file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
+           file://0001-Fix-memory-leaks-on-event-destroy.patch \
+           file://0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch  \
+           file://0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch \
+           file://0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch \
            "
 
-SRC_URI[sha256sum] = "fe66400fa1b85bff1b9ae24419c74e3bb7d358d643eade0594d81b48bd190688"
+SRC_URI[sha256sum] = "c4d1a1b42c728e37b6b7947ae16563a011c4b297311aa04d56f9a1791fb5a30a"
 
 export INSTALL_MOD_DIR="kernel/lttng-modules"
 
@@ -35,7 +39,8 @@
 SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.12 \
            file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
            "
-SRCREV_class-devupstream = "be71b60a327d7ad2588abc5cad2861177119972b"
-PV_class-devupstream = "2.12.3+git${SRCPV}"
+
+SRCREV_class-devupstream = "92cc3e7f76a545a2cd4828576971f1eea83f4e68"
+PV_class-devupstream = "2.12.5+git${SRCPV}"
 S_class-devupstream = "${WORKDIR}/git"
 SRCREV_FORMAT ?= "lttng_git"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.3.bb
similarity index 98%
rename from poky/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb
rename to poky/meta/recipes-kernel/lttng/lttng-tools_2.12.3.bb
index 52bfd36..7074096 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.3.bb
@@ -39,7 +39,7 @@
            file://determinism.patch \
            "
 
-SRC_URI[sha256sum] = "9ed9161795ff023b076f9f95afaa4f1f822ec42495c0fa04c586ab8fa74e84f1"
+SRC_URI[sha256sum] = "2890da230edd523fcf497e9eb28133b7606d64fa01bcbffadbfcba42104db153"
 
 inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
 
diff --git a/poky/meta/recipes-kernel/perf/perf.bb b/poky/meta/recipes-kernel/perf/perf.bb
index 5faf22a..1274df6 100644
--- a/poky/meta/recipes-kernel/perf/perf.bb
+++ b/poky/meta/recipes-kernel/perf/perf.bb
@@ -32,6 +32,7 @@
 # libunwind is not yet ported for some architectures
 PACKAGECONFIG_remove_arc = "libunwind"
 PACKAGECONFIG_remove_riscv64 = "libunwind"
+PACKAGECONFIG_remove_riscv32 = "libunwind"
 
 DEPENDS = " \
     virtual/${MLPREFIX}libc \
@@ -81,6 +82,7 @@
     AR="${AR}" \
     LD="${LD}" \
     EXTRA_CFLAGS="-ldw" \
+    YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \
     EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \
     perfexecdir=${libexecdir} \
     NO_GTK2=1 \
@@ -214,6 +216,51 @@
             ${S}/tools/build/Makefile.build
     fi
 
+    # start reproducibility substitutions
+    if [ -e "${S}/tools/perf/Makefile.config" ]; then
+        # The following line in the Makefle:
+        #     override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON_AUTO))
+        # "PYTHON" / "PYTHON_AUTO" have the full path as part of the variable. We've
+        # ensure that the environment is setup and we do not need the full path to be
+        # captured, since the symbol gets built into the executable, making it not
+        # reproducible.
+        sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO))),g' \
+            ${S}/tools/perf/Makefile.config
+
+        # The following line:
+        #     srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))),
+        # Captures the full src path of perf, which of course makes it not
+        # reproducible. We really only need the relative location 'tools/perf', so we
+        # change the Makefile line to remove everything before 'tools/perf'
+        sed -i -e "s%srcdir_SQ = \$(subst ','\\\'',\$(srcdir))%srcdir_SQ = \$(patsubst \%tools/perf,tools/perf,\$(subst ','\\\'',\$(srcdir)))%g" \
+            ${S}/tools/perf/Makefile.config
+    fi
+    if [ -e "${S}/tools/perf/tests/Build" ]; then
+        # OUTPUT is the full path, we have python on the path so we remove it from the
+        # definition. This is captured in the perf binary, so breaks reproducibility
+        sed -i -e 's,PYTHONPATH="BUILD_STR($(OUTPUT)python)",PYTHONPATH="BUILD_STR(python)",g' \
+            ${S}/tools/perf/tests/Build
+    fi
+    if [ -e "${S}/tools/perf/util/Build" ]; then
+        # To avoid bison generating #ifdefs that have captured paths, we make sure
+        # all the calls have YFLAGS, which contains prefix mapping information.
+        sed -i -e 's,$(BISON),$(BISON) $(YFLAGS),g' ${S}/tools/perf/util/Build
+    fi
+    if [ -e "${S}/scripts/Makefile.host" ]; then
+        # To avoid yacc (bison) generating #ifdefs that have captured paths, we make sure
+        # all the calls have YFLAGS, which contains prefix mapping information.
+        sed -i -e 's,$(YACC),$(YACC) $(YFLAGS),g' ${S}/scripts/Makefile.host
+    fi
+    if [ -e "${S}/tools/perf/pmu-events/Build" ]; then
+        target='$(OUTPUT)pmu-events/pmu-events.c $(V)'
+        replacement1='$(OUTPUT)pmu-events/pmu-events.c $(V)\n'
+        replacement2='\t$(srctree)/sort-pmuevents.py $(OUTPUT)pmu-events/pmu-events.c $(OUTPUT)pmu-events/pmu-events.c.new\n'
+        replacement3='\tcp $(OUTPUT)pmu-events/pmu-events.c.new $(OUTPUT)pmu-events/pmu-events.c'
+        sed -i -e "s,$target,$replacement1$replacement2$replacement3,g" \
+                       "${S}/tools/perf/pmu-events/Build"
+    fi
+    # end reproducibility substitutions
+
     # We need to ensure the --sysroot option in CC is preserved
     if [ -e "${S}/tools/perf/Makefile.perf" ]; then
         sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/perf/Makefile.perf
@@ -254,6 +301,14 @@
     # so we copy it from the sysroot unistd.h to the perf unistd.h
     install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/tools/include/uapi/asm-generic/unistd.h
     install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/include/uapi/asm-generic/unistd.h
+
+    # the fetcher is inhibited by the 'inherit kernelsrc', so we do a quick check and
+    # copy for a helper script we need
+    for p in $(echo ${FILESPATH} | tr ':' '\n'); do
+	if [ -e $p/sort-pmuevents.py ]; then
+	    cp $p/sort-pmuevents.py ${S}
+	fi
+    done
 }
 
 python do_package_prepend() {
diff --git a/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py b/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py
new file mode 100755
index 0000000..5ddf0f1
--- /dev/null
+++ b/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python3
+
+# perf pmu-events sorting tool
+#
+# Copyright (C) 2021 Bruce Ashfield
+#
+# SPDX-License-Identifier: MIT
+#
+
+import sys
+import os
+import re
+from collections import OrderedDict
+
+if len(sys.argv) < 2:
+    print( "[ERROR]: input and output pmu files missing" )
+    sys.exit(1)
+
+if len(sys.argv) < 3:
+    print( "[ERROR]: output pmu file missing" )
+    sys.exit(1)
+
+infile = sys.argv[1]
+outfile = sys.argv[2]
+
+if not os.path.exists(infile):
+    print( "ERROR. input file does not exist: %s" % infile )
+    sys.exit(1)
+
+if os.path.exists(outfile):
+    print( "WARNING. output file will be overwritten: %s" % infile )
+
+with open(infile, 'r') as file:
+    data = file.read()
+
+preamble_regex = re.compile( '^(.*?)^struct', re.MULTILINE | re.DOTALL )
+
+preamble = re.search( preamble_regex, data )
+struct_block_regex = re.compile( '^struct.*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
+field_regex =  re.compile( '{.*?},', re.MULTILINE | re.DOTALL )
+cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL )
+name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
+
+# create a dictionary structure to store all the structs, their
+# types and then their fields.
+entry_dict = {}
+for struct in re.findall( struct_block_regex, data ):
+    # print( "struct: %s %s" % (struct[0],struct[1]) )
+    entry_dict[struct[1]] = {}
+    entry_dict[struct[1]]['type'] = struct[0]
+    entry_dict[struct[1]]['fields'] = {}
+    for entry in re.findall( field_regex, struct[2] ):
+        #print( "    entry: %s" % entry )
+        cpuid = re.search( cpuid_regex, entry )
+        if cpuid:
+            #print( "    cpuid found: %s" % cpuid.group(1) )
+            entry_dict[struct[1]]['fields'][cpuid.group(1)] = entry
+            
+        name = re.search( name_regex, entry )
+        if name:
+            #print( "    name found: %s" % name.group(1) )
+            entry_dict[struct[1]]['fields'][name.group(1)] = entry
+        
+
+# created ordered dictionaries from the captured values. These are ordered by
+# a sorted() iteration of the keys. We don't care about the order we read
+# things, just the sorted order. Hency why we couldn't create these during
+# reading.
+#
+# yes, there's a more concise way to do this, but our nested dictionaries of
+# fields make it complex enough that it becomes unreadable.
+entry_dict_sorted = OrderedDict()
+for i in sorted(entry_dict.keys()):
+    entry_dict_sorted[i] = {}
+    entry_dict_sorted[i]['type'] = entry_dict[i]['type']
+    entry_dict_sorted[i]['fields'] = {}
+    for f in sorted(entry_dict[i]['fields'].keys()):
+        entry_dict_sorted[i]['fields'][f] = entry_dict[i]['fields'][f] 
+
+# dump the sorted elements to the outfile
+outf = open( outfile, 'w' )
+
+print( preamble.group(1) )
+outf.write( preamble.group(1) )
+for d in entry_dict_sorted:
+    outf.write( "struct %s %s[] = {\n" % (entry_dict_sorted[d]['type'],d) )
+    for f in entry_dict_sorted[d]['fields']:
+        outf.write( entry_dict_sorted[d]['fields'][f] + '\n' )
+
+    outf.write( "};\n" )
+
+outf.close()
+    
diff --git a/poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
index 46820ef..6ee0be5 100644
--- a/poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
+++ b/poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "UProbes kernel module for SystemTap"
-
+HOMEPAGE = "https://sourceware.org/systemtap/"
 require systemtap_git.inc
 
 DEPENDS = "systemtap virtual/kernel"
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch
deleted file mode 100644
index 7635c91..0000000
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From aebb72e025cbfbd4a6765354f6f565ad4ac89789 Mon Sep 17 00:00:00 2001
-From: Jun Zhao <barryjzhao@tencent.com>
-Date: Sun, 12 Jul 2020 05:48:48 +0800
-Subject: [PATCH] lavf/srt: fix build fail when used the libsrt 1.4.1
-
-lavf/srt: fix build fail when used the libsrt 1.4.1
-
-libsrt changed the:
-SRTO_SMOOTHER   -> SRTO_CONGESTION
-SRTO_STRICTENC  -> SRTO_ENFORCEDENCRYPTION
-and removed the front of deprecated options (SRTO_SMOOTHER/SRTO_STRICTENC)
-in the header, it's lead to build fail
-
-fix #8760
-
-Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/7c59e1b0f285cd7c7b35fcd71f49c5fd52cf9315]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
-Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
----
- libavformat/libsrt.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
-index 4de575b..4719ce0 100644
---- a/libavformat/libsrt.c
-+++ b/libavformat/libsrt.c
-@@ -313,8 +313,12 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
-         (s->pbkeylen >= 0 && libsrt_setsockopt(h, fd, SRTO_PBKEYLEN, "SRTO_PBKEYLEN", &s->pbkeylen, sizeof(s->pbkeylen)) < 0) ||
-         (s->passphrase && libsrt_setsockopt(h, fd, SRTO_PASSPHRASE, "SRTO_PASSPHRASE", s->passphrase, strlen(s->passphrase)) < 0) ||
- #if SRT_VERSION_VALUE >= 0x010302
-+#if SRT_VERSION_VALUE >= 0x010401
-+        (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_ENFORCEDENCRYPTION, "SRTO_ENFORCEDENCRYPTION", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#else
-         /* SRTO_STRICTENC == SRTO_ENFORCEDENCRYPTION (53), but for compatibility, we used SRTO_STRICTENC */
-         (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_STRICTENC, "SRTO_STRICTENC", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#endif
-         (s->kmrefreshrate >= 0 && libsrt_setsockopt(h, fd, SRTO_KMREFRESHRATE, "SRTO_KMREFRESHRATE", &s->kmrefreshrate, sizeof(s->kmrefreshrate)) < 0) ||
-         (s->kmpreannounce >= 0 && libsrt_setsockopt(h, fd, SRTO_KMPREANNOUNCE, "SRTO_KMPREANNOUNCE", &s->kmpreannounce, sizeof(s->kmpreannounce)) < 0) ||
- #endif
-@@ -333,7 +337,11 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
-         (s->lossmaxttl >= 0 && libsrt_setsockopt(h, fd, SRTO_LOSSMAXTTL, "SRTO_LOSSMAXTTL", &s->lossmaxttl, sizeof(s->lossmaxttl)) < 0) ||
-         (s->minversion >= 0 && libsrt_setsockopt(h, fd, SRTO_MINVERSION, "SRTO_MINVERSION", &s->minversion, sizeof(s->minversion)) < 0) ||
-         (s->streamid && libsrt_setsockopt(h, fd, SRTO_STREAMID, "SRTO_STREAMID", s->streamid, strlen(s->streamid)) < 0) ||
-+#if SRT_VERSION_VALUE >= 0x010401
-+        (s->smoother && libsrt_setsockopt(h, fd, SRTO_CONGESTION, "SRTO_CONGESTION", s->smoother, strlen(s->smoother)) < 0) ||
-+#else
-         (s->smoother && libsrt_setsockopt(h, fd, SRTO_SMOOTHER, "SRTO_SMOOTHER", s->smoother, strlen(s->smoother)) < 0) ||
-+#endif
-         (s->messageapi >= 0 && libsrt_setsockopt(h, fd, SRTO_MESSAGEAPI, "SRTO_MESSAGEAPI", &s->messageapi, sizeof(s->messageapi)) < 0) ||
-         (s->payload_size >= 0 && libsrt_setsockopt(h, fd, SRTO_PAYLOADSIZE, "SRTO_PAYLOADSIZE", &s->payload_size, sizeof(s->payload_size)) < 0) ||
-         ((h->flags & AVIO_FLAG_WRITE) && libsrt_setsockopt(h, fd, SRTO_SENDER, "SRTO_SENDER", &yes, sizeof(yes)) < 0)) {
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35964.patch b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35964.patch
deleted file mode 100644
index 6b96bd6..0000000
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35964.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 27a99e2c7d450fef15594671eef4465c8a166bd7 Mon Sep 17 00:00:00 2001
-From: Michael Niedermayer <michael@niedermayer.cc>
-Date: Wed, 28 Oct 2020 20:11:54 +0100
-Subject: [PATCH] avformat/vividas: improve extradata packing checks in
- track_header()
-
-Fixes: out of array accesses
-Fixes: 26622/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-6581200338288640
-
-Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
-Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
-Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/27a99e2c7d450fef15594671eef4465c8a166bd7]
-
-CVE: CVE-2020-35964
-
-Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
----
- libavformat/vividas.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/libavformat/vividas.c b/libavformat/vividas.c
-index 83d0ed116787..46c66bf9a0ae 100644
---- a/libavformat/vividas.c
-+++ b/libavformat/vividas.c
-@@ -28,6 +28,7 @@
-  * @sa http://wiki.multimedia.cx/index.php?title=Vividas_VIV
-  */
- 
-+#include "libavutil/avassert.h"
- #include "libavutil/intreadwrite.h"
- #include "avio_internal.h"
- #include "avformat.h"
-@@ -379,7 +380,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s,  uint8_t *
- 
-         if (avio_tell(pb) < off) {
-             int num_data;
--            int xd_size = 0;
-+            int xd_size = 1;
-             int data_len[256];
-             int offset = 1;
-             uint8_t *p;
-@@ -393,10 +394,10 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s,  uint8_t *
-                     return AVERROR_INVALIDDATA;
-                 }
-                 data_len[j] = len;
--                xd_size += len;
-+                xd_size += len + 1 + len/255;
-             }
- 
--            ret = ff_alloc_extradata(st->codecpar, 64 + xd_size + xd_size / 255);
-+            ret = ff_alloc_extradata(st->codecpar, xd_size);
-             if (ret < 0)
-                 return ret;
- 
-@@ -405,9 +406,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s,  uint8_t *
- 
-             for (j = 0; j < num_data - 1; j++) {
-                 unsigned delta = av_xiphlacing(&p[offset], data_len[j]);
--                if (delta > data_len[j]) {
--                    return AVERROR_INVALIDDATA;
--                }
-+                av_assert0(delta <= xd_size - offset);
-                 offset += delta;
-             }
- 
-@@ -418,6 +417,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s,  uint8_t *
-                     av_freep(&st->codecpar->extradata);
-                     break;
-                 }
-+                av_assert0(data_len[j] <= xd_size - offset);
-                 offset += data_len[j];
-             }
- 
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35965.patch b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35965.patch
deleted file mode 100644
index ddab8e9..0000000
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2020-35965.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3e5959b3457f7f1856d997261e6ac672bba49e8b Mon Sep 17 00:00:00 2001
-From: Michael Niedermayer <michael@niedermayer.cc>
-Date: Sat, 24 Oct 2020 22:21:48 +0200
-Subject: [PATCH] avcodec/exr: Check ymin vs. h
-
-Fixes: out of array access
-Fixes: 26532/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5613925708857344
-Fixes: 27443/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5631239813595136
-
-Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
-Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
-Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/3e5959b3457f7f1856d997261e6ac672bba49e8b]
-
-CVE: CVE-2020-35965
-
-Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
----
- libavcodec/exr.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libavcodec/exr.c b/libavcodec/exr.c
-index e907c5c46401..8b701d1cd298 100644
---- a/libavcodec/exr.c
-+++ b/libavcodec/exr.c
-@@ -1830,7 +1830,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
-     // Zero out the start if ymin is not 0
-     for (i = 0; i < planes; i++) {
-         ptr = picture->data[i];
--        for (y = 0; y < s->ymin; y++) {
-+        for (y = 0; y < FFMIN(s->ymin, s->h); y++) {
-             memset(ptr, 0, out_line_size);
-             ptr += picture->linesize[i];
-         }
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.2.bb
similarity index 95%
rename from poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb
rename to poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.2.bb
index bd21552..08be38c 100644
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb
+++ b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.2.bb
@@ -25,12 +25,9 @@
 
 SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
            file://mips64_cpu_detection.patch \
-           file://0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch \
            file://0001-libavutil-include-assembly-with-full-path-from-sourc.patch \
-           file://CVE-2020-35964.patch \
-           file://CVE-2020-35965.patch \
            "
-SRC_URI[sha256sum] = "ad009240d46e307b4e03a213a0f49c11b650e445b1f8be0dda2a9212b34d2ffb"
+SRC_URI[sha256sum] = "46e4e64f1dd0233cbc0934b9f1c0da676008cad34725113fb7f802cfa84ccddb"
 
 # Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
 ARM_INSTRUCTION_SET_armv4 = "arm"
@@ -46,7 +43,7 @@
 inherit autotools pkgconfig
 
 PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc avresample \
-                   alsa bzlib gpl lzma pic pthreads shared theora x264 zlib \
+                   alsa bzlib lzma pic pthreads shared theora zlib \
                    ${@bb.utils.contains('AVAILTUNES', 'mips32r2', 'mips32r2', '', d)} \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xv xcb', '', d)}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb
similarity index 94%
rename from poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb
index bad9921..2a56967 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb
@@ -12,7 +12,7 @@
            file://0001-connect-has-a-different-signature-on-musl.patch \
            "
 
-SRC_URI[sha256sum] = "3025fee3607caf5069154c099533785675916e044ee92c936bbeacdda3750f26"
+SRC_URI[sha256sum] = "ffbd194c40912cb5e7fca2863648bf9dd8257b7af97d3a60c4fcd4efd8526ccf"
 
 DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base"
 RRECOMMENDS_${PN} = "git"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.4.bb
similarity index 96%
rename from poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.4.bb
index b49201f..4670ab3 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.4.bb
@@ -12,7 +12,7 @@
            file://gst-player.desktop \
            "
 
-SRCREV = "06599904baa5d0e47b5cb9501372156567760f8e"
+SRCREV = "959bb246a5b1f5f9c78557da11c3f22b42ff89c0"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb
similarity index 90%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb
index baf87fd..6a84f92 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb
@@ -12,7 +12,7 @@
                     "
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz"
-SRC_URI[sha256sum] = "ad20546bcd78ac1e7cf194666d73c4f33efeb62647d2b6af22993b540699e91c"
+SRC_URI[sha256sum] = "344a463badca216c2cef6ee36f9510c190862bdee48dc4591c0a430df7e8c396"
 
 S = "${WORKDIR}/gst-libav-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.4.bb
similarity index 95%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.4.bb
index d55f45a..d38be03 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.4.bb
@@ -10,7 +10,7 @@
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "ed0f26504e9a60e15055134410f156e40952336410f2a59bdbbda45e61e8b93f"
+SRC_URI[sha256sum] = "e35051cf891eb2f31d6fcf176ff37d985f97f33874ac31b0b3ad3b5b95035043"
 
 S = "${WORKDIR}/gst-omx-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb
similarity index 98%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb
index b1e3664..ce2082e 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb
@@ -11,7 +11,7 @@
            file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
            file://0005-msdk-fix-includedir-path.patch \
            "
-SRC_URI[sha256sum] = "b7e34b6b86272588fbd8b314dadfa6ceff895198cfb59e2950378e9e31ff22e0"
+SRC_URI[sha256sum] = "74e806bc5595b18c70e9ca93571e27e79dfb808e5d2e7967afa952b52e99c85f"
 
 S = "${WORKDIR}/gst-plugins-bad-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb
similarity index 97%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb
index 86b0f27..728a99e 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb
@@ -12,7 +12,7 @@
            file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
            file://0004-glimagesink-Downrank-to-marginal.patch \
            "
-SRC_URI[sha256sum] = "dbfa20283848f0347a223dd8523dfb62e09e5220b21b1d157a8b0c8b67ba9f52"
+SRC_URI[sha256sum] = "29e53229a84d01d722f6f6db13087231cdf6113dd85c25746b9b58c3d68e8323"
 
 S = "${WORKDIR}/gst-plugins-base-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch
new file mode 100644
index 0000000..14a9fe2
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch
@@ -0,0 +1,33 @@
+From ec1949dffd931d0ec7e4f67108a08ab1e2af0cfe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Tue, 16 Mar 2021 19:25:36 +0200
+Subject: [PATCH] rtpjitterbuffer: Fix parsing of the mediaclk:direct= field
+
+Due to an off-by-one when parsing the string, the most significant digit
+or the clock offset was skipped when parsing the offset.
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/910>
+
+Upstream-Status: Backport [b5bb4ede3a42273fafc1054f9cf106ca527e3c26]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ gst/rtpmanager/gstrtpjitterbuffer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
+index 60d8ad875..02fe15adc 100644
+--- a/gst/rtpmanager/gstrtpjitterbuffer.c
++++ b/gst/rtpmanager/gstrtpjitterbuffer.c
+@@ -1534,7 +1534,7 @@ gst_jitter_buffer_sink_parse_caps (GstRtpJitterBuffer * jitterbuffer,
+       GST_DEBUG_OBJECT (jitterbuffer, "Got media clock %s", mediaclk);
+ 
+       if (!g_str_has_prefix (mediaclk, "direct=") ||
+-          !g_ascii_string_to_unsigned (&mediaclk[8], 10, 0, G_MAXUINT64,
++          !g_ascii_string_to_unsigned (&mediaclk[7], 10, 0, G_MAXUINT64,
+               &clock_offset, NULL))
+         GST_FIXME_OBJECT (jitterbuffer, "Unsupported media clock");
+       if (strstr (mediaclk, "rate=") != NULL) {
+-- 
+2.31.0
+
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb
similarity index 95%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb
index 93c6616..07cacdc 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb
@@ -6,9 +6,10 @@
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
            file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
+           file://0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch \
            "
 
-SRC_URI[sha256sum] = "9b3b8e05d4d6073bf929fb33e2d8f74dd81ff21fa5b50c3273c78dfa2ab9c5cb"
+SRC_URI[sha256sum] = "b6e50e3a9bbcd56ee6ec71c33aa8332cc9c926b0c1fae995aac8b3040ebe39b0"
 
 S = "${WORKDIR}/gst-plugins-good-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.4.bb
similarity index 94%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.4.bb
index 876a926..932fa7f 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.4.bb
@@ -13,7 +13,7 @@
 SRC_URI = " \
             https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
             "
-SRC_URI[sha256sum] = "70f7429b25dd2f714eb18e80af61b1363b1f63019e16cd28e086e3a619eaa992"
+SRC_URI[sha256sum] = "218df0ce0d31e8ca9cdeb01a3b0c573172cc9c21bb3d41811c7820145623d13c"
 
 S = "${WORKDIR}/gst-plugins-ugly-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.4.bb
similarity index 91%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.4.bb
index 90b6fc3..49de3da 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.4.bb
@@ -8,7 +8,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "4e630735276e08ff4d70337aa5d91fd008e5f1ed3dc0993674cd5820e264259a"
+SRC_URI[sha256sum] = "cb68e08a7e825e08b83a12a22dcd6e4f1b328a7b02a7ac84f42f68f4ddc7098e"
 
 DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
 RDEPENDS_${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.bb
similarity index 90%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.bb
index d6aaa5d..f7bfe98 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.bb
@@ -10,7 +10,7 @@
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "4f7757293b3d73dc49768b7392791668c4d0c21d41824624ffbd75c7f9ee0168"
+SRC_URI[sha256sum] = "a46bb8de40b971a048580279d2660e616796f871ad3ed00c8a95fe4d273a6c94"
 
 S = "${WORKDIR}/${PNREAL}-${PV}"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.4.bb
similarity index 93%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.4.bb
index 23040ad..a268d79 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.4.bb
@@ -1,4 +1,5 @@
 SUMMARY = "VA-API support to GStreamer"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
 DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \
 based plugins for GStreamer and helper libraries: `vaapidecode', \
 `vaapiconvert', and `vaapisink'."
@@ -10,7 +11,7 @@
 
 SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "ae9877f15757a661d4dfe6a09755a2faa959ab60752f14ca26b7ff10765e1f12"
+SRC_URI[sha256sum] = "92db98af86f3150d429c9ab17e88d2364f9c07a140c8f445ed739e8f10252aea"
 
 S = "${WORKDIR}/${REALPN}-${PV}"
 DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.3.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb
similarity index 94%
rename from poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.3.bb
rename to poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb
index 9cb0772..8562070 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.3.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb
@@ -21,7 +21,7 @@
            file://0003-meson-Add-option-for-installed-tests.patch \
            file://0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \
            "
-SRC_URI[sha256sum] = "0c2e09e18f2df69a99b5cb3bd53c597b3cc2e35cf6c98043bb86a66f3d312100"
+SRC_URI[sha256sum] = "9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5"
 
 PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
                    check \
@@ -30,6 +30,7 @@
 
 PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false"
 PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false"
+PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled"
 PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled"
 PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled-tests=true,-Dtests=disabled -Dinstalled-tests=false"
 PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
diff --git a/poky/meta/recipes-rt/rt-tests/rt-tests_1.10.bb b/poky/meta/recipes-rt/rt-tests/rt-tests_1.10.bb
index 2834cab..89e3323 100644
--- a/poky/meta/recipes-rt/rt-tests/rt-tests_1.10.bb
+++ b/poky/meta/recipes-rt/rt-tests/rt-tests_1.10.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Real-Time preemption testcases"
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
+HOMEPAGE = "https://wiki.linuxfoundation.org/realtime/documentation/start"
+DESCRIPTION = "The main aim of the PREEMPT_RT patch is to minimize the amount of kernel code that is non-preemptible Therefore several substitution mechanisms and new mechanisms are implemented."
 SECTION = "tests"
 DEPENDS = "linux-libc-headers virtual/libc numactl"
 LICENSE = "GPLv2 & GPLv2+"
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch
new file mode 100644
index 0000000..93bda4d
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch
@@ -0,0 +1,77 @@
+From 40520b0de69d8ca8e659248f5ffe641f33cc6dee Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 9 Mar 2021 14:16:58 -0800
+Subject: [PATCH] Extend atomics check to include 1-byte CAS test
+
+Rename ATOMIC_INT64_REQUIRES_LIBATOMIC to ATOMICS_REQUIRE_LIBATOMIC so
+it can reflect broader range which is now checked
+
+Rename ATOMIC_INT64_IS_BUILTIN to ATOMICS_ARE_BUILTIN
+
+Upstream-Status: Submitted [https://bugs.webkit.org/attachment.cgi?bugid=222959]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Source/JavaScriptCore/CMakeLists.txt   |  2 +-
+ Source/WebKit/CMakeLists.txt           |  2 +-
+ Source/cmake/WebKitCompilerFlags.cmake | 15 ++++++++++-----
+ 3 files changed, 12 insertions(+), 7 deletions(-)
+
+--- a/Source/JavaScriptCore/CMakeLists.txt
++++ b/Source/JavaScriptCore/CMakeLists.txt
+@@ -129,7 +129,7 @@ if (USE_CAPSTONE)
+     list(APPEND JavaScriptCore_LIBRARIES capstone)
+ endif ()
+ 
+-if (ATOMIC_INT64_REQUIRES_LIBATOMIC)
++if (ATOMICS_REQUIRE_LIBATOMIC)
+     list(APPEND JavaScriptCore_LIBRARIES atomic)
+ endif ()
+ 
+--- a/Source/WebKit/CMakeLists.txt
++++ b/Source/WebKit/CMakeLists.txt
+@@ -337,7 +337,7 @@ if (USE_LIBWEBRTC)
+     list(APPEND WebKit_LIBRARIES webrtc)
+ endif ()
+ 
+-if (ATOMIC_INT64_REQUIRES_LIBATOMIC)
++if (ATOMICS_REQUIRE_LIBATOMIC)
+     list(APPEND WebKit_PRIVATE_LIBRARIES atomic)
+ endif ()
+ 
+--- a/Source/cmake/WebKitCompilerFlags.cmake
++++ b/Source/cmake/WebKitCompilerFlags.cmake
+@@ -280,12 +280,17 @@ endif ()
+ if (COMPILER_IS_GCC_OR_CLANG)
+     set(ATOMIC_TEST_SOURCE "
+         #include <atomic>
+-        int main() { std::atomic<int64_t> i(0); i++; return 0; }
++        int main() {
++          std::atomic<int64_t> i(0);
++          std::atomic<int8_t> j(0);
++          i++; j++;
++          return 0;
++        }
+     ")
+-    check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMIC_INT64_IS_BUILTIN)
+-    if (NOT ATOMIC_INT64_IS_BUILTIN)
++    check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMICS_ARE_BUILTIN)
++    if (NOT ATOMICS_ARE_BUILTIN)
+         set(CMAKE_REQUIRED_LIBRARIES atomic)
+-        check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMIC_INT64_REQUIRES_LIBATOMIC)
++        check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMICS_REQUIRE_LIBATOMIC)
+         unset(CMAKE_REQUIRED_LIBRARIES)
+     endif ()
+ endif ()
+--- a/Source/WTF/wtf/CMakeLists.txt
++++ b/Source/WTF/wtf/CMakeLists.txt
+@@ -529,6 +529,10 @@ list(APPEND WTF_LIBRARIES
+     ICU::uc
+ )
+ 
++if (ATOMICS_REQUIRE_LIBATOMIC)
++    list(APPEND WTF_LIBRARIES atomic)
++endif ()
++
+ set(WTF_INTERFACE_LIBRARIES WTF)
+ set(WTF_INTERFACE_INCLUDE_DIRECTORIES ${WTF_FRAMEWORK_HEADERS_DIR})
+ set(WTF_INTERFACE_DEPENDENCIES WTF_CopyHeaders)
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
index 6dcb529..a13b394 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
@@ -11,11 +11,9 @@
  Source/WTF/wtf/PlatformHave.h                  |  2 +-
  2 files changed, 6 insertions(+), 6 deletions(-)
 
-diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h
-index c5052527..95ef98b5 100644
 --- a/Source/JavaScriptCore/runtime/MachineContext.h
 +++ b/Source/JavaScriptCore/runtime/MachineContext.h
-@@ -196,7 +196,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext)
+@@ -196,7 +196,7 @@ static inline void*& stackPointerImpl(mc
  #error Unknown Architecture
  #endif
  
@@ -24,7 +22,7 @@
  
  #if CPU(X86)
      return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]);
-@@ -347,7 +347,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext)
+@@ -347,7 +347,7 @@ static inline void*& framePointerImpl(mc
  #error Unknown Architecture
  #endif
  
@@ -33,7 +31,7 @@
  
  // The following sequence depends on glibc's sys/ucontext.h.
  #if CPU(X86)
-@@ -498,7 +498,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext)
+@@ -498,7 +498,7 @@ static inline void*& instructionPointerI
  #error Unknown Architecture
  #endif
  
@@ -42,7 +40,7 @@
  
  // The following sequence depends on glibc's sys/ucontext.h.
  #if CPU(X86)
-@@ -656,7 +656,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext)
+@@ -656,7 +656,7 @@ inline void*& argumentPointer<1>(mcontex
  #error Unknown Architecture
  #endif
  
@@ -51,7 +49,7 @@
  
  // The following sequence depends on glibc's sys/ucontext.h.
  #if CPU(X86)
-@@ -773,7 +773,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext)
+@@ -773,7 +773,7 @@ inline void*& llintInstructionPointer(mc
  #error Unknown Architecture
  #endif
  
@@ -60,11 +58,9 @@
  
  // The following sequence depends on glibc's sys/ucontext.h.
  #if CPU(X86)
-diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h
-index daca20fe..53eae6ba 100644
 --- a/Source/WTF/wtf/PlatformHave.h
 +++ b/Source/WTF/wtf/PlatformHave.h
-@@ -222,7 +222,7 @@
+@@ -202,7 +202,7 @@
  #define HAVE_HOSTED_CORE_ANIMATION 1
  #endif
  
@@ -73,3 +69,23 @@
  #define HAVE_MACHINE_CONTEXT 1
  #endif
  
+--- a/Source/WebCore/xml/XPathGrammar.cpp
++++ b/Source/WebCore/xml/XPathGrammar.cpp
+@@ -966,7 +966,7 @@ int yydebug;
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined __GLIBC__ && defined _STRING_H
++#  if defined __linux__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
+@@ -989,7 +989,7 @@ yystrlen (yystr)
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
++#  if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
new file mode 100644
index 0000000..dc3a71d
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
@@ -0,0 +1,74 @@
+reduce thread stack and heap usage for javascriptcore on musl
+
+default sizes for musl are smaller compared to glibc, this matches
+to musl defaults, avoid stack overflow crashes in jscore
+
+This is based on Alpine Linux's patch based on suggestion from
+https://bugs.webkit.org/show_bug.cgi?id=187485
+
+Real solution would entail more as the suggestions to increase
+stack size via -Wl,-z,stack-size=N does not work fully and also
+setting DEFAULT_THREAD_STACK_SIZE_IN_KB alone is not enough either
+
+This patch only changes behavior when using musl, the defaults for
+glibc in OE remains same
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/Source/JavaScriptCore/runtime/OptionsList.h
++++ b/Source/JavaScriptCore/runtime/OptionsList.h
+@@ -75,6 +75,18 @@ constexpr bool enableWebAssemblyStreamin
+ // On instantiation of the first VM instance, the Options will be write protected
+ // and cannot be modified thereafter.
+ 
++#if OS(LINUX) && !defined(__GLIBC__)
++// non-glibc options on linux ( musl )
++constexpr unsigned jscMaxPerThreadStack = 128 * KB;
++constexpr unsigned jscSoftReservedZoneSize = 32 * KB;
++constexpr unsigned jscReservedZoneSize = 16 * KB;
++#else
++//default
++constexpr unsigned jscMaxPerThreadStack = 4 * MB;
++constexpr unsigned jscSoftReservedZoneSize = 128 * KB;
++constexpr unsigned jscReservedZoneSize = 64 * KB;
++#endif
++
+ #define FOR_EACH_JSC_OPTION(v)                                          \
+     v(Bool, useKernTCSM, defaultTCSMValue(), Normal, "Note: this needs to go before other options since they depend on this value.") \
+     v(Bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \
+@@ -90,9 +102,9 @@ constexpr bool enableWebAssemblyStreamin
+     \
+     v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \
+     \
+-    v(Unsigned, maxPerThreadStackUsage, 5 * MB, Normal, "Max allowed stack usage by the VM") \
+-    v(Unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
+-    v(Unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
++    v(Unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, Normal, "Max allowed stack usage by the VM") \
++    v(Unsigned, softReservedZoneSize, jscSoftReservedZoneSize, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
++    v(Unsigned, reservedZoneSize, jscReservedZoneSize, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
+     \
+     v(Bool, crashOnDisallowedVMEntry, ASSERT_ENABLED, Normal, "Forces a crash if we attempt to enter the VM when disallowed") \
+     v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \
+@@ -601,7 +613,7 @@ public:
+     bool init(const char*);
+     bool isInRange(unsigned);
+     const char* rangeString() const { return (m_state > InitError) ? m_rangeString : s_nullRangeStr; }
+-    
++
+     void dump(PrintStream& out) const;
+ 
+ private:
+--- a/Source/WTF/wtf/Threading.h
++++ b/Source/WTF/wtf/Threading.h
+@@ -56,6 +56,10 @@
+ #include <array>
+ #endif
+ 
++#if OS(LINUX) && !defined(__GLIBC__)
++#define DEFAULT_THREAD_STACK_SIZE_IN_KB 128
++#endif
++
+ namespace WTF {
+ 
+ class AbstractLocker;
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch b/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch
new file mode 100644
index 0000000..0493150
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch
@@ -0,0 +1,22 @@
+From: Alberto Garcia <berto@igalia.com>
+Subject: Reduce memory usage when not using the Gold linker
+Bug-Debian: https://bugs.debian.org/949621
+Forwarded: no
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/Source/cmake/OptionsCommon.cmake
++++ b/Source/cmake/OptionsCommon.cmake
+@@ -95,6 +95,12 @@ option(GCC_OFFLINEASM_SOURCE_MAP
+   "Produce debug line information for offlineasm-generated code"
+   ${GCC_OFFLINEASM_SOURCE_MAP_DEFAULT})
+ 
++# Pass --reduce-memory-overheads to the bfd linker in order to save memory
++if (NOT USE_LD_GOLD)
++    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads")
++    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads")
++endif ()
++
+ # Enable the usage of OpenMP.
+ #  - At this moment, OpenMP is only used as an alternative implementation
+ #    to native threads for the parallelization of the SVG filters.
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb
index 2928b8e..ff4c496 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb
+++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb
@@ -18,7 +18,11 @@
            file://0001-Fix-build-with-musl.patch \
            file://include_array.patch \
            file://include_xutil.patch \
+           file://reduce-memory-overheads.patch \
+           file://0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch \
+           file://musl-lower-stack-usage.patch \
            "
+
 SRC_URI[sha256sum] = "7d0dab08e3c5ae07bec80b2822ef42e952765d5724cac86eb23999bfed5a7f1f"
 
 inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
@@ -55,6 +59,7 @@
 PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
 PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
 PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
+PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
 
 # webkitgtk is full of /usr/bin/env python, particular for generating docs
 do_configure[postfuncs] += "setup_python_link"
@@ -66,7 +71,6 @@
 
 EXTRA_OECMAKE = " \
 		-DPORT=GTK \
-		-DCMAKE_BUILD_TYPE=Release \
 		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
 		${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
 		-DENABLE_MINIBROWSER=ON \
diff --git a/poky/meta/recipes-support/attr/attr_2.4.48.bb b/poky/meta/recipes-support/attr/attr_2.4.48.bb
deleted file mode 100644
index 530d4e4..0000000
--- a/poky/meta/recipes-support/attr/attr_2.4.48.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require attr.inc
-
-SRC_URI[md5sum] = "bc1e5cb5c96d99b24886f1f527d3bb3d"
-SRC_URI[sha256sum] = "5ead72b358ec709ed00bbf7a9eaef1654baad937c001c044fe8b74c57f5324e7"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/attr/attr_2.5.1.bb b/poky/meta/recipes-support/attr/attr_2.5.1.bb
new file mode 100644
index 0000000..5c5f7bc
--- /dev/null
+++ b/poky/meta/recipes-support/attr/attr_2.5.1.bb
@@ -0,0 +1,5 @@
+require attr.inc
+
+SRC_URI[sha256sum] = "bae1c6949b258a0d68001367ce0c741cebdacdd3b62965d17e5eb23cd78adaf8"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb b/poky/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb
similarity index 87%
rename from poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
rename to poky/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb
index fd57f8f..611c0fb 100644
--- a/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
+++ b/poky/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb
@@ -11,13 +11,14 @@
 
 SRC_URI = "git://github.com/intel/${BPN}"
 
-SRCREV = "a17f0e3ff8669dd3b1c44a741ae4f8162155faed"
+SRCREV = "c0673962a8ec1624b5189dc1d24f33fe4f06785a"
 S = "${WORKDIR}/git"
 PV .= "+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
 
-RDEPENDS_${PN} = "python3-core python3-compression python3-mmap python3-setuptools python3-fcntl python3-six"
+# Need df from coreutils
+RDEPENDS_${PN} = "python3-core python3-compression python3-mmap python3-setuptools python3-fcntl python3-six coreutils"
 
 inherit python3native
 inherit setuptools3
diff --git a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb b/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb
index 258f8c9..19e991e 100644
--- a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb
+++ b/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb
@@ -1,4 +1,6 @@
 SUMMARY = "Boost.Build"
+DESCRIPTION = "B2 makes it easy to build C++ projects, everywhere."
+HOMEPAGE = "https://github.com/boostorg/build"
 SECTION = "devel"
 
 LICENSE = "BSL-1.0"
diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.7.0.bb b/poky/meta/recipes-support/gnutls/gnutls_3.7.1.bb
similarity index 96%
rename from poky/meta/recipes-support/gnutls/gnutls_3.7.0.bb
rename to poky/meta/recipes-support/gnutls/gnutls_3.7.1.bb
index 1aa94ec..51d472c 100644
--- a/poky/meta/recipes-support/gnutls/gnutls_3.7.0.bb
+++ b/poky/meta/recipes-support/gnutls/gnutls_3.7.1.bb
@@ -23,7 +23,7 @@
            file://arm_eabi.patch \
            "
 
-SRC_URI[sha256sum] = "49e2a22691d252c9f24a9829b293a8f359095bc5a818351f05f1c0a5188a1df8"
+SRC_URI[sha256sum] = "3777d7963eca5e06eb315686163b7b3f5045e2baac5e54e038ace9835e5cac6f"
 
 inherit autotools texinfo pkgconfig gettext lib_package gtk-doc
 
diff --git a/poky/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb b/poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb
similarity index 90%
rename from poky/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb
rename to poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb
index 9e02a0f..f915716 100644
--- a/poky/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb
+++ b/poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb
@@ -8,8 +8,8 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
-SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=http;branch=main;"
-SRCREV = "a36019e5014bff251f83d522ddcfebaecf52afd3"
+SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=https;branch=main;"
+SRCREV = "3c012d266acaeda93d3e61ec11b8c18c1964fce1" 
 
 # inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
 # are inhibited by allarch
diff --git a/poky/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch b/poky/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch
deleted file mode 100644
index 79e1475..0000000
--- a/poky/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 52d603212173d4502800bf746436a93f806a8898 Mon Sep 17 00:00:00 2001
-From: Allen Winter <allen.winter@kdab.com>
-Date: Sat, 31 Oct 2020 17:38:01 -0400
-Subject: [PATCH] Fix build with icu-68.1
-
-Use stdbool.h to define true and false when possible
-
-Issue#448
----
- ConfigureChecks.cmake   |  1 +
- config.h.cmake          |  3 +++
- src/libical/icalrecur.c | 10 ++++++++--
- 3 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
-index e4d0e2ec..bba33fa9 100644
---- a/ConfigureChecks.cmake
-+++ b/ConfigureChecks.cmake
-@@ -10,6 +10,7 @@ check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H)
- check_include_files(fcntl.h HAVE_FCNTL_H)
- check_include_files(unistd.h HAVE_UNISTD_H)
- check_include_files(wctype.h HAVE_WCTYPE_H)
-+check_include_files(stdbool.h HAVE_STDBOOL_H)
- 
- include(CheckFunctionExists)
- if(WIN32 AND MSVC)
-diff --git a/config.h.cmake b/config.h.cmake
-index 8fd3421b..c8008692 100644
---- a/config.h.cmake
-+++ b/config.h.cmake
-@@ -39,6 +39,9 @@
- /* Define to 1 if you have the <dirent.h> header file. */
- #cmakedefine HAVE_DIRENT_H 1
- 
-+/* Define to 1 if you have the <stdbool.h> header file. */
-+#cmakedefine HAVE_STDBOOL_H 1
-+
- /* Define if we have pthread. */
- #cmakedefine HAVE_PTHREAD_ATTR_GET_NP 1
- #cmakedefine HAVE_PTHREAD_GETATTR_NP 1
-diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c
-index 73178450..b3f054b8 100644
---- a/src/libical/icalrecur.c
-+++ b/src/libical/icalrecur.c
-@@ -145,6 +145,12 @@
- #if defined(HAVE_LIBICU)
- #include <unicode/ucal.h>
- #include <unicode/ustring.h>
-+#if defined(HAVE_STDBOOL_H)
-+#include <stdbool.h>
-+#else
-+#define false 0
-+#define true 1
-+#endif
- #define RSCALE_IS_SUPPORTED 1
- #else
- #define RSCALE_IS_SUPPORTED 0
-@@ -1018,7 +1024,7 @@ icalarray *icalrecurrencetype_rscale_supported_calendars(void)
- 
-     calendars = icalarray_new(sizeof(const char **), 20);
- 
--    en = ucal_getKeywordValuesForLocale("calendar", NULL, FALSE, &status);
-+    en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
-     while ((cal = uenum_next(en, NULL, &status))) {
-         cal = icalmemory_tmp_copy(cal);
-         icalarray_append(calendars, &cal);
-@@ -1411,7 +1417,7 @@ static int initialize_rscale(icalrecur_iterator *impl)
-         }
- 
-         /* Check if specified calendar is supported */
--        en = ucal_getKeywordValuesForLocale("calendar", NULL, FALSE, &status);
-+        en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
-         while ((cal = uenum_next(en, NULL, &status))) {
-             if (!strcmp(cal, rule.rscale)) {
-                 is_hebrew = !strcmp(rule.rscale, "hebrew");
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch b/poky/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch
deleted file mode 100644
index b7b757d..0000000
--- a/poky/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e33bc310238bba1690f2c71ad333e10b9e422ea9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Sat, 19 Oct 2019 14:23:06 +0200
-Subject: [PATCH] Use our hand-build native src-generator
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Inappropriate [oe-core specific]
-
-Signed-off-by: Andreas MÃ¼ller <schnitzeltony@gmail.com>
----
- src/libical-glib/CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libical-glib/CMakeLists.txt b/src/libical-glib/CMakeLists.txt
-index f3704e6..ce9db16 100644
---- a/src/libical-glib/CMakeLists.txt
-+++ b/src/libical-glib/CMakeLists.txt
-@@ -63,8 +63,8 @@ endforeach()
- 
- add_custom_command (
-   OUTPUT ${LIBICAL_GLIB_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/libical-glib-private.h ${CMAKE_CURRENT_BINARY_DIR}/i-cal-forward-declarations.h
--  COMMAND ${EXECUTABLE_OUTPUT_PATH}/src-generator "${CMAKE_CURRENT_SOURCE_DIR}/tools" "${CMAKE_CURRENT_SOURCE_DIR}/api"
--  DEPENDS ${EXECUTABLE_OUTPUT_PATH}/src-generator ${xml_files}
-+  COMMAND ${CMAKE_BINARY_DIR}/src-generator "${CMAKE_CURRENT_SOURCE_DIR}/tools" "${CMAKE_CURRENT_SOURCE_DIR}/api"
-+  DEPENDS ${CMAKE_BINARY_DIR}/src-generator ${xml_files}
- )
- 
- configure_file(
--- 
-2.21.0
-
diff --git a/poky/meta/recipes-support/libical/libical_3.0.8.bb b/poky/meta/recipes-support/libical/libical_3.0.9.bb
similarity index 63%
rename from poky/meta/recipes-support/libical/libical_3.0.8.bb
rename to poky/meta/recipes-support/libical/libical_3.0.9.bb
index ffc117d..4c7027d 100644
--- a/poky/meta/recipes-support/libical/libical_3.0.8.bb
+++ b/poky/meta/recipes-support/libical/libical_3.0.9.bb
@@ -12,23 +12,14 @@
                     "
 SECTION = "libs"
 
-SRC_URI = " \
-    https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
-    file://0001-Use-our-hand-build-native-src-generator.patch \
-    file://0001-Fix-build-with-icu-68.1.patch \
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
 "
-SRC_URI[md5sum] = "41bd1f1fcdcb4779cea478bb55cf07bf"
-SRC_URI[sha256sum] = "09fecacaf75ba5a242159e3a9758a5446b5ce4d0ab684f98a7040864e1d1286f"
+SRC_URI[sha256sum] = "bd26d98b7fcb2eb0cd5461747bbb02024ebe38e293ca53a7dfdcb2505265a728"
 UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
 
 inherit cmake pkgconfig
 
-do_compile_prepend() {
-	# As long as https://github.com/libical/libical/issues/394 is open build native src-generator manually
-	NATIVE_CFLAGS="${BUILD_CFLAGS} `pkg-config-native --cflags glib-2.0` `pkg-config-native --cflags libxml-2.0`"
-	NATIVE_LDFLAGS="${BUILD_LDFLAGS} `pkg-config-native --libs glib-2.0` `pkg-config-native --libs libxml-2.0`"
-	${BUILD_CC} $NATIVE_CFLAGS ${S}/src/libical-glib/tools/generator.c ${S}/src/libical-glib/tools/xml-parser.c -o ${B}/src-generator $NATIVE_LDFLAGS
-}
+DEPENDS_append_class-target = "libical-native"
 
 PACKAGECONFIG ??= "icu glib"
 PACKAGECONFIG[bdb] = ",-DCMAKE_DISABLE_FIND_PACKAGE_BDB=True,db"
@@ -41,10 +32,15 @@
 # doc build fails with linker error (??) for libical-glib so disable it
 EXTRA_OECMAKE += "-DICAL_BUILD_DOCS=false"
 
+EXTRA_OECMAKE_append_class-target = " -DIMPORT_ICAL_GLIB_SRC_GENERATOR=${STAGING_LIBDIR_NATIVE}/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
+
 do_install_append () {
     # Remove build host references
     sed -i \
        -e 's,${STAGING_LIBDIR},${libdir},g' \
        -e 's,${STAGING_INCDIR},${includedir},g' \
-       ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake
+       ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake \
+       ${D}${libdir}/cmake/LibIcal/Ical*.cmake
 }
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch b/poky/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index 9e8ce22..0000000
--- a/poky/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 30562065ba9e4c238e76100b5f9f0c5add0e635b Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Tue, 5 Dec 2017 09:30:36 +0200
-Subject: [PATCH] remove the test to convert euc-jp
-
-Remove the test "Test against HP-UX 11.11 bug:
-No converter from EUC-JP to UTF-8 is provided"
-since we don't support HP-UX and if the euc-jp is not
-installed on the host, libunistring will be built without
-iconv support and will cause guild-native configure fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
----
- gnulib-m4/iconv.m4 | 23 -----------------------
- 1 file changed, 23 deletions(-)
-
-diff --git a/gnulib-m4/iconv.m4 b/gnulib-m4/iconv.m4
-index b33ecd0..73b6aa1 100644
---- a/gnulib-m4/iconv.m4
-+++ b/gnulib-m4/iconv.m4
-@@ -165,29 +165,6 @@ AC_DEFUN([AM_ICONV_LINK],
-       }
-   }
- #endif
--  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
--     provided.  */
--  {
--    /* Try standardized names.  */
--    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
--    /* Try IRIX, OSF/1 names.  */
--    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
--    /* Try AIX names.  */
--    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
--    /* Try HP-UX names.  */
--    iconv_t cd4 = iconv_open ("utf8", "eucJP");
--    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
--        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
--      result |= 16;
--    if (cd1 != (iconv_t)(-1))
--      iconv_close (cd1);
--    if (cd2 != (iconv_t)(-1))
--      iconv_close (cd2);
--    if (cd3 != (iconv_t)(-1))
--      iconv_close (cd3);
--    if (cd4 != (iconv_t)(-1))
--      iconv_close (cd4);
--  }
-   return result;
- ]])],
-           [am_cv_func_iconv_works=yes], ,
--- 
-2.4.0
-
diff --git a/poky/meta/recipes-support/libunistring/libunistring_0.9.10.bb b/poky/meta/recipes-support/libunistring/libunistring_0.9.10.bb
index 97fac4e..0a7b18e 100644
--- a/poky/meta/recipes-support/libunistring/libunistring_0.9.10.bb
+++ b/poky/meta/recipes-support/libunistring/libunistring_0.9.10.bb
@@ -20,7 +20,6 @@
                    "
 
 SRC_URI = "${GNU_MIRROR}/libunistring/libunistring-${PV}.tar.gz \
-           file://iconv-m4-remove-the-test-to-convert-euc-jp.patch \
            file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
 "
 SRC_URI[md5sum] = "0d3274e9838396b12200f8b54ddaf43b"
diff --git a/poky/meta/recipes-support/libunwind/libunwind.inc b/poky/meta/recipes-support/libunwind/libunwind.inc
index 76a1bf6..17ba151 100644
--- a/poky/meta/recipes-support/libunwind/libunwind.inc
+++ b/poky/meta/recipes-support/libunwind/libunwind.inc
@@ -4,6 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d80c8ed4062b8339b715f90fa68cc9f"
 DEPENDS += "libatomic-ops"
+DEPENDS_append_libc-musl = " libucontext"
 
 inherit autotools multilib_header
 
diff --git a/poky/meta/recipes-support/libunwind/libunwind/0001-configure-Do-not-enforce-libdir-for-ppc64.patch b/poky/meta/recipes-support/libunwind/libunwind/0001-configure-Do-not-enforce-libdir-for-ppc64.patch
new file mode 100644
index 0000000..751f1b3
--- /dev/null
+++ b/poky/meta/recipes-support/libunwind/libunwind/0001-configure-Do-not-enforce-libdir-for-ppc64.patch
@@ -0,0 +1,35 @@
+From 154c7465de2aeb9a8ba3416bbed6e6e07f58c583 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 11 Mar 2021 21:52:28 -0800
+Subject: [PATCH] configure: Do not enforce libdir for ppc64
+
+OE has its own multilib configuration, therefore hardcoding libdir
+breaks that, instead respect the settings coming from build environment
+via configure options.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c8d68f7..254440f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -206,12 +206,6 @@ fi
+ AM_CONDITIONAL(USE_DWARF, [test x$use_dwarf = xyes])
+ AC_MSG_RESULT([$use_dwarf])
+ 
+-if test x$target_arch = xppc64; then
+-        libdir='${exec_prefix}/lib64'
+-        AC_MSG_NOTICE([PowerPC64 detected, lib will be installed ${libdir}]);
+-        AC_SUBST([libdir])
+-fi
+-
+ AC_MSG_CHECKING([whether to restrict build to remote support])
+ if test x$target_arch != x$host_arch; then
+   CPPFLAGS="${CPPFLAGS} -DUNW_REMOTE_ONLY"
+-- 
+2.30.2
+
diff --git a/poky/meta/recipes-support/libunwind/libunwind_1.5.0.bb b/poky/meta/recipes-support/libunwind/libunwind_1.5.0.bb
index 5e4693e..6392cac 100644
--- a/poky/meta/recipes-support/libunwind/libunwind_1.5.0.bb
+++ b/poky/meta/recipes-support/libunwind/libunwind_1.5.0.bb
@@ -6,6 +6,7 @@
            file://0004-Fix-build-on-mips-musl.patch \
            file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
            file://0006-Fix-for-X32.patch \
+           file://0001-configure-Do-not-enforce-libdir-for-ppc64.patch \
            "
 SRC_URI_append_libc-musl = " file://musl-header-conflict.patch"
 
@@ -24,3 +25,4 @@
 LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
 
 SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared"
+CACHED_CONFIGUREVARS_append_libc-musl = " LDFLAGS='${LDFLAGS} -lucontext'"
diff --git a/poky/meta/recipes-support/lz4/lz4_1.9.3.bb b/poky/meta/recipes-support/lz4/lz4_1.9.3.bb
index 00f2dd3..effc530 100644
--- a/poky/meta/recipes-support/lz4/lz4_1.9.3.bb
+++ b/poky/meta/recipes-support/lz4/lz4_1.9.3.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Extremely Fast Compression algorithm"
 DESCRIPTION = "LZ4 is a very fast lossless compression algorithm, providing compression speed at 400 MB/s per core, scalable with multi-cores CPU. It also features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems."
+HOMEPAGE = "https://github.com/lz4/lz4"
 
 LICENSE = "BSD | BSD-2-Clause | GPL-2.0"
 LIC_FILES_CHKSUM = "file://lib/LICENSE;md5=ebc2ea4814a64de7708f1571904b32cc \
diff --git a/poky/meta/recipes-support/lzop/lzop_1.04.bb b/poky/meta/recipes-support/lzop/lzop_1.04.bb
index b50c230..59c2003 100644
--- a/poky/meta/recipes-support/lzop/lzop_1.04.bb
+++ b/poky/meta/recipes-support/lzop/lzop_1.04.bb
@@ -5,6 +5,7 @@
 compression ratio. The lzop compression utility was designed with the goals \n\
 of reliability, speed, portability and with reasonable drop-in compatibility \n\
 to gzip."
+HOMEPAGE = "http://www.lzop.org/"
 DEPENDS += "lzo"
 
 LICENSE = "GPLv2+"
diff --git a/poky/meta/recipes-support/serf/serf_1.3.9.bb b/poky/meta/recipes-support/serf/serf_1.3.9.bb
index dc917fa..3276d40 100644
--- a/poky/meta/recipes-support/serf/serf_1.3.9.bb
+++ b/poky/meta/recipes-support/serf/serf_1.3.9.bb
@@ -3,6 +3,7 @@
 Portable Runtime (APR) library. It multiplexes connections, running the \
 read/write communication asynchronously. Memory copies and transformations are \
 kept to a minimum to provide high performance operation."
+HOMEPAGE = "http://serf.apache.org/"
 SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
            file://norpath.patch \
            file://env.patch \
diff --git a/poky/meta/recipes-support/sqlite/sqlite3_3.34.1.bb b/poky/meta/recipes-support/sqlite/sqlite3_3.35.0.bb
similarity index 82%
rename from poky/meta/recipes-support/sqlite/sqlite3_3.34.1.bb
rename to poky/meta/recipes-support/sqlite/sqlite3_3.35.0.bb
index fe5adb2..127065b 100644
--- a/poky/meta/recipes-support/sqlite/sqlite3_3.34.1.bb
+++ b/poky/meta/recipes-support/sqlite/sqlite3_3.35.0.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
 
 SRC_URI = "http://www.sqlite.org/2021/sqlite-autoconf-${SQLITE_PV}.tar.gz"
-SRC_URI[sha256sum] = "2a3bca581117b3b88e5361d0ef3803ba6d8da604b1c1a47d902ef785c1b53e89"
+SRC_URI[sha256sum] = "3dfb3f143c83695a555c7dd9e06ed924f9d273c287989874e102656724baf2d0"
 
 # -19242 is only an issue in specific development branch commits
 CVE_CHECK_WHITELIST += "CVE-2019-19242"
diff --git a/poky/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch b/poky/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch
deleted file mode 100644
index 4bd9f2b..0000000
--- a/poky/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From eb9ded1206f18f2c319157337edea2533a40bea6 Mon Sep 17 00:00:00 2001
-From: "Stephen F. Booth" <me@sbooth.org>
-Date: Sun, 23 Jul 2017 10:11:09 -0400
-Subject: [PATCH] Don't assume TDRC is an instance of TextIdentificationFrame
-
-If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame
-which causes problems in rebuildAggregateFrames() when it is assumed
-that TDRC is a TextIdentificationFrame
-
-Upstream-Status: Backport
-[https://github.com/taglib/taglib/pull/831/commits/eb9ded1206f18f2c319157337edea2533a40bea6]
-
-CVE: CVE-2017-12678
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- taglib/mpeg/id3v2/id3v2framefactory.cpp | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp
-index 759a9b7b..9347ab86 100644
---- a/taglib/mpeg/id3v2/id3v2framefactory.cpp
-+++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp
-@@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const
-      tag->frameList("TDAT").size() == 1)
-   {
-     TextIdentificationFrame *tdrc =
--      static_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
-+      dynamic_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
-     UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList("TDAT").front());
- 
--    if(tdrc->fieldList().size() == 1 &&
-+    if(tdrc &&
-+       tdrc->fieldList().size() == 1 &&
-        tdrc->fieldList().front().size() == 4 &&
-        tdat->data().size() >= 5)
-     {
--- 
-2.13.5
-
diff --git a/poky/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch b/poky/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
deleted file mode 100644
index cdd66e6..0000000
--- a/poky/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 272648ccfcccae30e002ccf34a22e075dd477278 Mon Sep 17 00:00:00 2001
-From: Scott Gayou <github.scott@gmail.com>
-Date: Mon, 4 Jun 2018 11:34:36 -0400
-Subject: [PATCH] Fixed OOB read when loading invalid ogg flac file. (#868)
-
-This CVE is caused by a failure to check the minimum length
-of a ogg flac header. This header is detailed in full at:
-https://xiph.org/flac/ogg_mapping.html. Added more strict checking
-for entire header.
-
-Upstream-Status: Backport
-[https://github.com/taglib/taglib/pull/869/commits/272648ccfcccae30e002ccf34a22e075dd477278]
-
-CVE: CVE-2018-11439
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- taglib/ogg/flac/oggflacfile.cpp | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp
-index 53d0450..07ea9dc 100644
---- a/taglib/ogg/flac/oggflacfile.cpp
-+++ b/taglib/ogg/flac/oggflacfile.cpp
-@@ -231,11 +231,21 @@ void Ogg::FLAC::File::scan()
- 
-   if(!metadataHeader.startsWith("fLaC"))  {
-     // FLAC 1.1.2+
-+    // See https://xiph.org/flac/ogg_mapping.html for the header specification.
-+    if(metadataHeader.size() < 13)
-+      return;
-+
-+    if(metadataHeader[0] != 0x7f)
-+      return;
-+
-     if(metadataHeader.mid(1, 4) != "FLAC")
-       return;
- 
--    if(metadataHeader[5] != 1)
--      return; // not version 1
-+    if(metadataHeader[5] != 1 && metadataHeader[6] != 0)
-+      return; // not version 1.0
-+
-+    if(metadataHeader.mid(9, 4) != "fLaC")
-+      return;
- 
-     metadataHeader = metadataHeader.mid(13);
-   }
--- 
-2.7.4
-
diff --git a/poky/meta/recipes-support/taglib/taglib_1.11.1.bb b/poky/meta/recipes-support/taglib/taglib_1.12.bb
similarity index 85%
rename from poky/meta/recipes-support/taglib/taglib_1.11.1.bb
rename to poky/meta/recipes-support/taglib/taglib_1.12.bb
index 165bcca..efa5625 100644
--- a/poky/meta/recipes-support/taglib/taglib_1.11.1.bb
+++ b/poky/meta/recipes-support/taglib/taglib_1.12.bb
@@ -9,13 +9,10 @@
 
 DEPENDS = "zlib"
 
-SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz \
-           file://CVE-2017-12678.patch \
-           file://CVE-2018-11439.patch \
-          "
+SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz"
 
-SRC_URI[md5sum] = "cee7be0ccfc892fa433d6c837df9522a"
-SRC_URI[sha256sum] = "b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b"
+SRC_URI[md5sum] = "4313ed2671234e029b7af8f97c84e9af"
+SRC_URI[sha256sum] = "7fccd07669a523b07a15bd24c8da1bbb92206cb19e9366c3692af3d79253b703"
 
 UPSTREAM_CHECK_URI = "http://github.com/taglib/taglib/releases/"
 
diff --git a/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb b/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb
new file mode 100644
index 0000000..9e38872
--- /dev/null
+++ b/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Extremely fast non-cryptographic hash algorithm"
+DESCRIPTION = "xxHash is an extremely fast non-cryptographic hash algorithm, \
+working at speeds close to RAM limits."
+HOMEPAGE = "http://www.xxhash.com/"
+LICENSE = "BSD-2-Clause & GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b335320506abb0505437e39295e799cb"
+
+SRC_URI = "git://github.com/Cyan4973/xxHash.git;branch=release;protocol=git"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+SRCREV = "94e5f23e736f2bb67ebdf90727353e65344f9fc0"
+
+S = "${WORKDIR}/git"
+
+do_compile () {
+	oe_runmake all
+}
+
+do_install () {
+	oe_runmake DESTDIR=${D} install
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/site/common-linux b/poky/meta/site/common-linux
index 1c1fdaf..8f23ade 100644
--- a/poky/meta/site/common-linux
+++ b/poky/meta/site/common-linux
@@ -1,6 +1,9 @@
 # gettext - these add sleep delays otherwise
 gl_cv_func_sleep_works=${gl_cv_func_sleep_works=yes}
 gl_cv_header_working_fcntl_h=${gl_cv_header_working_fcntl_h=yes}
+# the euc-jp tests in iconv.m4 break elfutils and libunistring depending on the
+# host locales installed. Avoid this by skipping the tests, we're not on HP-UX!
+am_cv_func_iconv_works=${am_cv_func_iconv_works=yes}
 
 # apr
 ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
diff --git a/poky/scripts/bitbake-whatchanged b/poky/scripts/bitbake-whatchanged
index 3095daf..6f4b268 100755
--- a/poky/scripts/bitbake-whatchanged
+++ b/poky/scripts/bitbake-whatchanged
@@ -217,7 +217,7 @@
     # Edit the recipes
     $ bitbake-whatchanged core-image-sato
 
-The changes will be printed"
+The changes will be printed.
 
 Note:
     The amount of tasks is not accurate when the task is "do_build" since
diff --git a/poky/scripts/contrib/documentation-audit.sh b/poky/scripts/contrib/documentation-audit.sh
index 1191f57..f436f9b 100755
--- a/poky/scripts/contrib/documentation-audit.sh
+++ b/poky/scripts/contrib/documentation-audit.sh
@@ -27,7 +27,7 @@
 
 echo "REMINDER: you need to build for MACHINE=qemux86 or you won't get useful results"
 echo "REMINDER: you need to set LICENSE_FLAGS_WHITELIST appropriately in local.conf or "
-echo " you'll get false positives.  For example, LICENSE_FLAGS_WHITELIST = \"Commercial\""
+echo " you'll get false positives.  For example, LICENSE_FLAGS_WHITELIST = \"commercial\""
 
 for pkg in `bitbake -s | awk '{ print \$1 }'`; do
 	if [[ "$pkg" == "Loading" || "$pkg" == "Loaded" ||
diff --git a/poky/scripts/contrib/list-packageconfig-flags.py b/poky/scripts/contrib/list-packageconfig-flags.py
index d6de4dc..bb288e9 100755
--- a/poky/scripts/contrib/list-packageconfig-flags.py
+++ b/poky/scripts/contrib/list-packageconfig-flags.py
@@ -33,7 +33,7 @@
 def get_fnlist(bbhandler, pkg_pn, preferred):
     ''' Get all recipe file names '''
     if preferred:
-        (latest_versions, preferred_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecaches[''], pkg_pn)
+        (latest_versions, preferred_versions, required_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecaches[''], pkg_pn)
 
     fn_list = []
     for pn in sorted(pkg_pn):
diff --git a/poky/scripts/lib/devtool/standard.py b/poky/scripts/lib/devtool/standard.py
index 7b62b7e..f364a45 100644
--- a/poky/scripts/lib/devtool/standard.py
+++ b/poky/scripts/lib/devtool/standard.py
@@ -953,12 +953,17 @@
 
             if bb.data.inherits_class('kernel', rd):
                 f.write('SRCTREECOVEREDTASKS = "do_validate_branches do_kernel_checkout '
-                        'do_fetch do_unpack do_kernel_configme do_kernel_configcheck"\n')
+                        'do_fetch do_unpack do_kernel_configcheck"\n')
                 f.write('\ndo_patch[noexec] = "1"\n')
                 f.write('\ndo_configure_append() {\n'
                         '    cp ${B}/.config ${S}/.config.baseline\n'
                         '    ln -sfT ${B}/.config ${S}/.config.new\n'
                         '}\n')
+                f.write('\ndo_kernel_configme_prepend() {\n'
+                        '    if [ -e ${S}/.config ]; then\n'
+                        '        mv ${S}/.config ${S}/.config.old\n'
+                        '    fi\n'
+                        '}\n')
             if rd.getVarFlag('do_menuconfig','task'):
                 f.write('\ndo_configure_append() {\n'
                 '    if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n'
diff --git a/poky/scripts/oe-time-dd-test.sh b/poky/scripts/oe-time-dd-test.sh
new file mode 100644
index 0000000..970a86d
--- /dev/null
+++ b/poky/scripts/oe-time-dd-test.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# oe-time-dd-test records how much time it takes to 
+# write <count> number of kilobytes to the filesystem.
+# It also records the number of processes that are in
+# running (R), uninterruptible sleep (D) and interruptible
+# sleep (S) state from the output of "top" command.
+# The purporse of this script is to find which part of
+# the build system puts stress on the filesystem io and
+# log all the processes.
+
+usage() {
+        echo "Usage: $0 <count>"
+}
+
+if [ $# -ne 1 ]; then
+        usage
+        exit 1
+fi
+
+uptime
+/usr/bin/time -f "%e" dd if=/dev/zero of=foo bs=1024 count=$1 conv=fsync
+top -b -n 1 | grep -v "0      0      0" | grep -E ' [RSD] ' | cut -c 46-47 | sort | uniq -c
diff --git a/poky/scripts/runqemu b/poky/scripts/runqemu
index 532f2e3..df4ee21 100755
--- a/poky/scripts/runqemu
+++ b/poky/scripts/runqemu
@@ -139,6 +139,7 @@
                         'OE_TMPDIR',
                         'OECORE_NATIVE_SYSROOT',
                         'MULTICONFIG',
+                        'SERIAL_CONSOLES',
                         )
 
         self.qemu_opt = ''
@@ -173,6 +174,13 @@
         self.nfs_running = False
         self.serialconsole = False
         self.serialstdio = False
+        self.nographic = False
+        self.sdl = False
+        self.gtk = False
+        self.gl = False
+        self.gl_es = False
+        self.egl_headless = False
+        self.novga = False
         self.cleantap = False
         self.saved_stty = ''
         self.audio_enabled = False
@@ -459,44 +467,22 @@
             if arg in self.fstypes + self.vmtypes + self.wictypes:
                 self.check_arg_fstype(arg)
             elif arg == 'nographic':
-                if ('sdl' in sys.argv):
-                    raise RunQemuError('Option nographic makes no sense alongside the sdl option.' % (arg))
-                if ('gtk' in sys.argv):
-                    raise RunQemuError('Option nographic makes no sense alongside the gtk option.' % (arg))
-                self.qemu_opt_script += ' -nographic'
-                self.kernel_cmdline_script += ' console=ttyS0'
+                self.nographic = True
             elif arg == 'sdl':
-                if 'gl' in sys.argv[1:]:
-                    self.set_dri_path()
-                    self.qemu_opt_script += ' -vga virtio -display sdl,gl=on,show-cursor=on'
-                elif 'gl-es' in sys.argv[1:]:
-                    self.set_dri_path()
-                    self.qemu_opt_script += ' -vga virtio -display sdl,gl=es,show-cursor=on'
-                else:
-                    self.qemu_opt_script += ' -display sdl,show-cursor=on'
+                self.sdl = True
             elif arg == 'gtk':
-                if 'gl' in sys.argv[1:]:
-                    self.set_dri_path()
-                    self.qemu_opt_script += ' -vga virtio -display gtk,gl=on,show-cursor=on'
-                elif 'gl-es' in sys.argv[1:]:
-                    self.set_dri_path()
-                    self.qemu_opt_script += ' -vga virtio -display gtk,gl=es,show-cursor=on'
-                else:
-                    self.qemu_opt_script += ' -display gtk,show-cursor=on'
-            elif arg == 'gl' or arg == 'gl-es':
-                # These args are handled inside sdl or gtk blocks above
-                if ('gtk' not in sys.argv) and ('sdl' not in sys.argv):
-                    raise RunQemuError('Option %s also needs gtk or sdl option.' % (arg))
+                self.gtk = True
+            elif arg == 'gl':
+                self.gl = True
+            elif 'gl-es' in sys.argv[1:]:
+                self.gl_es = True
             elif arg == 'egl-headless':
-                self.set_dri_path()
-                self.qemu_opt_script += ' -vga virtio -display egl-headless,show-cursor=on'
+                self.egl_headless = True
             elif arg == 'novga':
-                self.qemu_opt_script += ' -vga none'
+                self.novga = True
             elif arg == 'serial':
-                self.kernel_cmdline_script += ' console=ttyS0'
                 self.serialconsole = True
             elif arg == "serialstdio":
-                self.kernel_cmdline_script += ' console=ttyS0'
                 self.serialstdio = True
             elif arg == 'audio':
                 logger.info("Enabling audio in qemu")
@@ -1321,6 +1307,66 @@
             raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!")
         self.qemu_system = qemu_system
 
+    def setup_vga(self):
+        if self.nographic == True:
+            if self.sdl == True:
+                raise RunQemuError('Option nographic makes no sense alongside the sdl option.')
+            if self.gtk == True:
+                raise RunQemuError('Option nographic makes no sense alongside the gtk option.')
+            self.qemu_opt += ' -nographic'
+            return
+
+        if self.novga == True:
+            self.qemu_opt += ' -vga none'
+            return
+
+        if (self.gl_es == True or self.gl == True) and (self.sdl == False and self.gtk == False):
+            raise RunQemuError('Option gl/gl-es needs gtk or sdl option.')
+
+        if self.sdl == True or self.gtk == True or self.egl_headless == True:
+            self.set_dri_path()
+            self.qemu_opt += ' -vga virtio -display '
+            if self.egl_headless == True:
+                self.qemu_opt += 'egl-headless,'
+            else:
+                if self.sdl == True:
+                    self.qemu_opt += 'sdl,'
+                elif self.gtk == True:
+                    self.qemu_opt += 'gtk,'
+
+                if self.gl == True:
+                    self.qemu_opt += 'gl=on,'
+                elif self.gl_es == True:
+                    self.qemu_opt += 'gl=es,'
+            self.qemu_opt += 'show-cursor=on'
+
+        self.qemu_opt += ' %s' %self.get('QB_GRAPHICS')
+
+    def setup_serial(self):
+        # Setup correct kernel command line for serial
+        if self.serialstdio == True or self.serialconsole == True or self.nographic == True or self.tcpserial_portnum:
+            for entry in self.get('SERIAL_CONSOLES').split(' '):
+                self.kernel_cmdline_script += ' console=%s' %entry.split(';')[1]
+
+        if self.serialstdio == True or self.nographic == True:
+            self.qemu_opt += " -serial mon:stdio"
+        else:
+            self.qemu_opt += " -serial mon:vc"
+            if self.serialconsole:
+                if sys.stdin.isatty():
+                    subprocess.check_call(("stty", "intr", "^]"))
+                    logger.info("Interrupt character is '^]'")
+
+                self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
+
+        # We always wants ttyS0 and ttyS1 in qemu machines (see SERIAL_CONSOLES).
+        # If no serial or serialtcp options were specified, only ttyS0 is created
+        # and sysvinit shows an error trying to enable ttyS1:
+        #     INIT: Id "S1" respawning too fast: disabled for 5 minutes
+        serial_num = len(re.findall("-serial", self.qemu_opt))
+        if serial_num < 2:
+            self.qemu_opt += " -serial null"
+
     def setup_final(self):
         qemu_bin = os.path.join(self.bindir_native, self.qemu_system)
 
@@ -1345,6 +1391,8 @@
 
         for ovmf in self.ovmf_bios:
             format = ovmf.rsplit('.', 1)[-1]
+            if format == "bin":
+                format = "raw"
             self.qemu_opt += ' -drive if=pflash,format=%s,file=%s' % (format, ovmf)
 
         self.qemu_opt += ' ' + self.qemu_opt_script
@@ -1363,37 +1411,8 @@
         if self.snapshot:
             self.qemu_opt += " -snapshot"
 
-        if self.serialconsole:
-            if sys.stdin.isatty():
-                subprocess.check_call(("stty", "intr", "^]"))
-                logger.info("Interrupt character is '^]'")
-
-            first_serial = ""
-            if not re.search("-nographic", self.qemu_opt):
-                first_serial = "-serial mon:vc"
-            # We always want a ttyS1. Since qemu by default adds a serial
-            # port when nodefaults is not specified, it seems that all that
-            # would be needed is to make sure a "-serial" is there. However,
-            # it appears that when "-serial" is specified, it ignores the
-            # default serial port that is normally added.  So here we make
-            # sure to add two -serial if there are none. And only one if
-            # there is one -serial already.
-            serial_num = len(re.findall("-serial", self.qemu_opt))
-            if serial_num == 0:
-                self.qemu_opt += " %s %s" % (first_serial, self.get("QB_SERIAL_OPT"))
-            elif serial_num == 1:
-                self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
-
-        # We always wants ttyS0 and ttyS1 in qemu machines (see SERIAL_CONSOLES),
-        # if not serial or serialtcp options was specified only ttyS0 is created
-        # and sysvinit shows an error trying to enable ttyS1:
-        #     INIT: Id "S1" respawning too fast: disabled for 5 minutes
-        serial_num = len(re.findall("-serial", self.qemu_opt))
-        if serial_num == 0:
-            if re.search("-nographic", self.qemu_opt) or self.serialstdio:
-                self.qemu_opt += " -serial mon:stdio -serial null"
-            else:
-                self.qemu_opt += " -serial mon:vc -serial null"
+        self.setup_serial()
+        self.setup_vga()
 
     def start_qemu(self):
         import shlex
diff --git a/poky/scripts/sstate-diff-machines.sh b/poky/scripts/sstate-diff-machines.sh
index 1d721eb..8b64e11 100755
--- a/poky/scripts/sstate-diff-machines.sh
+++ b/poky/scripts/sstate-diff-machines.sh
@@ -127,6 +127,8 @@
   fi
 done
 
+COMPARE_TASKS="do_configure.sigdata do_populate_sysroot.sigdata do_package_write_ipk.sigdata do_package_write_rpm.sigdata do_package_write_deb.sigdata do_package_write_tar.sigdata"
+
 function compareSignatures() {
   MACHINE1=$1
   MACHINE2=$2
@@ -134,7 +136,7 @@
   PRE_PATTERN=""
   [ -n "${PATTERN}" ] || PRE_PATTERN="-v"
   [ -n "${PATTERN}" ] || PATTERN="MACHINE"
-  for TASK in do_configure.sigdata do_populate_sysroot.sigdata do_package_write_ipk.sigdata; do
+  for TASK in $COMPARE_TASKS; do
     printf "\n\n === Comparing signatures for task ${TASK} between ${MACHINE1} and ${MACHINE2} ===\n" | tee -a ${OUTPUT}/signatures.${MACHINE2}.${TASK}.log
     diff ${OUTPUT}/${MACHINE1}/list.M ${OUTPUT}/${MACHINE2}/list.M | grep ${PRE_PATTERN} "${PATTERN}" | grep ${TASK} > ${OUTPUT}/signatures.${MACHINE2}.${TASK}
     for i in `cat ${OUTPUT}/signatures.${MACHINE2}.${TASK} | sed 's#[^/]*/\([^/]*\)/.*#\1#g' | sort -u | xargs`; do
diff --git a/poky/scripts/verify-bashisms b/poky/scripts/verify-bashisms
index fb0cc71..14d8c29 100755
--- a/poky/scripts/verify-bashisms
+++ b/poky/scripts/verify-bashisms
@@ -100,7 +100,7 @@
     args = parser.parse_args()
 
     if shutil.which("checkbashisms.pl") is None:
-        print("Cannot find checkbashisms.pl on $PATH, get it from https://anonscm.debian.org/cgit/collab-maint/devscripts.git/plain/scripts/checkbashisms.pl")
+        print("Cannot find checkbashisms.pl on $PATH, get it from https://salsa.debian.org/debian/devscripts/raw/master/scripts/checkbashisms.pl")
         sys.exit(1)
 
     # The order of defining the worker function,
