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..54cc7ed 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,
