commit 7b516a178953cb732a548c3d527984e8b68486d4 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 11:17:43 2019 -0400 Package init diff --git a/Add-support-for-dev-u-random-ioctls.patch b/Add-support-for-dev-u-random-ioctls.patch new file mode 100644 index 0000000..b9f03c1 --- /dev/null +++ b/Add-support-for-dev-u-random-ioctls.patch @@ -0,0 +1,165 @@ +From 2649c8c8b6832f267fb20cbcfdead19d32b8f2fc Mon Sep 17 00:00:00 2001 +From: Rasmus Villemoes +Date: Mon, 5 Nov 2018 17:29:00 +0000 +Subject: [PATCH 102/293] Add support for /dev/[u]random ioctls + +* random_ioctl.c: New file. +* Makefile.am (strace_SOURCES): Add it. +* defs.h (DECL_IOCTL): Add random. +* ioctl.c (ioctl_decode): Add 'R' case. +* xlat/random_ioctl_cmds.in: New file. +* tests/ioctl_random.c: New file. +* tests/pure_executables.list: Likewise. +* tests/gen_tests.in (ioctl_random): New entry. + +Signed-off-by: Rasmus Villemoes +--- + Makefile.am | 1 + + defs.h | 1 + + ioctl.c | 2 ++ + random_ioctl.c | 81 +++++++++++++++++++++++++++++++++++++++++++++ + xlat/random_ioctl_cmds.in | 7 ++++ + 5 files changed, 92 insertions(+) + create mode 100644 random_ioctl.c + create mode 100644 xlat/random_ioctl_cmds.in + +diff --git a/Makefile.am b/Makefile.am +index db16b3a..350bc51 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -267,6 +267,7 @@ strace_SOURCES = \ + ptp.c \ + ptrace.h \ + quota.c \ ++ random_ioctl.c \ + readahead.c \ + readlink.c \ + reboot.c \ +diff --git a/defs.h b/defs.h +index 5ba95f5..b8d561a 100644 +--- a/defs.h ++++ b/defs.h +@@ -973,6 +973,7 @@ DECL_IOCTL(kvm); + DECL_IOCTL(nbd); + DECL_IOCTL(nsfs); + DECL_IOCTL(ptp); ++DECL_IOCTL(random); + DECL_IOCTL(scsi); + DECL_IOCTL(term); + DECL_IOCTL(ubi); +diff --git a/ioctl.c b/ioctl.c +index 4c9e7db..e7dd4c4 100644 +--- a/ioctl.c ++++ b/ioctl.c +@@ -329,6 +329,8 @@ ioctl_decode(struct tcb *tcp) + return inotify_ioctl(tcp, code, arg); + case 0xab: + return nbd_ioctl(tcp, code, arg); ++ case 'R': ++ return random_ioctl(tcp, code, arg); + default: + break; + } +diff --git a/random_ioctl.c b/random_ioctl.c +new file mode 100644 +index 0000000..6eaf6da +--- /dev/null ++++ b/random_ioctl.c +@@ -0,0 +1,81 @@ ++/* ++ * Copyright (c) 2018 The strace developers. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include "defs.h" ++#include "print_fields.h" ++ ++#include ++#include ++ ++#define XLAT_MACROS_ONLY ++# include "xlat/random_ioctl_cmds.h" ++#undef XLAT_MACROS_ONLY ++ ++/* ++ * RNDGETPOOL was removed in 2.6.9, so non-ancient kernels always ++ * return -EINVAL for that. ++ */ ++ ++int ++random_ioctl(struct tcb *const tcp, const unsigned int code, ++ const kernel_ulong_t arg) ++{ ++ struct rand_pool_info info; ++ kernel_ulong_t buf; ++ ++ switch (code) { ++ case RNDGETENTCNT: ++ if (entering(tcp)) ++ return 0; ++ ATTRIBUTE_FALLTHROUGH; ++ case RNDADDTOENTCNT: ++ tprints(", "); ++ printnum_int(tcp, arg, "%d"); ++ break; ++ ++ case RNDADDENTROPY: ++ tprints(", "); ++ if (!umove_or_printaddr(tcp, arg, &info)) { ++ PRINT_FIELD_D("{", info, entropy_count); ++ PRINT_FIELD_D(", ", info, buf_size); ++ tprints(", buf="); ++ buf = arg + offsetof(struct rand_pool_info, buf); ++ printstrn(tcp, buf, info.buf_size); ++ tprints("}"); ++ } ++ break; ++ ++ /* ioctls with no parameters */ ++ case RNDZAPENTCNT: ++ case RNDCLEARPOOL: ++ case RNDRESEEDCRNG: ++ break; ++ default: ++ return RVAL_DECODED; ++ } ++ return RVAL_IOCTL_DECODED; ++} +diff --git a/xlat/random_ioctl_cmds.in b/xlat/random_ioctl_cmds.in +new file mode 100644 +index 0000000..1b31dc5 +--- /dev/null ++++ b/xlat/random_ioctl_cmds.in +@@ -0,0 +1,7 @@ ++RNDGETENTCNT _IOR( 'R', 0x00, int ) ++RNDADDTOENTCNT _IOW( 'R', 0x01, int ) ++RNDGETPOOL _IOR( 'R', 0x02, int [2] ) ++RNDADDENTROPY _IOW( 'R', 0x03, int [2] ) ++RNDZAPENTCNT _IO( 'R', 0x04 ) ++RNDCLEARPOOL _IO( 'R', 0x06 ) ++RNDRESEEDCRNG _IO( 'R', 0x07 ) +-- +1.7.12.4 + diff --git a/Implement-decoding-of-NBD_-ioctl-commands.patch b/Implement-decoding-of-NBD_-ioctl-commands.patch new file mode 100644 index 0000000..347592a --- /dev/null +++ b/Implement-decoding-of-NBD_-ioctl-commands.patch @@ -0,0 +1,200 @@ +From 7a7f6c6a7c24177e7e2960c06564798e322e9ca0 Mon Sep 17 00:00:00 2001 +From: Elvira Khabirova +Date: Sat, 22 Sep 2018 15:09:50 +0200 +Subject: [PATCH 093/293] Implement decoding of NBD_* ioctl commands + +* nbd_ioctl.c: New file. +* Makefile.am (strace_SOURCES): Add it. +* defs.h (DECL_IOCTL): Add nbd. +* ioctl.c (ioctl_decode): Add 0xab (nbd) case. +* xlat/nbd_ioctl_cmds.in: Likewise. +* xlat/nbd_ioctl_flags.in: Likewise. +* tests/ioctl_nbd.c: Likewise. +* tests/.gitignore: Add ioctl_nbd. +* tests/pure_executables.list: Likewise. +* tests/gen_tests.in (ioctl_nbd): New entry. + +Co-Authored-by: Dmitry V. Levin +--- + Makefile.am | 1 + + defs.h | 1 + + ioctl.c | 2 + + nbd_ioctl.c | 73 +++++++++++++++++++++++++++++ + xlat/nbd_ioctl_cmds.in | 11 +++++ + xlat/nbd_ioctl_flags.in | 29 ++++++++++++ + 6 files changed, 117 insertions(+) + create mode 100644 nbd_ioctl.c + create mode 100644 xlat/nbd_ioctl_cmds.in + create mode 100644 xlat/nbd_ioctl_flags.in + +diff --git a/Makefile.am b/Makefile.am +index 9e5eef2..913d26a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -204,6 +204,7 @@ strace_SOURCES = \ + msghdr.h \ + mtd.c \ + native_defs.h \ ++ nbd_ioctl.c \ + negated_errno.h \ + net.c \ + netlink.c \ +diff --git a/defs.h b/defs.h +index 7f1e64d..5ba95f5 100644 +--- a/defs.h ++++ b/defs.h +@@ -970,6 +970,7 @@ DECL_IOCTL(file); + DECL_IOCTL(fs_x); + DECL_IOCTL(inotify); + DECL_IOCTL(kvm); ++DECL_IOCTL(nbd); + DECL_IOCTL(nsfs); + DECL_IOCTL(ptp); + DECL_IOCTL(scsi); +diff --git a/ioctl.c b/ioctl.c +index 66b10ec..4c9e7db 100644 +--- a/ioctl.c ++++ b/ioctl.c +@@ -327,6 +327,8 @@ ioctl_decode(struct tcb *tcp) + #endif + case 'I': + return inotify_ioctl(tcp, code, arg); ++ case 0xab: ++ return nbd_ioctl(tcp, code, arg); + default: + break; + } +diff --git a/nbd_ioctl.c b/nbd_ioctl.c +new file mode 100644 +index 0000000..0ceec3e +--- /dev/null ++++ b/nbd_ioctl.c +@@ -0,0 +1,73 @@ ++/* ++ * Copyright (c) 2018 The strace developers. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include "defs.h" ++#include "print_fields.h" ++#include ++#include ++#include ++ ++#define XLAT_MACROS_ONLY ++# include "xlat/nbd_ioctl_cmds.h" ++#undef XLAT_MACROS_ONLY ++ ++#include "xlat/nbd_ioctl_flags.h" ++ ++int ++nbd_ioctl(struct tcb *const tcp, const unsigned int code, ++ const kernel_ulong_t arg) ++{ ++ switch (code) { ++ case NBD_DISCONNECT: ++ case NBD_CLEAR_SOCK: ++ case NBD_DO_IT: ++ case NBD_CLEAR_QUE: ++ case NBD_PRINT_DEBUG: ++ return RVAL_IOCTL_DECODED; ++ ++ case NBD_SET_SOCK: ++ tprints(", "); ++ printfd(tcp, arg); ++ return RVAL_IOCTL_DECODED; ++ ++ case NBD_SET_BLKSIZE: ++ case NBD_SET_SIZE: ++ case NBD_SET_SIZE_BLOCKS: ++ case NBD_SET_TIMEOUT: ++ tprints(", "); ++ tprintf("%" PRI_klu, arg); ++ return RVAL_IOCTL_DECODED; ++ ++ case NBD_SET_FLAGS: ++ tprints(", "); ++ printflags(nbd_ioctl_flags, arg, "NBD_IOC_FLAG_???"); ++ return RVAL_IOCTL_DECODED; ++ ++ default: ++ return RVAL_DECODED; ++ } ++} +diff --git a/xlat/nbd_ioctl_cmds.in b/xlat/nbd_ioctl_cmds.in +new file mode 100644 +index 0000000..34f891e +--- /dev/null ++++ b/xlat/nbd_ioctl_cmds.in +@@ -0,0 +1,11 @@ ++NBD_SET_SOCK _IO( 0xab, 0 ) ++NBD_SET_BLKSIZE _IO( 0xab, 1 ) ++NBD_SET_SIZE _IO( 0xab, 2 ) ++NBD_DO_IT _IO( 0xab, 3 ) ++NBD_CLEAR_SOCK _IO( 0xab, 4 ) ++NBD_CLEAR_QUE _IO( 0xab, 5 ) ++NBD_PRINT_DEBUG _IO( 0xab, 6 ) ++NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 ) ++NBD_DISCONNECT _IO( 0xab, 8 ) ++NBD_SET_TIMEOUT _IO( 0xab, 9 ) ++NBD_SET_FLAGS _IO( 0xab, 10) +diff --git a/xlat/nbd_ioctl_flags.in b/xlat/nbd_ioctl_flags.in +new file mode 100644 +index 0000000..60bb07f +--- /dev/null ++++ b/xlat/nbd_ioctl_flags.in +@@ -0,0 +1,29 @@ ++/* ++ * Some flags are not defined in , but are passed anyway. ++ * These flags are sent from nbd-server to the client, and the client ++ * passes them to the kernel unmodified after parsing. Both the client ++ * and the kernel ignore flags unknown to them. ++ */ ++ ++/* The server supports flags */ ++NBD_FLAG_HAS_FLAGS (1 << 0) ++/* The export is read-only */ ++NBD_FLAG_READ_ONLY (1 << 1) ++/* The server supports NBD_CMD_FLUSH */ ++NBD_FLAG_SEND_FLUSH (1 << 2) ++/* The server supports NBD_CMD_FLAG_FUA (Force Unit Access) */ ++NBD_FLAG_SEND_FUA (1 << 3) ++/* The export is a rotational medium */ ++NBD_FLAG_ROTATIONAL (1 << 4) ++/* The server supports NBD_CMD_TRIM */ ++NBD_FLAG_SEND_TRIM (1 << 5) ++/* The server supports NBD_CMD_WRITE_ZEROES and NBD_CMD_FLAG_NO_HOLE */ ++NBD_FLAG_SEND_WRITE_ZEROES (1 << 6) ++/* The server supports NBD_CMD_FLAG_DF (don't fragment replies) */ ++NBD_FLAG_SEND_DF (1 << 7) ++/* The server supports multiple connections */ ++NBD_FLAG_CAN_MULTI_CONN (1 << 8) ++/* The server supports NBD_CMD_RESIZE (resizing the device) */ ++NBD_FLAG_SEND_RESIZE (1 << 9) ++/* The server supports NBD_CMD_CACHE */ ++NBD_FLAG_SEND_CACHE (1 << 10) +-- +1.7.12.4 + diff --git a/Make-inline-message-on-failed-restart-attempt-more-v.patch b/Make-inline-message-on-failed-restart-attempt-more-v.patch new file mode 100644 index 0000000..290ab4e --- /dev/null +++ b/Make-inline-message-on-failed-restart-attempt-more-v.patch @@ -0,0 +1,33 @@ +From fe64f96ac09bfc97b6554816a19ae1fe138f1cae Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 10 Feb 2019 19:49:46 +0100 +Subject: [PATCH 224/293] Make inline message on failed restart attempt more + verbose + +Hopefully, now it is less confusing. + +* strace.c (ptrace_restart): Provide intent and pid in the inline error +message. + +References: https://bugzilla.redhat.com/show_bug.cgi?id=1662936 +--- + strace.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/strace.c b/strace.c +index 6413297..246eb0c 100644 +--- a/strace.c ++++ b/strace.c +@@ -382,7 +382,8 @@ ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + * but before we tried to restart it. Log looks ugly. + */ + if (current_tcp && current_tcp->curcol != 0) { +- tprintf(" \n", msg, strerror(err)); ++ tprintf(" \n", ++ tcp->pid, msg, strerror(err)); + line_ended(); + } + if (err == ESRCH) +-- +1.7.12.4 + diff --git a/Print-stack-traces-on-signals.patch b/Print-stack-traces-on-signals.patch new file mode 100644 index 0000000..955ecea --- /dev/null +++ b/Print-stack-traces-on-signals.patch @@ -0,0 +1,32 @@ +From 302cf02757abb99ab7744af38a5dc3015804a2e8 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 29 Aug 2018 18:09:57 +0200 +Subject: [PATCH 074/293] Print stack traces on signals + +I don't know why it hasn't been done earlier. + +* strace.c (print_stopped) [ENABLE_STACKTRACE]: Call unwind_tcb_print +if stack trace printing is enabled. +--- + strace.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/strace.c b/strace.c +index 6d70d20..62142d8 100644 +--- a/strace.c ++++ b/strace.c +@@ -2168,6 +2168,11 @@ print_stopped(struct tcb *tcp, const siginfo_t *si, const unsigned int sig) + } else + tprintf("--- stopped by %s ---\n", signame(sig)); + line_ended(); ++ ++#ifdef ENABLE_STACKTRACE ++ if (stack_trace_enabled) ++ unwind_tcb_print(tcp); ++#endif + } + } + +-- +1.7.12.4 + diff --git a/Remove-redundant-VIDIOC_SUBDEV_-constants.patch b/Remove-redundant-VIDIOC_SUBDEV_-constants.patch new file mode 100644 index 0000000..a7977a8 --- /dev/null +++ b/Remove-redundant-VIDIOC_SUBDEV_-constants.patch @@ -0,0 +1,166 @@ +From 5993d50813620bea8a200c8fadf96d97d4f27156 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 24 Oct 2018 07:48:56 +0000 +Subject: [PATCH 088/293] Remove redundant VIDIOC_SUBDEV_* constants + +Remove those of VIDIOC_SUBDEV_* constants are defined exactly the same +way by the Linux kernel as their VIDIOC_* origins. + +Linux kernel commit v4.19-rc1~137^2~248 introduced more of such +duplicates, forward remove them as well. + +* linux/32/ioctls_inc_align16.h: Remove VIDIOC_SUBDEV_DV_TIMINGS_CAP, +VIDIOC_SUBDEV_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_G_DV_TIMINGS, +VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_QUERY_DV_TIMINGS, +VIDIOC_SUBDEV_S_DV_TIMINGS, and VIDIOC_SUBDEV_S_EDID. +* linux/32/ioctls_inc_align32.h: Likewise. +* linux/32/ioctls_inc_align64.h: Likewise. +* linux/64/ioctls_inc.h: Likewise. +* linux/x32/ioctls_inc0.h: Likewise. +* maint/ioctls_sym.sh: Remove VIDIOC_SUBDEV_DV_TIMINGS_CAP, +VIDIOC_SUBDEV_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUMSTD, +VIDIOC_SUBDEV_G_DV_TIMINGS, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_G_STD, +VIDIOC_SUBDEV_QUERY_DV_TIMINGS, VIDIOC_SUBDEV_QUERYSTD, +VIDIOC_SUBDEV_S_DV_TIMINGS, VIDIOC_SUBDEV_S_EDID, and +VIDIOC_SUBDEV_S_STD. +--- + linux/32/ioctls_inc_align16.h | 7 ------- + linux/32/ioctls_inc_align32.h | 7 ------- + linux/32/ioctls_inc_align64.h | 7 ------- + linux/64/ioctls_inc.h | 7 ------- + linux/x32/ioctls_inc0.h | 7 ------- + 6 files changed, 4 insertions(+), 35 deletions(-) + +diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h +index 2bd5779..c8264e6 100644 +--- a/linux/32/ioctls_inc_align16.h ++++ b/linux/32/ioctls_inc_align16.h +@@ -2087,21 +2087,14 @@ + { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0a }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5662, 0x94 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x564b, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_SIZE", _IOC_READ|_IOC_WRITE, 0x564a, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_MBUS_CODE", _IOC_READ|_IOC_WRITE, 0x5602, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", _IOC_READ|_IOC_WRITE, 0x563b, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5658, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", _IOC_READ|_IOC_WRITE, 0x5628, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5657, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", _IOC_READ|_IOC_WRITE, 0x5629, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 }, +diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h +index 80ed706..daa5645 100644 +--- a/linux/32/ioctls_inc_align32.h ++++ b/linux/32/ioctls_inc_align32.h +@@ -2087,21 +2087,14 @@ + { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5662, 0x94 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x564b, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_SIZE", _IOC_READ|_IOC_WRITE, 0x564a, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_MBUS_CODE", _IOC_READ|_IOC_WRITE, 0x5602, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", _IOC_READ|_IOC_WRITE, 0x563b, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5658, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", _IOC_READ|_IOC_WRITE, 0x5628, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5657, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", _IOC_READ|_IOC_WRITE, 0x5629, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 }, +diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h +index 7e6205d..78a78ac 100644 +--- a/linux/32/ioctls_inc_align64.h ++++ b/linux/32/ioctls_inc_align64.h +@@ -2087,21 +2087,14 @@ + { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5662, 0x94 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x564b, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_SIZE", _IOC_READ|_IOC_WRITE, 0x564a, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_MBUS_CODE", _IOC_READ|_IOC_WRITE, 0x5602, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", _IOC_READ|_IOC_WRITE, 0x563b, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5658, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", _IOC_READ|_IOC_WRITE, 0x5628, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5657, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", _IOC_READ|_IOC_WRITE, 0x5629, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 }, +diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h +index b3e5166..c9fca6b 100644 +--- a/linux/64/ioctls_inc.h ++++ b/linux/64/ioctls_inc.h +@@ -2087,21 +2087,14 @@ + { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x60 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x10 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5662, 0x94 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x564b, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_SIZE", _IOC_READ|_IOC_WRITE, 0x564a, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_MBUS_CODE", _IOC_READ|_IOC_WRITE, 0x5602, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", _IOC_READ|_IOC_WRITE, 0x563b, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5658, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", _IOC_READ|_IOC_WRITE, 0x5628, 0x28 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5657, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", _IOC_READ|_IOC_WRITE, 0x5629, 0x28 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 }, +diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h +index 7f23586..b20c29b 100644 +--- a/linux/x32/ioctls_inc0.h ++++ b/linux/x32/ioctls_inc0.h +@@ -2087,21 +2087,14 @@ + { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 }, + { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5662, 0x94 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x564b, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_FRAME_SIZE", _IOC_READ|_IOC_WRITE, 0x564a, 0x40 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_ENUM_MBUS_CODE", _IOC_READ|_IOC_WRITE, 0x5602, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", _IOC_READ|_IOC_WRITE, 0x563b, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5658, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", _IOC_READ|_IOC_WRITE, 0x5628, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_DV_TIMINGS", _IOC_READ|_IOC_WRITE, 0x5657, 0x84 }, +-{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", _IOC_READ|_IOC_WRITE, 0x5629, 0x24 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 }, + { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 }, +-- +1.7.12.4 + diff --git a/Update-ioctl-entries-from-linux-v4.19.patch b/Update-ioctl-entries-from-linux-v4.19.patch new file mode 100644 index 0000000..b29dd6a --- /dev/null +++ b/Update-ioctl-entries-from-linux-v4.19.patch @@ -0,0 +1,837 @@ +From 3960969554aad44c1269536b1c1baa4a69dc5da4 Mon Sep 17 00:00:00 2001 +From: Gleb Fotengauer-Malinovskiy +Date: Sun, 21 Oct 2018 11:47:44 +0300 +Subject: [PATCH 090/293] Update ioctl entries from linux v4.19 + +* linux/32/ioctls_inc_align16.h: Update from linux v4.19-rc8 +using ioctls_gen.sh. +* linux/32/ioctls_inc_align32.h: Likewise. +* linux/32/ioctls_inc_align64.h: Likewise. +* linux/64/ioctls_inc.h: Likewise. +* linux/x32/ioctls_inc0.h: Likewise. +* linux/i386/ioctls_arch0.h: Likewise. +* linux/x86_64/ioctls_arch0.h: Likewise. +* NEWS: Mention this. +--- + linux/32/ioctls_inc_align16.h | 41 ++++++++++++++++++++++++++++------------- + linux/32/ioctls_inc_align32.h | 41 ++++++++++++++++++++++++++++------------- + linux/32/ioctls_inc_align64.h | 41 ++++++++++++++++++++++++++++------------- + linux/64/ioctls_inc.h | 41 ++++++++++++++++++++++++++++------------- + linux/i386/ioctls_arch0.h | 2 ++ + linux/x32/ioctls_inc0.h | 41 ++++++++++++++++++++++++++++------------- + linux/x86_64/ioctls_arch0.h | 2 ++ + 8 files changed, 147 insertions(+), 65 deletions(-) + +diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h +index c8264e6..85f657d 100644 +--- a/linux/32/ioctls_inc_align16.h ++++ b/linux/32/ioctls_inc_align16.h +@@ -794,17 +794,13 @@ + { "linux/dvb/audio.h", "AUDIO_CLEAR_BUFFER", _IOC_NONE, 0x6f0c, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_CONTINUE", _IOC_NONE, 0x6f04, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_GET_CAPABILITIES", _IOC_READ, 0x6f0b, 0x04 }, +-{ "linux/dvb/audio.h", "AUDIO_GET_PTS", _IOC_READ, 0x6f13, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_GET_STATUS", _IOC_READ, 0x6f0a, 0x20 }, + { "linux/dvb/audio.h", "AUDIO_PAUSE", _IOC_NONE, 0x6f03, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_PLAY", _IOC_NONE, 0x6f02, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SELECT_SOURCE", _IOC_NONE, 0x6f05, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_ATTRIBUTES", _IOC_WRITE, 0x6f11, 0x02 }, + { "linux/dvb/audio.h", "AUDIO_SET_AV_SYNC", _IOC_NONE, 0x6f07, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_BYPASS_MODE", _IOC_NONE, 0x6f08, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_EXT_ID", _IOC_NONE, 0x6f10, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_ID", _IOC_NONE, 0x6f0d, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_KARAOKE", _IOC_WRITE, 0x6f12, 0x0c }, + { "linux/dvb/audio.h", "AUDIO_SET_MIXER", _IOC_WRITE, 0x6f0e, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_SET_MUTE", _IOC_NONE, 0x6f06, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_STREAMTYPE", _IOC_NONE, 0x6f0f, 0x00 }, +@@ -863,23 +859,15 @@ + { "linux/dvb/video.h", "VIDEO_GET_CAPABILITIES", _IOC_READ, 0x6f21, 0x04 }, + { "linux/dvb/video.h", "VIDEO_GET_EVENT", _IOC_READ, 0x6f1c, 0x14 }, + { "linux/dvb/video.h", "VIDEO_GET_FRAME_COUNT", _IOC_READ, 0x6f3a, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_GET_FRAME_RATE", _IOC_READ, 0x6f38, 0x04 }, +-{ "linux/dvb/video.h", "VIDEO_GET_NAVI", _IOC_READ, 0x6f34, 0x404 }, + { "linux/dvb/video.h", "VIDEO_GET_PTS", _IOC_READ, 0x6f39, 0x08 }, + { "linux/dvb/video.h", "VIDEO_GET_SIZE", _IOC_READ, 0x6f37, 0x0c }, + { "linux/dvb/video.h", "VIDEO_GET_STATUS", _IOC_READ, 0x6f1b, 0x14 }, + { "linux/dvb/video.h", "VIDEO_PLAY", _IOC_NONE, 0x6f16, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SELECT_SOURCE", _IOC_NONE, 0x6f19, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ATTRIBUTES", _IOC_NONE, 0x6f35, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_BLANK", _IOC_NONE, 0x6f1a, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_DISPLAY_FORMAT", _IOC_NONE, 0x6f1d, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_FORMAT", _IOC_NONE, 0x6f25, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_HIGHLIGHT", _IOC_WRITE, 0x6f27, 0x10 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ID", _IOC_NONE, 0x6f23, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU", _IOC_WRITE, 0x6f32, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU_PALETTE", _IOC_WRITE, 0x6f33, 0x08 }, + { "linux/dvb/video.h", "VIDEO_SET_STREAMTYPE", _IOC_NONE, 0x6f24, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SYSTEM", _IOC_NONE, 0x6f26, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SLOWMOTION", _IOC_NONE, 0x6f20, 0x00 }, + { "linux/dvb/video.h", "VIDEO_STILLPICTURE", _IOC_WRITE, 0x6f1e, 0x08 }, + { "linux/dvb/video.h", "VIDEO_STOP", _IOC_NONE, 0x6f15, 0x00 }, +@@ -952,6 +940,14 @@ + { "linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", _IOC_WRITE, 0x2317, 0x0c }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 }, + { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 }, + { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 }, + { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 }, +@@ -1004,6 +1000,10 @@ + { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 }, + { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 }, + { "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c }, ++{ "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x1e }, ++{ "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_WRITE", _IOC_READ|_IOC_WRITE, 0x7302, 0x1e }, + { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 }, + { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 }, + { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 }, +@@ -1335,6 +1335,7 @@ + { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_MAP_MEMORY_TO_GPU", _IOC_READ|_IOC_WRITE, 0x4b18, 0x18 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, ++{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_CU_MASK", _IOC_WRITE, 0x4b1a, 0x10 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, +@@ -1512,9 +1513,12 @@ + { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 }, + { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 }, + { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 }, + { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 }, + { "linux/pcitest.h", "PCITEST_MSI", _IOC_WRITE, 0x5003, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_MSIX", _IOC_WRITE, 0x5007, 0x04 }, + { "linux/pcitest.h", "PCITEST_READ", _IOC_WRITE, 0x5005, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_SET_IRQTYPE", _IOC_WRITE, 0x5008, 0x04 }, + { "linux/pcitest.h", "PCITEST_WRITE", _IOC_WRITE, 0x5004, 0x04 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", _IOC_NONE, 0x2401, 0x00 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", _IOC_NONE, 0x2400, 0x00 }, +@@ -2027,6 +2031,7 @@ + { "linux/usb/functionfs.h", "FUNCTIONFS_INTERFACE_REVMAP", _IOC_NONE, 0x6780, 0x00 }, + { "linux/usb/g_printer.h", "GADGET_GET_PRINTER_STATUS", _IOC_READ, 0x6721, 0x01 }, + { "linux/usb/g_printer.h", "GADGET_SET_PRINTER_STATUS", _IOC_READ|_IOC_WRITE, 0x6722, 0x01 }, ++{ "linux/usb/g_uvc.h", "UVCIOC_SEND_RESPONSE", _IOC_WRITE, 0x5501, 0x40 }, + { "linux/usb/gadgetfs.h", "GADGETFS_CLEAR_HALT", _IOC_NONE, 0x6703, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_FLUSH", _IOC_NONE, 0x6702, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", _IOC_NONE, 0x6701, 0x00 }, +@@ -2038,12 +2043,17 @@ + { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC488_IOCTL_TRIGGER", _IOC_NONE, 0x5b16, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_IN_HALT", _IOC_NONE, 0x5b07, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_OUT_HALT", _IOC_NONE, 0x5b06, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_CONFIG_TERMCHAR", _IOC_WRITE, 0x5b0c, 0x02 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_EOM_ENABLE", _IOC_WRITE, 0x5b0b, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_GET_TIMEOUT", _IOC_READ, 0x5b09, 0x04 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_INDICATOR_PULSE", _IOC_NONE, 0x5b01, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_SET_TIMEOUT", _IOC_WRITE, 0x5b0a, 0x04 }, + { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, +@@ -2136,6 +2146,7 @@ + { "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 }, + { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 }, + { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 }, ++{ "linux/vhost.h", "VHOST_GET_BACKEND_FEATURES", _IOC_READ, 0xaf26, 0x08 }, + { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 }, +@@ -2147,6 +2158,7 @@ + { "linux/vhost.h", "VHOST_SCSI_GET_EVENTS_MISSED", _IOC_WRITE, 0xaf44, 0x04 }, + { "linux/vhost.h", "VHOST_SCSI_SET_ENDPOINT", _IOC_WRITE, 0xaf40, 0xe8 }, + { "linux/vhost.h", "VHOST_SCSI_SET_EVENTS_MISSED", _IOC_WRITE, 0xaf43, 0x04 }, ++{ "linux/vhost.h", "VHOST_SET_BACKEND_FEATURES", _IOC_WRITE, 0xaf25, 0x08 }, + { "linux/vhost.h", "VHOST_SET_FEATURES", _IOC_WRITE, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_BASE", _IOC_WRITE, 0xaf04, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_FD", _IOC_WRITE, 0xaf07, 0x04 }, +@@ -2216,7 +2228,6 @@ + { "linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/videodev2.h", "VIDIOC_QUERY_EXT_CTRL", _IOC_READ|_IOC_WRITE, 0x5667, 0xe8 }, + { "linux/videodev2.h", "VIDIOC_REQBUFS", _IOC_READ|_IOC_WRITE, 0x5608, 0x14 }, +-{ "linux/videodev2.h", "VIDIOC_RESERVED", _IOC_NONE, 0x5601, 0x00 }, + { "linux/videodev2.h", "VIDIOC_STREAMOFF", _IOC_WRITE, 0x5613, 0x04 }, + { "linux/videodev2.h", "VIDIOC_STREAMON", _IOC_WRITE, 0x5612, 0x04 }, + { "linux/videodev2.h", "VIDIOC_SUBSCRIBE_EVENT", _IOC_WRITE, 0x565a, 0x20 }, +@@ -2743,6 +2754,10 @@ + { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS", _IOC_NONE, 0x4709, 0x14 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED", _IOC_NONE, 0x470a, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_RELEASE", _IOC_NONE, 0x470c, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_TO_REFS", _IOC_NONE, 0x470b, 0x14 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 }, +diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h +index daa5645..ce23a36 100644 +--- a/linux/32/ioctls_inc_align32.h ++++ b/linux/32/ioctls_inc_align32.h +@@ -794,17 +794,13 @@ + { "linux/dvb/audio.h", "AUDIO_CLEAR_BUFFER", _IOC_NONE, 0x6f0c, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_CONTINUE", _IOC_NONE, 0x6f04, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_GET_CAPABILITIES", _IOC_READ, 0x6f0b, 0x04 }, +-{ "linux/dvb/audio.h", "AUDIO_GET_PTS", _IOC_READ, 0x6f13, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_GET_STATUS", _IOC_READ, 0x6f0a, 0x20 }, + { "linux/dvb/audio.h", "AUDIO_PAUSE", _IOC_NONE, 0x6f03, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_PLAY", _IOC_NONE, 0x6f02, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SELECT_SOURCE", _IOC_NONE, 0x6f05, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_ATTRIBUTES", _IOC_WRITE, 0x6f11, 0x02 }, + { "linux/dvb/audio.h", "AUDIO_SET_AV_SYNC", _IOC_NONE, 0x6f07, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_BYPASS_MODE", _IOC_NONE, 0x6f08, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_EXT_ID", _IOC_NONE, 0x6f10, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_ID", _IOC_NONE, 0x6f0d, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_KARAOKE", _IOC_WRITE, 0x6f12, 0x0c }, + { "linux/dvb/audio.h", "AUDIO_SET_MIXER", _IOC_WRITE, 0x6f0e, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_SET_MUTE", _IOC_NONE, 0x6f06, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_STREAMTYPE", _IOC_NONE, 0x6f0f, 0x00 }, +@@ -863,23 +859,15 @@ + { "linux/dvb/video.h", "VIDEO_GET_CAPABILITIES", _IOC_READ, 0x6f21, 0x04 }, + { "linux/dvb/video.h", "VIDEO_GET_EVENT", _IOC_READ, 0x6f1c, 0x14 }, + { "linux/dvb/video.h", "VIDEO_GET_FRAME_COUNT", _IOC_READ, 0x6f3a, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_GET_FRAME_RATE", _IOC_READ, 0x6f38, 0x04 }, +-{ "linux/dvb/video.h", "VIDEO_GET_NAVI", _IOC_READ, 0x6f34, 0x404 }, + { "linux/dvb/video.h", "VIDEO_GET_PTS", _IOC_READ, 0x6f39, 0x08 }, + { "linux/dvb/video.h", "VIDEO_GET_SIZE", _IOC_READ, 0x6f37, 0x0c }, + { "linux/dvb/video.h", "VIDEO_GET_STATUS", _IOC_READ, 0x6f1b, 0x14 }, + { "linux/dvb/video.h", "VIDEO_PLAY", _IOC_NONE, 0x6f16, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SELECT_SOURCE", _IOC_NONE, 0x6f19, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ATTRIBUTES", _IOC_NONE, 0x6f35, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_BLANK", _IOC_NONE, 0x6f1a, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_DISPLAY_FORMAT", _IOC_NONE, 0x6f1d, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_FORMAT", _IOC_NONE, 0x6f25, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_HIGHLIGHT", _IOC_WRITE, 0x6f27, 0x10 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ID", _IOC_NONE, 0x6f23, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU", _IOC_WRITE, 0x6f32, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU_PALETTE", _IOC_WRITE, 0x6f33, 0x08 }, + { "linux/dvb/video.h", "VIDEO_SET_STREAMTYPE", _IOC_NONE, 0x6f24, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SYSTEM", _IOC_NONE, 0x6f26, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SLOWMOTION", _IOC_NONE, 0x6f20, 0x00 }, + { "linux/dvb/video.h", "VIDEO_STILLPICTURE", _IOC_WRITE, 0x6f1e, 0x08 }, + { "linux/dvb/video.h", "VIDEO_STOP", _IOC_NONE, 0x6f15, 0x00 }, +@@ -952,6 +940,14 @@ + { "linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", _IOC_WRITE, 0x2317, 0x0c }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 }, + { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 }, + { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 }, + { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 }, +@@ -1004,6 +1000,10 @@ + { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 }, + { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 }, + { "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c }, ++{ "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 }, ++{ "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_WRITE", _IOC_READ|_IOC_WRITE, 0x7302, 0x20 }, + { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 }, + { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 }, + { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 }, +@@ -1335,6 +1335,7 @@ + { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_MAP_MEMORY_TO_GPU", _IOC_READ|_IOC_WRITE, 0x4b18, 0x18 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, ++{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_CU_MASK", _IOC_WRITE, 0x4b1a, 0x10 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, +@@ -1512,9 +1513,12 @@ + { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 }, + { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 }, + { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 }, + { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 }, + { "linux/pcitest.h", "PCITEST_MSI", _IOC_WRITE, 0x5003, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_MSIX", _IOC_WRITE, 0x5007, 0x04 }, + { "linux/pcitest.h", "PCITEST_READ", _IOC_WRITE, 0x5005, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_SET_IRQTYPE", _IOC_WRITE, 0x5008, 0x04 }, + { "linux/pcitest.h", "PCITEST_WRITE", _IOC_WRITE, 0x5004, 0x04 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", _IOC_NONE, 0x2401, 0x00 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", _IOC_NONE, 0x2400, 0x00 }, +@@ -2027,6 +2031,7 @@ + { "linux/usb/functionfs.h", "FUNCTIONFS_INTERFACE_REVMAP", _IOC_NONE, 0x6780, 0x00 }, + { "linux/usb/g_printer.h", "GADGET_GET_PRINTER_STATUS", _IOC_READ, 0x6721, 0x01 }, + { "linux/usb/g_printer.h", "GADGET_SET_PRINTER_STATUS", _IOC_READ|_IOC_WRITE, 0x6722, 0x01 }, ++{ "linux/usb/g_uvc.h", "UVCIOC_SEND_RESPONSE", _IOC_WRITE, 0x5501, 0x40 }, + { "linux/usb/gadgetfs.h", "GADGETFS_CLEAR_HALT", _IOC_NONE, 0x6703, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_FLUSH", _IOC_NONE, 0x6702, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", _IOC_NONE, 0x6701, 0x00 }, +@@ -2038,12 +2043,17 @@ + { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC488_IOCTL_TRIGGER", _IOC_NONE, 0x5b16, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_IN_HALT", _IOC_NONE, 0x5b07, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_OUT_HALT", _IOC_NONE, 0x5b06, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_CONFIG_TERMCHAR", _IOC_WRITE, 0x5b0c, 0x02 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_EOM_ENABLE", _IOC_WRITE, 0x5b0b, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_GET_TIMEOUT", _IOC_READ, 0x5b09, 0x04 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_INDICATOR_PULSE", _IOC_NONE, 0x5b01, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_SET_TIMEOUT", _IOC_WRITE, 0x5b0a, 0x04 }, + { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, +@@ -2136,6 +2146,7 @@ + { "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 }, + { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 }, + { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 }, ++{ "linux/vhost.h", "VHOST_GET_BACKEND_FEATURES", _IOC_READ, 0xaf26, 0x08 }, + { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 }, +@@ -2147,6 +2158,7 @@ + { "linux/vhost.h", "VHOST_SCSI_GET_EVENTS_MISSED", _IOC_WRITE, 0xaf44, 0x04 }, + { "linux/vhost.h", "VHOST_SCSI_SET_ENDPOINT", _IOC_WRITE, 0xaf40, 0xe8 }, + { "linux/vhost.h", "VHOST_SCSI_SET_EVENTS_MISSED", _IOC_WRITE, 0xaf43, 0x04 }, ++{ "linux/vhost.h", "VHOST_SET_BACKEND_FEATURES", _IOC_WRITE, 0xaf25, 0x08 }, + { "linux/vhost.h", "VHOST_SET_FEATURES", _IOC_WRITE, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_BASE", _IOC_WRITE, 0xaf04, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_FD", _IOC_WRITE, 0xaf07, 0x04 }, +@@ -2216,7 +2228,6 @@ + { "linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/videodev2.h", "VIDIOC_QUERY_EXT_CTRL", _IOC_READ|_IOC_WRITE, 0x5667, 0xe8 }, + { "linux/videodev2.h", "VIDIOC_REQBUFS", _IOC_READ|_IOC_WRITE, 0x5608, 0x14 }, +-{ "linux/videodev2.h", "VIDIOC_RESERVED", _IOC_NONE, 0x5601, 0x00 }, + { "linux/videodev2.h", "VIDIOC_STREAMOFF", _IOC_WRITE, 0x5613, 0x04 }, + { "linux/videodev2.h", "VIDIOC_STREAMON", _IOC_WRITE, 0x5612, 0x04 }, + { "linux/videodev2.h", "VIDIOC_SUBSCRIBE_EVENT", _IOC_WRITE, 0x565a, 0x20 }, +@@ -2743,6 +2754,10 @@ + { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS", _IOC_NONE, 0x4709, 0x14 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED", _IOC_NONE, 0x470a, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_RELEASE", _IOC_NONE, 0x470c, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_TO_REFS", _IOC_NONE, 0x470b, 0x14 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 }, +diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h +index 78a78ac..31059f6 100644 +--- a/linux/32/ioctls_inc_align64.h ++++ b/linux/32/ioctls_inc_align64.h +@@ -794,17 +794,13 @@ + { "linux/dvb/audio.h", "AUDIO_CLEAR_BUFFER", _IOC_NONE, 0x6f0c, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_CONTINUE", _IOC_NONE, 0x6f04, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_GET_CAPABILITIES", _IOC_READ, 0x6f0b, 0x04 }, +-{ "linux/dvb/audio.h", "AUDIO_GET_PTS", _IOC_READ, 0x6f13, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_GET_STATUS", _IOC_READ, 0x6f0a, 0x20 }, + { "linux/dvb/audio.h", "AUDIO_PAUSE", _IOC_NONE, 0x6f03, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_PLAY", _IOC_NONE, 0x6f02, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SELECT_SOURCE", _IOC_NONE, 0x6f05, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_ATTRIBUTES", _IOC_WRITE, 0x6f11, 0x02 }, + { "linux/dvb/audio.h", "AUDIO_SET_AV_SYNC", _IOC_NONE, 0x6f07, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_BYPASS_MODE", _IOC_NONE, 0x6f08, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_EXT_ID", _IOC_NONE, 0x6f10, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_ID", _IOC_NONE, 0x6f0d, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_KARAOKE", _IOC_WRITE, 0x6f12, 0x0c }, + { "linux/dvb/audio.h", "AUDIO_SET_MIXER", _IOC_WRITE, 0x6f0e, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_SET_MUTE", _IOC_NONE, 0x6f06, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_STREAMTYPE", _IOC_NONE, 0x6f0f, 0x00 }, +@@ -863,23 +859,15 @@ + { "linux/dvb/video.h", "VIDEO_GET_CAPABILITIES", _IOC_READ, 0x6f21, 0x04 }, + { "linux/dvb/video.h", "VIDEO_GET_EVENT", _IOC_READ, 0x6f1c, 0x14 }, + { "linux/dvb/video.h", "VIDEO_GET_FRAME_COUNT", _IOC_READ, 0x6f3a, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_GET_FRAME_RATE", _IOC_READ, 0x6f38, 0x04 }, +-{ "linux/dvb/video.h", "VIDEO_GET_NAVI", _IOC_READ, 0x6f34, 0x404 }, + { "linux/dvb/video.h", "VIDEO_GET_PTS", _IOC_READ, 0x6f39, 0x08 }, + { "linux/dvb/video.h", "VIDEO_GET_SIZE", _IOC_READ, 0x6f37, 0x0c }, + { "linux/dvb/video.h", "VIDEO_GET_STATUS", _IOC_READ, 0x6f1b, 0x14 }, + { "linux/dvb/video.h", "VIDEO_PLAY", _IOC_NONE, 0x6f16, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SELECT_SOURCE", _IOC_NONE, 0x6f19, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ATTRIBUTES", _IOC_NONE, 0x6f35, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_BLANK", _IOC_NONE, 0x6f1a, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_DISPLAY_FORMAT", _IOC_NONE, 0x6f1d, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_FORMAT", _IOC_NONE, 0x6f25, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_HIGHLIGHT", _IOC_WRITE, 0x6f27, 0x10 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ID", _IOC_NONE, 0x6f23, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU", _IOC_WRITE, 0x6f32, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU_PALETTE", _IOC_WRITE, 0x6f33, 0x08 }, + { "linux/dvb/video.h", "VIDEO_SET_STREAMTYPE", _IOC_NONE, 0x6f24, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SYSTEM", _IOC_NONE, 0x6f26, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SLOWMOTION", _IOC_NONE, 0x6f20, 0x00 }, + { "linux/dvb/video.h", "VIDEO_STILLPICTURE", _IOC_WRITE, 0x6f1e, 0x08 }, + { "linux/dvb/video.h", "VIDEO_STOP", _IOC_NONE, 0x6f15, 0x00 }, +@@ -952,6 +940,14 @@ + { "linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", _IOC_WRITE, 0x2317, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 }, + { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 }, + { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 }, + { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 }, +@@ -1004,6 +1000,10 @@ + { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 }, + { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 }, + { "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c }, ++{ "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 }, ++{ "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_WRITE", _IOC_READ|_IOC_WRITE, 0x7302, 0x20 }, + { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 }, + { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 }, + { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 }, +@@ -1335,6 +1335,7 @@ + { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_MAP_MEMORY_TO_GPU", _IOC_READ|_IOC_WRITE, 0x4b18, 0x18 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, ++{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_CU_MASK", _IOC_WRITE, 0x4b1a, 0x10 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, +@@ -1512,9 +1513,12 @@ + { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 }, + { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 }, + { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 }, + { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 }, + { "linux/pcitest.h", "PCITEST_MSI", _IOC_WRITE, 0x5003, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_MSIX", _IOC_WRITE, 0x5007, 0x04 }, + { "linux/pcitest.h", "PCITEST_READ", _IOC_WRITE, 0x5005, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_SET_IRQTYPE", _IOC_WRITE, 0x5008, 0x04 }, + { "linux/pcitest.h", "PCITEST_WRITE", _IOC_WRITE, 0x5004, 0x04 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", _IOC_NONE, 0x2401, 0x00 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", _IOC_NONE, 0x2400, 0x00 }, +@@ -2027,6 +2031,7 @@ + { "linux/usb/functionfs.h", "FUNCTIONFS_INTERFACE_REVMAP", _IOC_NONE, 0x6780, 0x00 }, + { "linux/usb/g_printer.h", "GADGET_GET_PRINTER_STATUS", _IOC_READ, 0x6721, 0x01 }, + { "linux/usb/g_printer.h", "GADGET_SET_PRINTER_STATUS", _IOC_READ|_IOC_WRITE, 0x6722, 0x01 }, ++{ "linux/usb/g_uvc.h", "UVCIOC_SEND_RESPONSE", _IOC_WRITE, 0x5501, 0x40 }, + { "linux/usb/gadgetfs.h", "GADGETFS_CLEAR_HALT", _IOC_NONE, 0x6703, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_FLUSH", _IOC_NONE, 0x6702, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", _IOC_NONE, 0x6701, 0x00 }, +@@ -2038,12 +2043,17 @@ + { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC488_IOCTL_TRIGGER", _IOC_NONE, 0x5b16, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_IN_HALT", _IOC_NONE, 0x5b07, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_OUT_HALT", _IOC_NONE, 0x5b06, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_CONFIG_TERMCHAR", _IOC_WRITE, 0x5b0c, 0x02 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_EOM_ENABLE", _IOC_WRITE, 0x5b0b, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_GET_TIMEOUT", _IOC_READ, 0x5b09, 0x04 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_INDICATOR_PULSE", _IOC_NONE, 0x5b01, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_SET_TIMEOUT", _IOC_WRITE, 0x5b0a, 0x04 }, + { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, +@@ -2136,6 +2146,7 @@ + { "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 }, + { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 }, + { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 }, ++{ "linux/vhost.h", "VHOST_GET_BACKEND_FEATURES", _IOC_READ, 0xaf26, 0x08 }, + { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 }, +@@ -2147,6 +2158,7 @@ + { "linux/vhost.h", "VHOST_SCSI_GET_EVENTS_MISSED", _IOC_WRITE, 0xaf44, 0x04 }, + { "linux/vhost.h", "VHOST_SCSI_SET_ENDPOINT", _IOC_WRITE, 0xaf40, 0xe8 }, + { "linux/vhost.h", "VHOST_SCSI_SET_EVENTS_MISSED", _IOC_WRITE, 0xaf43, 0x04 }, ++{ "linux/vhost.h", "VHOST_SET_BACKEND_FEATURES", _IOC_WRITE, 0xaf25, 0x08 }, + { "linux/vhost.h", "VHOST_SET_FEATURES", _IOC_WRITE, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_BASE", _IOC_WRITE, 0xaf04, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_FD", _IOC_WRITE, 0xaf07, 0x04 }, +@@ -2216,7 +2228,6 @@ + { "linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/videodev2.h", "VIDIOC_QUERY_EXT_CTRL", _IOC_READ|_IOC_WRITE, 0x5667, 0xe8 }, + { "linux/videodev2.h", "VIDIOC_REQBUFS", _IOC_READ|_IOC_WRITE, 0x5608, 0x14 }, +-{ "linux/videodev2.h", "VIDIOC_RESERVED", _IOC_NONE, 0x5601, 0x00 }, + { "linux/videodev2.h", "VIDIOC_STREAMOFF", _IOC_WRITE, 0x5613, 0x04 }, + { "linux/videodev2.h", "VIDIOC_STREAMON", _IOC_WRITE, 0x5612, 0x04 }, + { "linux/videodev2.h", "VIDIOC_SUBSCRIBE_EVENT", _IOC_WRITE, 0x565a, 0x20 }, +@@ -2743,6 +2754,10 @@ + { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS", _IOC_NONE, 0x4709, 0x14 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED", _IOC_NONE, 0x470a, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_RELEASE", _IOC_NONE, 0x470c, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_TO_REFS", _IOC_NONE, 0x470b, 0x14 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 }, +diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h +index c9fca6b..94c5f56 100644 +--- a/linux/64/ioctls_inc.h ++++ b/linux/64/ioctls_inc.h +@@ -794,17 +794,13 @@ + { "linux/dvb/audio.h", "AUDIO_CLEAR_BUFFER", _IOC_NONE, 0x6f0c, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_CONTINUE", _IOC_NONE, 0x6f04, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_GET_CAPABILITIES", _IOC_READ, 0x6f0b, 0x04 }, +-{ "linux/dvb/audio.h", "AUDIO_GET_PTS", _IOC_READ, 0x6f13, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_GET_STATUS", _IOC_READ, 0x6f0a, 0x20 }, + { "linux/dvb/audio.h", "AUDIO_PAUSE", _IOC_NONE, 0x6f03, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_PLAY", _IOC_NONE, 0x6f02, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SELECT_SOURCE", _IOC_NONE, 0x6f05, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_ATTRIBUTES", _IOC_WRITE, 0x6f11, 0x02 }, + { "linux/dvb/audio.h", "AUDIO_SET_AV_SYNC", _IOC_NONE, 0x6f07, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_BYPASS_MODE", _IOC_NONE, 0x6f08, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_EXT_ID", _IOC_NONE, 0x6f10, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_ID", _IOC_NONE, 0x6f0d, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_KARAOKE", _IOC_WRITE, 0x6f12, 0x0c }, + { "linux/dvb/audio.h", "AUDIO_SET_MIXER", _IOC_WRITE, 0x6f0e, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_SET_MUTE", _IOC_NONE, 0x6f06, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_STREAMTYPE", _IOC_NONE, 0x6f0f, 0x00 }, +@@ -863,23 +859,15 @@ + { "linux/dvb/video.h", "VIDEO_GET_CAPABILITIES", _IOC_READ, 0x6f21, 0x04 }, + { "linux/dvb/video.h", "VIDEO_GET_EVENT", _IOC_READ, 0x6f1c, 0x20 }, + { "linux/dvb/video.h", "VIDEO_GET_FRAME_COUNT", _IOC_READ, 0x6f3a, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_GET_FRAME_RATE", _IOC_READ, 0x6f38, 0x04 }, +-{ "linux/dvb/video.h", "VIDEO_GET_NAVI", _IOC_READ, 0x6f34, 0x404 }, + { "linux/dvb/video.h", "VIDEO_GET_PTS", _IOC_READ, 0x6f39, 0x08 }, + { "linux/dvb/video.h", "VIDEO_GET_SIZE", _IOC_READ, 0x6f37, 0x0c }, + { "linux/dvb/video.h", "VIDEO_GET_STATUS", _IOC_READ, 0x6f1b, 0x14 }, + { "linux/dvb/video.h", "VIDEO_PLAY", _IOC_NONE, 0x6f16, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SELECT_SOURCE", _IOC_NONE, 0x6f19, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ATTRIBUTES", _IOC_NONE, 0x6f35, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_BLANK", _IOC_NONE, 0x6f1a, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_DISPLAY_FORMAT", _IOC_NONE, 0x6f1d, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_FORMAT", _IOC_NONE, 0x6f25, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_HIGHLIGHT", _IOC_WRITE, 0x6f27, 0x10 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ID", _IOC_NONE, 0x6f23, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU", _IOC_WRITE, 0x6f32, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU_PALETTE", _IOC_WRITE, 0x6f33, 0x10 }, + { "linux/dvb/video.h", "VIDEO_SET_STREAMTYPE", _IOC_NONE, 0x6f24, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SYSTEM", _IOC_NONE, 0x6f26, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SLOWMOTION", _IOC_NONE, 0x6f20, 0x00 }, + { "linux/dvb/video.h", "VIDEO_STILLPICTURE", _IOC_WRITE, 0x6f1e, 0x10 }, + { "linux/dvb/video.h", "VIDEO_STOP", _IOC_NONE, 0x6f15, 0x00 }, +@@ -952,6 +940,14 @@ + { "linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", _IOC_WRITE, 0x2317, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 }, + { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 }, + { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x08 }, + { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x08 }, +@@ -1004,6 +1000,10 @@ + { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 }, + { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x08 }, + { "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c }, ++{ "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 }, ++{ "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_WRITE", _IOC_READ|_IOC_WRITE, 0x7302, 0x20 }, + { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 }, + { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 }, + { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 }, +@@ -1335,6 +1335,7 @@ + { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_MAP_MEMORY_TO_GPU", _IOC_READ|_IOC_WRITE, 0x4b18, 0x18 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, ++{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_CU_MASK", _IOC_WRITE, 0x4b1a, 0x10 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, +@@ -1512,9 +1513,12 @@ + { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 }, + { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 }, + { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x08 }, ++{ "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 }, + { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 }, + { "linux/pcitest.h", "PCITEST_MSI", _IOC_WRITE, 0x5003, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_MSIX", _IOC_WRITE, 0x5007, 0x04 }, + { "linux/pcitest.h", "PCITEST_READ", _IOC_WRITE, 0x5005, 0x08 }, ++{ "linux/pcitest.h", "PCITEST_SET_IRQTYPE", _IOC_WRITE, 0x5008, 0x04 }, + { "linux/pcitest.h", "PCITEST_WRITE", _IOC_WRITE, 0x5004, 0x08 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", _IOC_NONE, 0x2401, 0x00 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", _IOC_NONE, 0x2400, 0x00 }, +@@ -2027,6 +2031,7 @@ + { "linux/usb/functionfs.h", "FUNCTIONFS_INTERFACE_REVMAP", _IOC_NONE, 0x6780, 0x00 }, + { "linux/usb/g_printer.h", "GADGET_GET_PRINTER_STATUS", _IOC_READ, 0x6721, 0x01 }, + { "linux/usb/g_printer.h", "GADGET_SET_PRINTER_STATUS", _IOC_READ|_IOC_WRITE, 0x6722, 0x01 }, ++{ "linux/usb/g_uvc.h", "UVCIOC_SEND_RESPONSE", _IOC_WRITE, 0x5501, 0x40 }, + { "linux/usb/gadgetfs.h", "GADGETFS_CLEAR_HALT", _IOC_NONE, 0x6703, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_FLUSH", _IOC_NONE, 0x6702, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", _IOC_NONE, 0x6701, 0x00 }, +@@ -2038,12 +2043,17 @@ + { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC488_IOCTL_TRIGGER", _IOC_NONE, 0x5b16, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_IN_HALT", _IOC_NONE, 0x5b07, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_OUT_HALT", _IOC_NONE, 0x5b06, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_CONFIG_TERMCHAR", _IOC_WRITE, 0x5b0c, 0x02 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_EOM_ENABLE", _IOC_WRITE, 0x5b0b, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_GET_TIMEOUT", _IOC_READ, 0x5b09, 0x04 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_INDICATOR_PULSE", _IOC_NONE, 0x5b01, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_SET_TIMEOUT", _IOC_WRITE, 0x5b0a, 0x04 }, + { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x18 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, +@@ -2136,6 +2146,7 @@ + { "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 }, + { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 }, + { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 }, ++{ "linux/vhost.h", "VHOST_GET_BACKEND_FEATURES", _IOC_READ, 0xaf26, 0x08 }, + { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 }, +@@ -2147,6 +2158,7 @@ + { "linux/vhost.h", "VHOST_SCSI_GET_EVENTS_MISSED", _IOC_WRITE, 0xaf44, 0x04 }, + { "linux/vhost.h", "VHOST_SCSI_SET_ENDPOINT", _IOC_WRITE, 0xaf40, 0xe8 }, + { "linux/vhost.h", "VHOST_SCSI_SET_EVENTS_MISSED", _IOC_WRITE, 0xaf43, 0x04 }, ++{ "linux/vhost.h", "VHOST_SET_BACKEND_FEATURES", _IOC_WRITE, 0xaf25, 0x08 }, + { "linux/vhost.h", "VHOST_SET_FEATURES", _IOC_WRITE, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_BASE", _IOC_WRITE, 0xaf04, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_FD", _IOC_WRITE, 0xaf07, 0x04 }, +@@ -2216,7 +2228,6 @@ + { "linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/videodev2.h", "VIDIOC_QUERY_EXT_CTRL", _IOC_READ|_IOC_WRITE, 0x5667, 0xe8 }, + { "linux/videodev2.h", "VIDIOC_REQBUFS", _IOC_READ|_IOC_WRITE, 0x5608, 0x14 }, +-{ "linux/videodev2.h", "VIDIOC_RESERVED", _IOC_NONE, 0x5601, 0x00 }, + { "linux/videodev2.h", "VIDIOC_STREAMOFF", _IOC_WRITE, 0x5613, 0x04 }, + { "linux/videodev2.h", "VIDIOC_STREAMON", _IOC_WRITE, 0x5612, 0x04 }, + { "linux/videodev2.h", "VIDIOC_SUBSCRIBE_EVENT", _IOC_WRITE, 0x565a, 0x20 }, +@@ -2743,6 +2754,10 @@ + { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS", _IOC_NONE, 0x4709, 0x14 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED", _IOC_NONE, 0x470a, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_RELEASE", _IOC_NONE, 0x470c, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_TO_REFS", _IOC_NONE, 0x470b, 0x14 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x10 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 }, +diff --git a/linux/i386/ioctls_arch0.h b/linux/i386/ioctls_arch0.h +index 5b6d3f3..6706dca 100644 +--- a/linux/i386/ioctls_arch0.h ++++ b/linux/i386/ioctls_arch0.h +@@ -44,6 +44,7 @@ + { "linux/kvm.h", "KVM_GET_MSRS", _IOC_READ|_IOC_WRITE, 0xae88, 0x08 }, + { "linux/kvm.h", "KVM_GET_MSR_FEATURE_INDEX_LIST", _IOC_READ|_IOC_WRITE, 0xae0a, 0x04 }, + { "linux/kvm.h", "KVM_GET_MSR_INDEX_LIST", _IOC_READ|_IOC_WRITE, 0xae02, 0x04 }, ++{ "linux/kvm.h", "KVM_GET_NESTED_STATE", _IOC_READ|_IOC_WRITE, 0xaebe, 0x80 }, + { "linux/kvm.h", "KVM_GET_NR_MMU_PAGES", _IOC_NONE, 0xae45, 0x00 }, + { "linux/kvm.h", "KVM_GET_ONE_REG", _IOC_WRITE, 0xaeab, 0x10 }, + { "linux/kvm.h", "KVM_GET_PIT", _IOC_READ|_IOC_WRITE, 0xae65, 0x48 }, +@@ -88,6 +89,7 @@ + { "linux/kvm.h", "KVM_SET_MEMORY_REGION", _IOC_WRITE, 0xae40, 0x18 }, + { "linux/kvm.h", "KVM_SET_MP_STATE", _IOC_WRITE, 0xae99, 0x04 }, + { "linux/kvm.h", "KVM_SET_MSRS", _IOC_WRITE, 0xae89, 0x08 }, ++{ "linux/kvm.h", "KVM_SET_NESTED_STATE", _IOC_WRITE, 0xaebf, 0x80 }, + { "linux/kvm.h", "KVM_SET_NR_MMU_PAGES", _IOC_NONE, 0xae44, 0x00 }, + { "linux/kvm.h", "KVM_SET_ONE_REG", _IOC_WRITE, 0xaeac, 0x10 }, + { "linux/kvm.h", "KVM_SET_PIT", _IOC_READ, 0xae66, 0x48 }, +diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h +index b20c29b..193526e 100644 +--- a/linux/x32/ioctls_inc0.h ++++ b/linux/x32/ioctls_inc0.h +@@ -794,17 +794,13 @@ + { "linux/dvb/audio.h", "AUDIO_CLEAR_BUFFER", _IOC_NONE, 0x6f0c, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_CONTINUE", _IOC_NONE, 0x6f04, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_GET_CAPABILITIES", _IOC_READ, 0x6f0b, 0x04 }, +-{ "linux/dvb/audio.h", "AUDIO_GET_PTS", _IOC_READ, 0x6f13, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_GET_STATUS", _IOC_READ, 0x6f0a, 0x20 }, + { "linux/dvb/audio.h", "AUDIO_PAUSE", _IOC_NONE, 0x6f03, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_PLAY", _IOC_NONE, 0x6f02, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SELECT_SOURCE", _IOC_NONE, 0x6f05, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_ATTRIBUTES", _IOC_WRITE, 0x6f11, 0x02 }, + { "linux/dvb/audio.h", "AUDIO_SET_AV_SYNC", _IOC_NONE, 0x6f07, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_BYPASS_MODE", _IOC_NONE, 0x6f08, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_EXT_ID", _IOC_NONE, 0x6f10, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_ID", _IOC_NONE, 0x6f0d, 0x00 }, +-{ "linux/dvb/audio.h", "AUDIO_SET_KARAOKE", _IOC_WRITE, 0x6f12, 0x0c }, + { "linux/dvb/audio.h", "AUDIO_SET_MIXER", _IOC_WRITE, 0x6f0e, 0x08 }, + { "linux/dvb/audio.h", "AUDIO_SET_MUTE", _IOC_NONE, 0x6f06, 0x00 }, + { "linux/dvb/audio.h", "AUDIO_SET_STREAMTYPE", _IOC_NONE, 0x6f0f, 0x00 }, +@@ -863,23 +859,15 @@ + { "linux/dvb/video.h", "VIDEO_GET_CAPABILITIES", _IOC_READ, 0x6f21, 0x04 }, + { "linux/dvb/video.h", "VIDEO_GET_EVENT", _IOC_READ, 0x6f1c, 0x14 }, + { "linux/dvb/video.h", "VIDEO_GET_FRAME_COUNT", _IOC_READ, 0x6f3a, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_GET_FRAME_RATE", _IOC_READ, 0x6f38, 0x04 }, +-{ "linux/dvb/video.h", "VIDEO_GET_NAVI", _IOC_READ, 0x6f34, 0x404 }, + { "linux/dvb/video.h", "VIDEO_GET_PTS", _IOC_READ, 0x6f39, 0x08 }, + { "linux/dvb/video.h", "VIDEO_GET_SIZE", _IOC_READ, 0x6f37, 0x0c }, + { "linux/dvb/video.h", "VIDEO_GET_STATUS", _IOC_READ, 0x6f1b, 0x14 }, + { "linux/dvb/video.h", "VIDEO_PLAY", _IOC_NONE, 0x6f16, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SELECT_SOURCE", _IOC_NONE, 0x6f19, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ATTRIBUTES", _IOC_NONE, 0x6f35, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_BLANK", _IOC_NONE, 0x6f1a, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_DISPLAY_FORMAT", _IOC_NONE, 0x6f1d, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SET_FORMAT", _IOC_NONE, 0x6f25, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_HIGHLIGHT", _IOC_WRITE, 0x6f27, 0x10 }, +-{ "linux/dvb/video.h", "VIDEO_SET_ID", _IOC_NONE, 0x6f23, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU", _IOC_WRITE, 0x6f32, 0x08 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SPU_PALETTE", _IOC_WRITE, 0x6f33, 0x08 }, + { "linux/dvb/video.h", "VIDEO_SET_STREAMTYPE", _IOC_NONE, 0x6f24, 0x00 }, +-{ "linux/dvb/video.h", "VIDEO_SET_SYSTEM", _IOC_NONE, 0x6f26, 0x00 }, + { "linux/dvb/video.h", "VIDEO_SLOWMOTION", _IOC_NONE, 0x6f20, 0x00 }, + { "linux/dvb/video.h", "VIDEO_STILLPICTURE", _IOC_WRITE, 0x6f1e, 0x08 }, + { "linux/dvb/video.h", "VIDEO_STOP", _IOC_NONE, 0x6f15, 0x00 }, +@@ -952,6 +940,14 @@ + { "linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", _IOC_WRITE, 0x2317, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 }, + { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 }, ++{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 }, + { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 }, + { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 }, + { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 }, +@@ -1004,6 +1000,10 @@ + { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 }, + { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 }, + { "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c }, ++{ "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 }, ++{ "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 }, ++{ "linux/fsi.h", "FSI_SCOM_WRITE", _IOC_READ|_IOC_WRITE, 0x7302, 0x20 }, + { "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 }, + { "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 }, + { "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 }, +@@ -1335,6 +1335,7 @@ + { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_MAP_MEMORY_TO_GPU", _IOC_READ|_IOC_WRITE, 0x4b18, 0x18 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, ++{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_CU_MASK", _IOC_WRITE, 0x4b1a, 0x10 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, + { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, +@@ -1512,9 +1513,12 @@ + { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 }, + { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 }, + { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 }, + { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 }, + { "linux/pcitest.h", "PCITEST_MSI", _IOC_WRITE, 0x5003, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_MSIX", _IOC_WRITE, 0x5007, 0x04 }, + { "linux/pcitest.h", "PCITEST_READ", _IOC_WRITE, 0x5005, 0x04 }, ++{ "linux/pcitest.h", "PCITEST_SET_IRQTYPE", _IOC_WRITE, 0x5008, 0x04 }, + { "linux/pcitest.h", "PCITEST_WRITE", _IOC_WRITE, 0x5004, 0x04 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", _IOC_NONE, 0x2401, 0x00 }, + { "linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", _IOC_NONE, 0x2400, 0x00 }, +@@ -2027,6 +2031,7 @@ + { "linux/usb/functionfs.h", "FUNCTIONFS_INTERFACE_REVMAP", _IOC_NONE, 0x6780, 0x00 }, + { "linux/usb/g_printer.h", "GADGET_GET_PRINTER_STATUS", _IOC_READ, 0x6721, 0x01 }, + { "linux/usb/g_printer.h", "GADGET_SET_PRINTER_STATUS", _IOC_READ|_IOC_WRITE, 0x6722, 0x01 }, ++{ "linux/usb/g_uvc.h", "UVCIOC_SEND_RESPONSE", _IOC_WRITE, 0x5501, 0x40 }, + { "linux/usb/gadgetfs.h", "GADGETFS_CLEAR_HALT", _IOC_NONE, 0x6703, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_FLUSH", _IOC_NONE, 0x6702, 0x00 }, + { "linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", _IOC_NONE, 0x6701, 0x00 }, +@@ -2038,12 +2043,17 @@ + { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 }, + { "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC488_IOCTL_TRIGGER", _IOC_NONE, 0x5b16, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_IN_HALT", _IOC_NONE, 0x5b07, 0x00 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR_OUT_HALT", _IOC_NONE, 0x5b06, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_CONFIG_TERMCHAR", _IOC_WRITE, 0x5b0c, 0x02 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_EOM_ENABLE", _IOC_WRITE, 0x5b0b, 0x01 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_GET_TIMEOUT", _IOC_READ, 0x5b09, 0x04 }, + { "linux/usb/tmc.h", "USBTMC_IOCTL_INDICATOR_PULSE", _IOC_NONE, 0x5b01, 0x00 }, ++{ "linux/usb/tmc.h", "USBTMC_IOCTL_SET_TIMEOUT", _IOC_WRITE, 0x5b0a, 0x04 }, + { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, + { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 }, +@@ -2136,6 +2146,7 @@ + { "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 }, + { "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 }, + { "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 }, ++{ "linux/vhost.h", "VHOST_GET_BACKEND_FEATURES", _IOC_READ, 0xaf26, 0x08 }, + { "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 }, + { "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 }, +@@ -2147,6 +2158,7 @@ + { "linux/vhost.h", "VHOST_SCSI_GET_EVENTS_MISSED", _IOC_WRITE, 0xaf44, 0x04 }, + { "linux/vhost.h", "VHOST_SCSI_SET_ENDPOINT", _IOC_WRITE, 0xaf40, 0xe8 }, + { "linux/vhost.h", "VHOST_SCSI_SET_EVENTS_MISSED", _IOC_WRITE, 0xaf43, 0x04 }, ++{ "linux/vhost.h", "VHOST_SET_BACKEND_FEATURES", _IOC_WRITE, 0xaf25, 0x08 }, + { "linux/vhost.h", "VHOST_SET_FEATURES", _IOC_WRITE, 0xaf00, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_BASE", _IOC_WRITE, 0xaf04, 0x08 }, + { "linux/vhost.h", "VHOST_SET_LOG_FD", _IOC_WRITE, 0xaf07, 0x04 }, +@@ -2216,7 +2228,6 @@ + { "linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", _IOC_READ, 0x5663, 0x84 }, + { "linux/videodev2.h", "VIDIOC_QUERY_EXT_CTRL", _IOC_READ|_IOC_WRITE, 0x5667, 0xe8 }, + { "linux/videodev2.h", "VIDIOC_REQBUFS", _IOC_READ|_IOC_WRITE, 0x5608, 0x14 }, +-{ "linux/videodev2.h", "VIDIOC_RESERVED", _IOC_NONE, 0x5601, 0x00 }, + { "linux/videodev2.h", "VIDIOC_STREAMOFF", _IOC_WRITE, 0x5613, 0x04 }, + { "linux/videodev2.h", "VIDIOC_STREAMON", _IOC_WRITE, 0x5612, 0x04 }, + { "linux/videodev2.h", "VIDIOC_SUBSCRIBE_EVENT", _IOC_WRITE, 0x565a, 0x20 }, +@@ -2743,6 +2754,10 @@ + { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 }, + { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS", _IOC_NONE, 0x4709, 0x14 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED", _IOC_NONE, 0x470a, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_RELEASE", _IOC_NONE, 0x470c, 0x08 }, ++{ "xen/gntdev.h", "IOCTL_GNTDEV_DMABUF_IMP_TO_REFS", _IOC_NONE, 0x470b, 0x14 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 }, + { "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 }, +diff --git a/linux/x86_64/ioctls_arch0.h b/linux/x86_64/ioctls_arch0.h +index 3399500..368dbc3 100644 +--- a/linux/x86_64/ioctls_arch0.h ++++ b/linux/x86_64/ioctls_arch0.h +@@ -44,6 +44,7 @@ + { "linux/kvm.h", "KVM_GET_MSRS", _IOC_READ|_IOC_WRITE, 0xae88, 0x08 }, + { "linux/kvm.h", "KVM_GET_MSR_FEATURE_INDEX_LIST", _IOC_READ|_IOC_WRITE, 0xae0a, 0x04 }, + { "linux/kvm.h", "KVM_GET_MSR_INDEX_LIST", _IOC_READ|_IOC_WRITE, 0xae02, 0x04 }, ++{ "linux/kvm.h", "KVM_GET_NESTED_STATE", _IOC_READ|_IOC_WRITE, 0xaebe, 0x80 }, + { "linux/kvm.h", "KVM_GET_NR_MMU_PAGES", _IOC_NONE, 0xae45, 0x00 }, + { "linux/kvm.h", "KVM_GET_ONE_REG", _IOC_WRITE, 0xaeab, 0x10 }, + { "linux/kvm.h", "KVM_GET_PIT", _IOC_READ|_IOC_WRITE, 0xae65, 0x48 }, +@@ -88,6 +89,7 @@ + { "linux/kvm.h", "KVM_SET_MEMORY_REGION", _IOC_WRITE, 0xae40, 0x18 }, + { "linux/kvm.h", "KVM_SET_MP_STATE", _IOC_WRITE, 0xae99, 0x04 }, + { "linux/kvm.h", "KVM_SET_MSRS", _IOC_WRITE, 0xae89, 0x08 }, ++{ "linux/kvm.h", "KVM_SET_NESTED_STATE", _IOC_WRITE, 0xaebf, 0x80 }, + { "linux/kvm.h", "KVM_SET_NR_MMU_PAGES", _IOC_NONE, 0xae44, 0x00 }, + { "linux/kvm.h", "KVM_SET_ONE_REG", _IOC_WRITE, 0xaeac, 0x10 }, + { "linux/kvm.h", "KVM_SET_PIT", _IOC_READ, 0xae66, 0x48 }, +-- +1.7.12.4 + diff --git a/Wire-up-rseq-syscall-on-architectures-that-use-gener.patch b/Wire-up-rseq-syscall-on-architectures-that-use-gener.patch new file mode 100644 index 0000000..24416f4 --- /dev/null +++ b/Wire-up-rseq-syscall-on-architectures-that-use-gener.patch @@ -0,0 +1,38 @@ +From 0b051a218d5e7e51677c26c691dcf619a7d894e9 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Mon, 11 Feb 2019 23:35:07 +0000 +Subject: [PATCH 229/293] Wire up rseq syscall on architectures that use + generic unistd.h + +* linux/32/syscallent.h [293]: Wire up rseq syscall introduced by linux +commit v4.19-rc1~109^2~47. +* linux/64/syscallent.h [293]: Likewise. +--- + linux/32/syscallent.h | 1 + + linux/64/syscallent.h | 1 + + 3 files changed, 4 insertions(+) + +diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h +index 901b889..145f07b 100644 +--- a/linux/32/syscallent.h ++++ b/linux/32/syscallent.h +@@ -290,6 +290,7 @@ + [290] = { 1, 0, SEN(pkey_free), "pkey_free" }, + [291] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, + [292] = { 6, 0, SEN(io_pgetevents), "io_pgetevents" }, ++[293] = { 4, 0, SEN(rseq), "rseq" }, + + #undef sys_ARCH_mmap + #undef ARCH_WANT_SYNC_FILE_RANGE2 +diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h +index d08b161..1c4b80d 100644 +--- a/linux/64/syscallent.h ++++ b/linux/64/syscallent.h +@@ -283,3 +283,4 @@ + [290] = { 1, 0, SEN(pkey_free), "pkey_free" }, + [291] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, + [292] = { 6, 0, SEN(io_pgetevents), "io_pgetevents" }, ++[293] = { 4, 0, SEN(rseq), "rseq" }, +-- +1.7.12.4 + diff --git a/adapt-for-backport-patch.patch b/adapt-for-backport-patch.patch new file mode 100644 index 0000000..f69cdc9 --- /dev/null +++ b/adapt-for-backport-patch.patch @@ -0,0 +1,3271 @@ +From e54ac64d2d3a4124a0836fbeec27674bc8da0f14 Mon Sep 17 00:00:00 2001 +From: zhangguangzhi +Date: Fri, 21 Jun 2019 18:26:20 -0400 +Subject: [PATCH] strace: adapt for backport patch + +Signed-off-by: zhangguangzhi +--- + Makefile.in | 68 +- + xlat/Makemodule.am | 12 +- + xlat/af_packet_versions.h | 46 ++ + xlat/ax25_protocols.h | 130 ++++ + xlat/bpf_task_fd_type.h | 70 ++ + xlat/evdev_ev.h | 7 +- + xlat/futexbitset.h | 30 + + xlat/ioprio_class.h | 28 + + xlat/ioprio_who.h | 21 + + xlat/kvm_cap.h | 1302 ++++++++++++++++++++++++++++++++++++ + xlat/nbd_ioctl_cmds.h | 110 +++ + xlat/nbd_ioctl_flags.h | 128 ++++ + xlat/pr_spec_cmds.h | 10 +- + xlat/ptrace_cmds.h | 7 +- + xlat/random_ioctl_cmds.h | 78 +++ + xlat/rtnl_ifla_brport_attrs.h | 8 + + xlat/rtnl_ifla_xdp_attached_mode.h | 62 ++ + xlat/rtnl_ifla_xdp_attrs.h | 24 + + xlat/rtnl_link_attrs.h | 16 + + xlat/rtnl_netconf_attrs.h | 8 + + xlat/smc_decl_codes.h | 151 +++++ + xlat/smc_diag_mode.h | 46 ++ + xlat/sock_ax25_options.h | 116 ++++ + xlat/sock_shutdown_flags.h | 38 ++ + xlat/sock_xdp_options.h | 78 +++ + xlat/socketlayers.h | 24 + + xlat/socktypes.h | 83 ++- + xlat/v4l2_control_id_bases.h | 23 +- + 28 files changed, 2683 insertions(+), 41 deletions(-) + create mode 100644 xlat/af_packet_versions.h + create mode 100644 xlat/ax25_protocols.h + create mode 100644 xlat/bpf_task_fd_type.h + create mode 100644 xlat/futexbitset.h + create mode 100644 xlat/kvm_cap.h + create mode 100644 xlat/nbd_ioctl_cmds.h + create mode 100644 xlat/nbd_ioctl_flags.h + create mode 100644 xlat/random_ioctl_cmds.h + create mode 100644 xlat/rtnl_ifla_xdp_attached_mode.h + create mode 100644 xlat/smc_decl_codes.h + create mode 100644 xlat/smc_diag_mode.h + create mode 100644 xlat/sock_ax25_options.h + create mode 100644 xlat/sock_shutdown_flags.h + create mode 100644 xlat/sock_xdp_options.h + +diff --git a/Makefile.in b/Makefile.in +index f716df9..e8ba613 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -343,7 +343,7 @@ am__strace_SOURCES_DIST = access.c affinity.c aio.c alpha.c \ + linux/x86_64/asm_stat.h listen.c lookup_dcookie.c loop.c \ + lseek.c macros.h mem.c membarrier.c memfd_create.c mknod.c \ + mmap_notify.c mmap_notify.h mmsghdr.c mount.c mpers_type.h \ +- mq.c msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h \ ++ mq.c msghdr.c msghdr.h mtd.c native_defs.h nbd_ioctl.c negated_errno.h \ + net.c netlink.c netlink.h netlink_crypto.c \ + netlink_kobject_uevent.c netlink_kobject_uevent.h \ + netlink_sock_diag.h netlink_inet_diag.c netlink_netfilter.c \ +@@ -359,7 +359,7 @@ am__strace_SOURCES_DIST = access.c affinity.c aio.c alpha.c \ + print_statfs.c print_struct_stat.c print_time.c \ + print_timespec.c print_timeval.c print_timex.c printmode.c \ + printrusage.c printsiginfo.c printsiginfo.h process.c \ +- process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \ ++ process_vm.c ptp.c ptrace.h quota.c random_ioctl.c readahead.c readlink.c \ + reboot.c regs.h renameat.c resource.c retval.c retval.h \ + riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \ + rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \ +@@ -432,6 +432,7 @@ am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \ + strace-mmap_notify.$(OBJEXT) strace-mmsghdr.$(OBJEXT) \ + strace-mount.$(OBJEXT) strace-mq.$(OBJEXT) \ + strace-msghdr.$(OBJEXT) strace-mtd.$(OBJEXT) \ ++ strace-nbd_ioctl.$(OBJEXT) \ + strace-net.$(OBJEXT) strace-netlink.$(OBJEXT) \ + strace-netlink_crypto.$(OBJEXT) \ + strace-netlink_kobject_uevent.$(OBJEXT) \ +@@ -462,6 +463,7 @@ am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \ + strace-printrusage.$(OBJEXT) strace-printsiginfo.$(OBJEXT) \ + strace-process.$(OBJEXT) strace-process_vm.$(OBJEXT) \ + strace-ptp.$(OBJEXT) strace-quota.$(OBJEXT) \ ++ strace-random_ioctl.$(OBJEXT) \ + strace-readahead.$(OBJEXT) strace-readlink.$(OBJEXT) \ + strace-reboot.$(OBJEXT) strace-renameat.$(OBJEXT) \ + strace-resource.$(OBJEXT) strace-retval.$(OBJEXT) \ +@@ -859,6 +861,7 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ + xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in \ + xlat/bpf_prog_types.in xlat/bpf_query_flags.in \ + xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in \ ++ xlat/bpf_task_fd_type.in \ + xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in \ + xlat/bt_protocols.in xlat/btrfs_balance_args.in \ + xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in \ +@@ -899,8 +902,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ + xlat/fan_mark_flags.in xlat/fcntlcmds.in xlat/fdflags.in \ + xlat/fib_rule_actions.in xlat/fib_rule_flags.in \ + xlat/fiemap_extent_flags.in xlat/fiemap_flags.in \ +- xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in \ +- xlat/futexwakecmps.in xlat/futexwakeops.in \ ++ xlat/flockcmds.in xlat/fsmagic.in xlat/futexbitset.in \ ++ xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in \ + xlat/getrandom_flags.in xlat/getsock_ip_options.in \ + xlat/getsock_ipv6_options.in xlat/getsock_options.in \ + xlat/hci_channels.in xlat/hw_breakpoint_len.in \ +@@ -937,6 +940,7 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ + xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in \ + xlat/mtd_otp_options.in xlat/mtd_type_options.in \ + xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in \ ++ xlat/nbd_ioctl_cmds.in \ + xlat/neighbor_cache_entry_flags.in \ + xlat/neighbor_cache_entry_states.in xlat/netfilter_versions.in \ + xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in \ +@@ -981,7 +985,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ + xlat/ptrace_cmds.in xlat/ptrace_events.in \ + xlat/ptrace_peeksiginfo_flags.in \ + xlat/ptrace_setoptions_flags.in xlat/quota_formats.in \ +- xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in \ ++ xlat/quotacmds.in xlat/quotatypes.in \ ++ xlat/random_ioctl_cmds.in xlat/rename_flags.in \ + xlat/resource_flags.in xlat/resources.in \ + xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in \ + xlat/routing_flags.in xlat/routing_protocols.in \ +@@ -1097,7 +1102,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ + xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \ + xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h \ + xlat/bpf_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h \ +- xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h \ ++ xlat/bpf_src.h xlat/bpf_task_fd_type.h \ ++ xlat/bsg_flags.h xlat/bsg_protocol.h \ + xlat/bsg_subprotocol.h xlat/bt_protocols.h \ + xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h \ + xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h \ +@@ -1134,8 +1140,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ + xlat/fan_mark_flags.h xlat/fcntlcmds.h xlat/fdflags.h \ + xlat/fib_rule_actions.h xlat/fib_rule_flags.h \ + xlat/fiemap_extent_flags.h xlat/fiemap_flags.h \ +- xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h \ +- xlat/futexwakecmps.h xlat/futexwakeops.h \ ++ xlat/flockcmds.h xlat/fsmagic.h xlat/futexbitset.h \ ++ xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h \ + xlat/getrandom_flags.h xlat/getsock_ip_options.h \ + xlat/getsock_ipv6_options.h xlat/getsock_options.h \ + xlat/hci_channels.h xlat/hw_breakpoint_len.h \ +@@ -1171,6 +1177,7 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ + xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h \ + xlat/mtd_otp_options.h xlat/mtd_type_options.h \ + xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h \ ++ xlat/nbd_ioctl_cmds.h \ + xlat/neighbor_cache_entry_flags.h \ + xlat/neighbor_cache_entry_states.h xlat/netfilter_versions.h \ + xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h \ +@@ -1211,7 +1218,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ + xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h \ + xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h \ + xlat/ptrace_setoptions_flags.h xlat/quota_formats.h \ +- xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h \ ++ xlat/quotacmds.h xlat/quotatypes.h \ ++ xlat\random_ioctl_cmds.h xlat/rename_flags.h \ + xlat/resource_flags.h xlat/resources.h \ + xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h \ + xlat/routing_flags.h xlat/routing_protocols.h \ +@@ -1360,7 +1368,7 @@ strace_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \ + listen.c lookup_dcookie.c loop.c lseek.c macros.h mem.c \ + membarrier.c memfd_create.c mknod.c mmap_notify.c \ + mmap_notify.h mmsghdr.c mount.c mpers_type.h mq.c msghdr.c \ +- msghdr.h mtd.c native_defs.h negated_errno.h net.c netlink.c \ ++ msghdr.h mtd.c native_defs.h nbd_ioctl.c negated_errno.h net.c netlink.c \ + netlink.h netlink_crypto.c netlink_kobject_uevent.c \ + netlink_kobject_uevent.h netlink_sock_diag.h \ + netlink_inet_diag.c netlink_netfilter.c netlink_netlink_diag.c \ +@@ -1376,7 +1384,7 @@ strace_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \ + print_statfs.c print_struct_stat.c print_time.c \ + print_timespec.c print_timeval.c print_timex.c printmode.c \ + printrusage.c printsiginfo.c printsiginfo.h process.c \ +- process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \ ++ process_vm.c ptp.c ptrace.h quota.c random_ioctl.c readahead.c readlink.c \ + reboot.c regs.h renameat.c resource.c retval.c retval.h \ + riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \ + rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \ +@@ -2374,6 +2382,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mq.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-msghdr.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mtd.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-nbd_ioctl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-net.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_crypto.Po@am__quote@ +@@ -2423,6 +2432,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-process_vm.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ptp.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-quota.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-random_ioctl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-readahead.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-readlink.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-reboot.Po@am__quote@ +@@ -5117,6 +5127,20 @@ strace-mtd.obj: mtd.c + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi` + ++strace-nbd_ioctl.o: nbd_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nbd_ioctl.o -MD -MP -MF $(DEPDIR)/strace-nbd_ioctl.Tpo -c -o strace-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nbd_ioctl.Tpo $(DEPDIR)/strace-nbd_ioctl.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nbd_ioctl.c' object='strace-nbd_ioctl.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c ++ ++strace-nbd_ioctl.obj: nbd_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nbd_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-nbd_ioctl.Tpo -c -o strace-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nbd_ioctl.Tpo $(DEPDIR)/strace-nbd_ioctl.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nbd_ioctl.c' object='strace-nbd_ioctl.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi` ++ + strace-net.o: net.c + @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-net.o -MD -MP -MF $(DEPDIR)/strace-net.Tpo -c -o strace-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c + @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-net.Tpo $(DEPDIR)/strace-net.Po +@@ -5803,6 +5827,20 @@ strace-quota.obj: quota.c + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi` + ++strace-random_ioctl.o: random_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-random_ioctl.o -MD -MP -MF $(DEPDIR)/strace-random_ioctl.Tpo -c -o strace-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-random_ioctl.Tpo $(DEPDIR)/strace-random_ioctl.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='random_ioctl.c' object='strace-random_ioctl.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c ++ ++strace-random_ioctl.obj: random_ioctl.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-random_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-random_ioctl.Tpo -c -o strace-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-random_ioctl.Tpo $(DEPDIR)/strace-random_ioctl.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='random_ioctl.c' object='strace-random_ioctl.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi` ++ + strace-readahead.o: readahead.c + @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-readahead.o -MD -MP -MF $(DEPDIR)/strace-readahead.Tpo -c -o strace-readahead.o `test -f 'readahead.c' || echo '$(srcdir)/'`readahead.c + @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-readahead.Tpo $(DEPDIR)/strace-readahead.Po +@@ -7457,6 +7495,8 @@ $(top_srcdir)/xlat/bpf_size.h: $(top_srcdir)/xlat/bpf_size.in $(top_srcdir)/xlat + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bpf_src.h: $(top_srcdir)/xlat/bpf_src.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/bpf_task_fd_type.h: $(top_srcdir)/xlat/bpf_task_fd_type.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bsg_flags.h: $(top_srcdir)/xlat/bsg_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bsg_protocol.h: $(top_srcdir)/xlat/bsg_protocol.in $(top_srcdir)/xlat/gen.sh +@@ -7627,6 +7667,8 @@ $(top_srcdir)/xlat/fiemap_flags.h: $(top_srcdir)/xlat/fiemap_flags.in $(top_srcd + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/futexbitset.h: $(top_srcdir)/xlat/futexbitset.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh +@@ -7797,6 +7839,8 @@ $(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/nbd_ioctl_cmds.h: $(top_srcdir)/xlat/nbd_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_cache_entry_states.in $(top_srcdir)/xlat/gen.sh +@@ -7969,6 +8013,8 @@ $(top_srcdir)/xlat/quotacmds.h: $(top_srcdir)/xlat/quotacmds.in $(top_srcdir)/xl + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/quotatypes.h: $(top_srcdir)/xlat/quotatypes.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/random_ioctl_cmds.h: $(top_srcdir)/xlat/random_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/rename_flags.h: $(top_srcdir)/xlat/rename_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/resource_flags.h: $(top_srcdir)/xlat/resource_flags.in $(top_srcdir)/xlat/gen.sh +diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am +index d53acb0..784a708 100644 +--- a/xlat/Makemodule.am ++++ b/xlat/Makemodule.am +@@ -1,5 +1,5 @@ +-XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/aio_cmds.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/bdaddr_types.in xlat/blkpg_ops.in xlat/bluetooth_l2_cid.in xlat/bluetooth_l2_psm.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_file_mode_flags.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_query_flags.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_cont_reading_from_srcdev_mode.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_logical_ino_args_flags.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/caif_protocols.in xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in xlat/ebpf_size.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsock_ip_options.in xlat/getsock_ipv6_options.in xlat/getsock_options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in xlat/inet6_if_flags.in xlat/inet_devconf_indices.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in xlat/isdn_protocols.in xlat/itimer_which.in xlat/kcm_protocols.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_cpuid_flags.in xlat/kvm_exit_reason.in xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netfilter_versions.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_sk_meminfo_indices.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nfc_protocols.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/numa_node.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_ioctl_cmds.in xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/phonet_protocols.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_spec_cmds.in xlat/pr_spec_get_store_bypass_flags.in xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_af_spec_inet6_attrs.in xlat/rtnl_ifla_af_spec_inet_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_info_data_bridge_attrs.in xlat/rtnl_ifla_info_data_tun_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/s390_guarded_storage_commands.in xlat/s390_runtime_instr_commands.in xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in xlat/setsock_options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_protocols.in xlat/smc_states.in xlat/snmp_icmp6_stats.in xlat/snmp_ip_stats.in xlat/sock_alg_options.in xlat/sock_bluetooth_options.in xlat/sock_caif_options.in xlat/sock_dccp_options.in xlat/sock_ip_options.in xlat/sock_ipv6_options.in xlat/sock_ipx_options.in xlat/sock_irda_options.in xlat/sock_iucv_options.in xlat/sock_kcm_options.in xlat/sock_llc_options.in xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in xlat/sock_options.in xlat/sock_packet_options.in xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in xlat/sock_raw_options.in xlat/sock_rds_options.in xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in xlat/sock_tcp_options.in xlat/sock_tipc_options.in xlat/sock_tls_options.in xlat/sock_type_flags.in xlat/sock_udp_options.in xlat/socketcalls.in xlat/socketlayers.in xlat/socktypes.in xlat/sparc_kern_features.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/tun_device_types.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_id_bases.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_pix_fmts.in xlat/v4l2_sdr_fmts.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in +-XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/aio_cmds.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_file_mode_flags.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_cont_reading_from_srcdev_mode.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_logical_ino_args_flags.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/caif_protocols.h xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsock_ip_options.h xlat/getsock_ipv6_options.h xlat/getsock_options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h xlat/inet6_if_flags.h xlat/inet_devconf_indices.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/kvm_cpuid_flags.h xlat/kvm_exit_reason.h xlat/kvm_mem_flags.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netfilter_versions.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_sk_meminfo_indices.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nfc_protocols.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/numa_node.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h xlat/perf_ioctl_flags.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/phonet_protocols.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_spec_cmds.h xlat/pr_spec_get_store_bypass_flags.h xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_af_spec_inet6_attrs.h xlat/rtnl_ifla_af_spec_inet_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_info_data_bridge_attrs.h xlat/rtnl_ifla_info_data_tun_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/s390_guarded_storage_commands.h xlat/s390_runtime_instr_commands.h xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsock_ip_options.h xlat/setsock_ipv6_options.h xlat/setsock_options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_protocols.h xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h xlat/sock_alg_options.h xlat/sock_bluetooth_options.h xlat/sock_caif_options.h xlat/sock_dccp_options.h xlat/sock_ip_options.h xlat/sock_ipv6_options.h xlat/sock_ipx_options.h xlat/sock_irda_options.h xlat/sock_iucv_options.h xlat/sock_kcm_options.h xlat/sock_llc_options.h xlat/sock_netlink_options.h xlat/sock_nfcllcp_options.h xlat/sock_options.h xlat/sock_packet_options.h xlat/sock_pnp_options.h xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h xlat/sock_rds_options.h xlat/sock_rxrpc_options.h xlat/sock_sctp_options.h xlat/sock_tcp_options.h xlat/sock_tipc_options.h xlat/sock_tls_options.h xlat/sock_type_flags.h xlat/sock_udp_options.h xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h xlat/sparc_kern_features.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/tun_device_types.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_id_bases.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_pix_fmts.h xlat/v4l2_sdr_fmts.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h ++XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/aio_cmds.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/bdaddr_types.in xlat/blkpg_ops.in xlat/bluetooth_l2_cid.in xlat/bluetooth_l2_psm.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_file_mode_flags.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_query_flags.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bpf_task_fd_type.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_cont_reading_from_srcdev_mode.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_logical_ino_args_flags.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/caif_protocols.in xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in xlat/ebpf_size.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexbitset.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsock_ip_options.in xlat/getsock_ipv6_options.in xlat/getsock_options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in xlat/inet6_if_flags.in xlat/inet_devconf_indices.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in xlat/isdn_protocols.in xlat/itimer_which.in xlat/kcm_protocols.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_cpuid_flags.in xlat/kvm_exit_reason.in xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/nbd_ioctl_cmds.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netfilter_versions.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_sk_meminfo_indices.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nfc_protocols.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/numa_node.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_ioctl_cmds.in xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/phonet_protocols.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_spec_cmds.in xlat/pr_spec_get_store_bypass_flags.in xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/random_ioctl_cmds.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_af_spec_inet6_attrs.in xlat/rtnl_ifla_af_spec_inet_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_info_data_bridge_attrs.in xlat/rtnl_ifla_info_data_tun_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/s390_guarded_storage_commands.in xlat/s390_runtime_instr_commands.in xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in xlat/setsock_options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_protocols.in xlat/smc_states.in xlat/snmp_icmp6_stats.in xlat/snmp_ip_stats.in xlat/sock_alg_options.in xlat/sock_bluetooth_options.in xlat/sock_caif_options.in xlat/sock_dccp_options.in xlat/sock_ip_options.in xlat/sock_ipv6_options.in xlat/sock_ipx_options.in xlat/sock_irda_options.in xlat/sock_iucv_options.in xlat/sock_kcm_options.in xlat/sock_llc_options.in xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in xlat/sock_options.in xlat/sock_packet_options.in xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in xlat/sock_raw_options.in xlat/sock_rds_options.in xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in xlat/sock_tcp_options.in xlat/sock_tipc_options.in xlat/sock_tls_options.in xlat/sock_type_flags.in xlat/sock_udp_options.in xlat/socketcalls.in xlat/socketlayers.in xlat/socktypes.in xlat/sparc_kern_features.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/tun_device_types.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_id_bases.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_pix_fmts.in xlat/v4l2_sdr_fmts.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in ++XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/aio_cmds.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_file_mode_flags.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bpf_task_fd_type.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_cont_reading_from_srcdev_mode.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_logical_ino_args_flags.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/caif_protocols.h xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexbitset.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsock_ip_options.h xlat/getsock_ipv6_options.h xlat/getsock_options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h xlat/inet6_if_flags.h xlat/inet_devconf_indices.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/kvm_cpuid_flags.h xlat/kvm_exit_reason.h xlat/kvm_mem_flags.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/nbd_ioctl_cmds.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netfilter_versions.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_sk_meminfo_indices.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nfc_protocols.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/numa_node.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h xlat/perf_ioctl_flags.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/phonet_protocols.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_spec_cmds.h xlat/pr_spec_get_store_bypass_flags.h xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/random_ioctl_cmds.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_af_spec_inet6_attrs.h xlat/rtnl_ifla_af_spec_inet_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_info_data_bridge_attrs.h xlat/rtnl_ifla_info_data_tun_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/s390_guarded_storage_commands.h xlat/s390_runtime_instr_commands.h xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsock_ip_options.h xlat/setsock_ipv6_options.h xlat/setsock_options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_protocols.h xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h xlat/sock_alg_options.h xlat/sock_bluetooth_options.h xlat/sock_caif_options.h xlat/sock_dccp_options.h xlat/sock_ip_options.h xlat/sock_ipv6_options.h xlat/sock_ipx_options.h xlat/sock_irda_options.h xlat/sock_iucv_options.h xlat/sock_kcm_options.h xlat/sock_llc_options.h xlat/sock_netlink_options.h xlat/sock_nfcllcp_options.h xlat/sock_options.h xlat/sock_packet_options.h xlat/sock_pnp_options.h xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h xlat/sock_rds_options.h xlat/sock_rxrpc_options.h xlat/sock_sctp_options.h xlat/sock_tcp_options.h xlat/sock_tipc_options.h xlat/sock_tls_options.h xlat/sock_type_flags.h xlat/sock_udp_options.h xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h xlat/sparc_kern_features.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/tun_device_types.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_id_bases.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_pix_fmts.h xlat/v4l2_sdr_fmts.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h + $(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh +@@ -80,6 +80,8 @@ $(top_srcdir)/xlat/bpf_size.h: $(top_srcdir)/xlat/bpf_size.in $(top_srcdir)/xlat + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bpf_src.h: $(top_srcdir)/xlat/bpf_src.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/bpf_task_fd_type.h: $(top_srcdir)/xlat/bpf_task_fd_type.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bsg_flags.h: $(top_srcdir)/xlat/bsg_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/bsg_protocol.h: $(top_srcdir)/xlat/bsg_protocol.in $(top_srcdir)/xlat/gen.sh +@@ -252,6 +254,8 @@ $(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xl + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/futexbitset.h: $(top_srcdir)/xlat/futexbitset.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_srcdir)/xlat/gen.sh +@@ -420,6 +424,8 @@ $(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/nbd_ioctl_cmds.h: $(top_srcdir)/xlat/nbd_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_cache_entry_states.in $(top_srcdir)/xlat/gen.sh +@@ -592,6 +598,8 @@ $(top_srcdir)/xlat/quotacmds.h: $(top_srcdir)/xlat/quotacmds.in $(top_srcdir)/xl + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/quotatypes.h: $(top_srcdir)/xlat/quotatypes.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ ++$(top_srcdir)/xlat/random_ioctl_cmds.h: $(top_srcdir)/xlat/random_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh ++ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/rename_flags.h: $(top_srcdir)/xlat/rename_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ + $(top_srcdir)/xlat/resource_flags.h: $(top_srcdir)/xlat/resource_flags.in $(top_srcdir)/xlat/gen.sh +diff --git a/xlat/af_packet_versions.h b/xlat/af_packet_versions.h +new file mode 100644 +index 0000000..8d82eba +--- /dev/null ++++ b/xlat/af_packet_versions.h +@@ -0,0 +1,46 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/af_packet_versions.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(TPACKET_V1) || (defined(HAVE_DECL_TPACKET_V1) && HAVE_DECL_TPACKET_V1) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((TPACKET_V1) == (0), "TPACKET_V1 != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define TPACKET_V1 0 ++#endif ++#if defined(TPACKET_V2) || (defined(HAVE_DECL_TPACKET_V2) && HAVE_DECL_TPACKET_V2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((TPACKET_V2) == (1), "TPACKET_V2 != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define TPACKET_V2 1 ++#endif ++#if defined(TPACKET_V3) || (defined(HAVE_DECL_TPACKET_V3) && HAVE_DECL_TPACKET_V3) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((TPACKET_V3) == (2), "TPACKET_V3 != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define TPACKET_V3 2 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat af_packet_versions in mpers mode ++ ++# else ++ ++static ++const struct xlat af_packet_versions[] = { ++ XLAT(TPACKET_V1), ++ XLAT(TPACKET_V2), ++ XLAT(TPACKET_V3), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/ax25_protocols.h b/xlat/ax25_protocols.h +new file mode 100644 +index 0000000..8f72ebb +--- /dev/null ++++ b/xlat/ax25_protocols.h +@@ -0,0 +1,130 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/ax25_protocols.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(AX25_P_ROSE) || (defined(HAVE_DECL_AX25_P_ROSE) && HAVE_DECL_AX25_P_ROSE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_ROSE) == (0x01), "AX25_P_ROSE != 0x01"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_ROSE 0x01 ++#endif ++#if defined(AX25_P_VJCOMP) || (defined(HAVE_DECL_AX25_P_VJCOMP) && HAVE_DECL_AX25_P_VJCOMP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_VJCOMP) == (0x06), "AX25_P_VJCOMP != 0x06"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_VJCOMP 0x06 ++#endif ++#if defined(AX25_P_VJUNCOMP) || (defined(HAVE_DECL_AX25_P_VJUNCOMP) && HAVE_DECL_AX25_P_VJUNCOMP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_VJUNCOMP) == (0x07), "AX25_P_VJUNCOMP != 0x07"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_VJUNCOMP 0x07 ++#endif ++#if defined(AX25_P_SEGMENT) || (defined(HAVE_DECL_AX25_P_SEGMENT) && HAVE_DECL_AX25_P_SEGMENT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_SEGMENT) == (0x08), "AX25_P_SEGMENT != 0x08"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_SEGMENT 0x08 ++#endif ++#if defined(AX25_P_TEXNET) || (defined(HAVE_DECL_AX25_P_TEXNET) && HAVE_DECL_AX25_P_TEXNET) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_TEXNET) == (0xc3), "AX25_P_TEXNET != 0xc3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_TEXNET 0xc3 ++#endif ++#if defined(AX25_P_LQ) || (defined(HAVE_DECL_AX25_P_LQ) && HAVE_DECL_AX25_P_LQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_LQ) == (0xc4), "AX25_P_LQ != 0xc4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_LQ 0xc4 ++#endif ++#if defined(AX25_P_ATALK) || (defined(HAVE_DECL_AX25_P_ATALK) && HAVE_DECL_AX25_P_ATALK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_ATALK) == (0xca), "AX25_P_ATALK != 0xca"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_ATALK 0xca ++#endif ++#if defined(AX25_P_ATALK_ARP) || (defined(HAVE_DECL_AX25_P_ATALK_ARP) && HAVE_DECL_AX25_P_ATALK_ARP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_ATALK_ARP) == (0xcb), "AX25_P_ATALK_ARP != 0xcb"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_ATALK_ARP 0xcb ++#endif ++#if defined(AX25_P_IP) || (defined(HAVE_DECL_AX25_P_IP) && HAVE_DECL_AX25_P_IP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_IP) == (0xcc), "AX25_P_IP != 0xcc"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_IP 0xcc ++#endif ++#if defined(AX25_P_ARP) || (defined(HAVE_DECL_AX25_P_ARP) && HAVE_DECL_AX25_P_ARP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_ARP) == (0xcd), "AX25_P_ARP != 0xcd"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_ARP 0xcd ++#endif ++#if defined(AX25_P_FLEXNET) || (defined(HAVE_DECL_AX25_P_FLEXNET) && HAVE_DECL_AX25_P_FLEXNET) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_FLEXNET) == (0xce), "AX25_P_FLEXNET != 0xce"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_FLEXNET 0xce ++#endif ++#if defined(AX25_P_NETROM) || (defined(HAVE_DECL_AX25_P_NETROM) && HAVE_DECL_AX25_P_NETROM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_NETROM) == (0xcf), "AX25_P_NETROM != 0xcf"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_NETROM 0xcf ++#endif ++#if defined(AX25_P_TEXT) || (defined(HAVE_DECL_AX25_P_TEXT) && HAVE_DECL_AX25_P_TEXT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_P_TEXT) == (0xf0), "AX25_P_TEXT != 0xf0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_P_TEXT 0xf0 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat ax25_protocols in mpers mode ++ ++# else ++ ++static ++const struct xlat ax25_protocols[] = { ++ ++ ++ XLAT(AX25_P_ROSE), ++ XLAT(AX25_P_VJCOMP), ++ ++ XLAT(AX25_P_VJUNCOMP), ++ ++ XLAT(AX25_P_SEGMENT), ++ XLAT(AX25_P_TEXNET), ++ XLAT(AX25_P_LQ), ++ XLAT(AX25_P_ATALK), ++ XLAT(AX25_P_ATALK_ARP), ++ XLAT(AX25_P_IP), ++ XLAT(AX25_P_ARP), ++ XLAT(AX25_P_FLEXNET), ++ XLAT(AX25_P_NETROM), ++ XLAT(AX25_P_TEXT), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/bpf_task_fd_type.h b/xlat/bpf_task_fd_type.h +new file mode 100644 +index 0000000..c4d1993 +--- /dev/null ++++ b/xlat/bpf_task_fd_type.h +@@ -0,0 +1,70 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/bpf_task_fd_type.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(BPF_FD_TYPE_RAW_TRACEPOINT) || (defined(HAVE_DECL_BPF_FD_TYPE_RAW_TRACEPOINT) && HAVE_DECL_BPF_FD_TYPE_RAW_TRACEPOINT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_RAW_TRACEPOINT) == (0), "BPF_FD_TYPE_RAW_TRACEPOINT != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_RAW_TRACEPOINT 0 ++#endif ++#if defined(BPF_FD_TYPE_TRACEPOINT) || (defined(HAVE_DECL_BPF_FD_TYPE_TRACEPOINT) && HAVE_DECL_BPF_FD_TYPE_TRACEPOINT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_TRACEPOINT) == (1), "BPF_FD_TYPE_TRACEPOINT != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_TRACEPOINT 1 ++#endif ++#if defined(BPF_FD_TYPE_KPROBE) || (defined(HAVE_DECL_BPF_FD_TYPE_KPROBE) && HAVE_DECL_BPF_FD_TYPE_KPROBE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_KPROBE) == (2), "BPF_FD_TYPE_KPROBE != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_KPROBE 2 ++#endif ++#if defined(BPF_FD_TYPE_KRETPROBE) || (defined(HAVE_DECL_BPF_FD_TYPE_KRETPROBE) && HAVE_DECL_BPF_FD_TYPE_KRETPROBE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_KRETPROBE) == (3), "BPF_FD_TYPE_KRETPROBE != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_KRETPROBE 3 ++#endif ++#if defined(BPF_FD_TYPE_UPROBE) || (defined(HAVE_DECL_BPF_FD_TYPE_UPROBE) && HAVE_DECL_BPF_FD_TYPE_UPROBE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_UPROBE) == (4), "BPF_FD_TYPE_UPROBE != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_UPROBE 4 ++#endif ++#if defined(BPF_FD_TYPE_URETPROBE) || (defined(HAVE_DECL_BPF_FD_TYPE_URETPROBE) && HAVE_DECL_BPF_FD_TYPE_URETPROBE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((BPF_FD_TYPE_URETPROBE) == (5), "BPF_FD_TYPE_URETPROBE != 5"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define BPF_FD_TYPE_URETPROBE 5 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat bpf_task_fd_type in mpers mode ++ ++# else ++ ++static ++const struct xlat bpf_task_fd_type[] = { ++ [BPF_FD_TYPE_RAW_TRACEPOINT] = XLAT(BPF_FD_TYPE_RAW_TRACEPOINT), ++ [BPF_FD_TYPE_TRACEPOINT] = XLAT(BPF_FD_TYPE_TRACEPOINT), ++ [BPF_FD_TYPE_KPROBE] = XLAT(BPF_FD_TYPE_KPROBE), ++ [BPF_FD_TYPE_KRETPROBE] = XLAT(BPF_FD_TYPE_KRETPROBE), ++ [BPF_FD_TYPE_UPROBE] = XLAT(BPF_FD_TYPE_UPROBE), ++ [BPF_FD_TYPE_URETPROBE] = XLAT(BPF_FD_TYPE_URETPROBE), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/evdev_ev.h b/xlat/evdev_ev.h +index 30adf93..a112805 100644 +--- a/xlat/evdev_ev.h ++++ b/xlat/evdev_ev.h +@@ -90,13 +90,8 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + + #ifndef XLAT_MACROS_ONLY + +-# ifdef IN_MPERS ++# ifndef IN_MPERS + +-# error static const struct xlat evdev_ev in mpers mode +- +-# else +- +-static + const struct xlat evdev_ev[] = { + XLAT(EV_SYN), + XLAT(EV_KEY), +diff --git a/xlat/futexbitset.h b/xlat/futexbitset.h +new file mode 100644 +index 0000000..566c8cb +--- /dev/null ++++ b/xlat/futexbitset.h +@@ -0,0 +1,30 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/futexbitset.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(FUTEX_BITSET_MATCH_ANY) || (defined(HAVE_DECL_FUTEX_BITSET_MATCH_ANY) && HAVE_DECL_FUTEX_BITSET_MATCH_ANY) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((FUTEX_BITSET_MATCH_ANY) == (0xffffffff), "FUTEX_BITSET_MATCH_ANY != 0xffffffff"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define FUTEX_BITSET_MATCH_ANY 0xffffffff ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat futexbitset in mpers mode ++ ++# else ++ ++static ++const struct xlat futexbitset[] = { ++ XLAT(FUTEX_BITSET_MATCH_ANY), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/ioprio_class.h b/xlat/ioprio_class.h +index c7bfa4b..b396784 100644 +--- a/xlat/ioprio_class.h ++++ b/xlat/ioprio_class.h +@@ -3,6 +3,34 @@ + #include "gcc_compat.h" + #include "static_assert.h" + ++#if defined(IOPRIO_CLASS_NONE) || (defined(HAVE_DECL_IOPRIO_CLASS_NONE) && HAVE_DECL_IOPRIO_CLASS_NONE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_CLASS_NONE) == (0), "IOPRIO_CLASS_NONE != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_CLASS_NONE 0 ++#endif ++#if defined(IOPRIO_CLASS_RT) || (defined(HAVE_DECL_IOPRIO_CLASS_RT) && HAVE_DECL_IOPRIO_CLASS_RT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_CLASS_RT) == (1), "IOPRIO_CLASS_RT != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_CLASS_RT 1 ++#endif ++#if defined(IOPRIO_CLASS_BE) || (defined(HAVE_DECL_IOPRIO_CLASS_BE) && HAVE_DECL_IOPRIO_CLASS_BE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_CLASS_BE) == (2), "IOPRIO_CLASS_BE != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_CLASS_BE 2 ++#endif ++#if defined(IOPRIO_CLASS_IDLE) || (defined(HAVE_DECL_IOPRIO_CLASS_IDLE) && HAVE_DECL_IOPRIO_CLASS_IDLE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_CLASS_IDLE) == (3), "IOPRIO_CLASS_IDLE != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_CLASS_IDLE 3 ++#endif + + #ifndef XLAT_MACROS_ONLY + +diff --git a/xlat/ioprio_who.h b/xlat/ioprio_who.h +index e296fde..9bb2703 100644 +--- a/xlat/ioprio_who.h ++++ b/xlat/ioprio_who.h +@@ -3,6 +3,27 @@ + #include "gcc_compat.h" + #include "static_assert.h" + ++#if defined(IOPRIO_WHO_PROCESS) || (defined(HAVE_DECL_IOPRIO_WHO_PROCESS) && HAVE_DECL_IOPRIO_WHO_PROCESS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_WHO_PROCESS) == (1), "IOPRIO_WHO_PROCESS != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_WHO_PROCESS 1 ++#endif ++#if defined(IOPRIO_WHO_PGRP) || (defined(HAVE_DECL_IOPRIO_WHO_PGRP) && HAVE_DECL_IOPRIO_WHO_PGRP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_WHO_PGRP) == (2), "IOPRIO_WHO_PGRP != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_WHO_PGRP 2 ++#endif ++#if defined(IOPRIO_WHO_USER) || (defined(HAVE_DECL_IOPRIO_WHO_USER) && HAVE_DECL_IOPRIO_WHO_USER) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IOPRIO_WHO_USER) == (3), "IOPRIO_WHO_USER != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IOPRIO_WHO_USER 3 ++#endif + + #ifndef XLAT_MACROS_ONLY + +diff --git a/xlat/kvm_cap.h b/xlat/kvm_cap.h +new file mode 100644 +index 0000000..316b28a +--- /dev/null ++++ b/xlat/kvm_cap.h +@@ -0,0 +1,1302 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/kvm_cap.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(KVM_CAP_IRQCHIP) || (defined(HAVE_DECL_KVM_CAP_IRQCHIP) && HAVE_DECL_KVM_CAP_IRQCHIP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQCHIP) == (0), "KVM_CAP_IRQCHIP != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQCHIP 0 ++#endif ++#if defined(KVM_CAP_HLT) || (defined(HAVE_DECL_KVM_CAP_HLT) && HAVE_DECL_KVM_CAP_HLT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HLT) == (1), "KVM_CAP_HLT != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HLT 1 ++#endif ++#if defined(KVM_CAP_MMU_SHADOW_CACHE_CONTROL) || (defined(HAVE_DECL_KVM_CAP_MMU_SHADOW_CACHE_CONTROL) && HAVE_DECL_KVM_CAP_MMU_SHADOW_CACHE_CONTROL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MMU_SHADOW_CACHE_CONTROL) == (2), "KVM_CAP_MMU_SHADOW_CACHE_CONTROL != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2 ++#endif ++#if defined(KVM_CAP_USER_MEMORY) || (defined(HAVE_DECL_KVM_CAP_USER_MEMORY) && HAVE_DECL_KVM_CAP_USER_MEMORY) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_USER_MEMORY) == (3), "KVM_CAP_USER_MEMORY != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_USER_MEMORY 3 ++#endif ++#if defined(KVM_CAP_SET_TSS_ADDR) || (defined(HAVE_DECL_KVM_CAP_SET_TSS_ADDR) && HAVE_DECL_KVM_CAP_SET_TSS_ADDR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SET_TSS_ADDR) == (4), "KVM_CAP_SET_TSS_ADDR != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SET_TSS_ADDR 4 ++#endif ++#if defined(KVM_CAP_VAPIC) || (defined(HAVE_DECL_KVM_CAP_VAPIC) && HAVE_DECL_KVM_CAP_VAPIC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_VAPIC) == (6), "KVM_CAP_VAPIC != 6"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_VAPIC 6 ++#endif ++#if defined(KVM_CAP_EXT_CPUID) || (defined(HAVE_DECL_KVM_CAP_EXT_CPUID) && HAVE_DECL_KVM_CAP_EXT_CPUID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_EXT_CPUID) == (7), "KVM_CAP_EXT_CPUID != 7"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_EXT_CPUID 7 ++#endif ++#if defined(KVM_CAP_CLOCKSOURCE) || (defined(HAVE_DECL_KVM_CAP_CLOCKSOURCE) && HAVE_DECL_KVM_CAP_CLOCKSOURCE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_CLOCKSOURCE) == (8), "KVM_CAP_CLOCKSOURCE != 8"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_CLOCKSOURCE 8 ++#endif ++#if defined(KVM_CAP_NR_VCPUS) || (defined(HAVE_DECL_KVM_CAP_NR_VCPUS) && HAVE_DECL_KVM_CAP_NR_VCPUS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_NR_VCPUS) == (9), "KVM_CAP_NR_VCPUS != 9"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_NR_VCPUS 9 ++#endif ++#if defined(KVM_CAP_NR_MEMSLOTS) || (defined(HAVE_DECL_KVM_CAP_NR_MEMSLOTS) && HAVE_DECL_KVM_CAP_NR_MEMSLOTS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_NR_MEMSLOTS) == (10), "KVM_CAP_NR_MEMSLOTS != 10"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_NR_MEMSLOTS 10 ++#endif ++#if defined(KVM_CAP_PIT) || (defined(HAVE_DECL_KVM_CAP_PIT) && HAVE_DECL_KVM_CAP_PIT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PIT) == (11), "KVM_CAP_PIT != 11"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PIT 11 ++#endif ++#if defined(KVM_CAP_NOP_IO_DELAY) || (defined(HAVE_DECL_KVM_CAP_NOP_IO_DELAY) && HAVE_DECL_KVM_CAP_NOP_IO_DELAY) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_NOP_IO_DELAY) == (12), "KVM_CAP_NOP_IO_DELAY != 12"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_NOP_IO_DELAY 12 ++#endif ++#if defined(KVM_CAP_PV_MMU) || (defined(HAVE_DECL_KVM_CAP_PV_MMU) && HAVE_DECL_KVM_CAP_PV_MMU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PV_MMU) == (13), "KVM_CAP_PV_MMU != 13"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PV_MMU 13 ++#endif ++#if defined(KVM_CAP_MP_STATE) || (defined(HAVE_DECL_KVM_CAP_MP_STATE) && HAVE_DECL_KVM_CAP_MP_STATE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MP_STATE) == (14), "KVM_CAP_MP_STATE != 14"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MP_STATE 14 ++#endif ++#if defined(KVM_CAP_COALESCED_MMIO) || (defined(HAVE_DECL_KVM_CAP_COALESCED_MMIO) && HAVE_DECL_KVM_CAP_COALESCED_MMIO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_COALESCED_MMIO) == (15), "KVM_CAP_COALESCED_MMIO != 15"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_COALESCED_MMIO 15 ++#endif ++#if defined(KVM_CAP_SYNC_MMU) || (defined(HAVE_DECL_KVM_CAP_SYNC_MMU) && HAVE_DECL_KVM_CAP_SYNC_MMU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SYNC_MMU) == (16), "KVM_CAP_SYNC_MMU != 16"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SYNC_MMU 16 ++#endif ++#if defined(KVM_CAP_IOMMU) || (defined(HAVE_DECL_KVM_CAP_IOMMU) && HAVE_DECL_KVM_CAP_IOMMU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IOMMU) == (18), "KVM_CAP_IOMMU != 18"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IOMMU 18 ++#endif ++#if defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) || (defined(HAVE_DECL_KVM_CAP_DESTROY_MEMORY_REGION_WORKS) && HAVE_DECL_KVM_CAP_DESTROY_MEMORY_REGION_WORKS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_DESTROY_MEMORY_REGION_WORKS) == (21), "KVM_CAP_DESTROY_MEMORY_REGION_WORKS != 21"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 ++#endif ++#if defined(KVM_CAP_USER_NMI) || (defined(HAVE_DECL_KVM_CAP_USER_NMI) && HAVE_DECL_KVM_CAP_USER_NMI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_USER_NMI) == (22), "KVM_CAP_USER_NMI != 22"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_USER_NMI 22 ++#endif ++#if defined(KVM_CAP_SET_GUEST_DEBUG) || (defined(HAVE_DECL_KVM_CAP_SET_GUEST_DEBUG) && HAVE_DECL_KVM_CAP_SET_GUEST_DEBUG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SET_GUEST_DEBUG) == (23), "KVM_CAP_SET_GUEST_DEBUG != 23"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SET_GUEST_DEBUG 23 ++#endif ++#if defined(KVM_CAP_REINJECT_CONTROL) || (defined(HAVE_DECL_KVM_CAP_REINJECT_CONTROL) && HAVE_DECL_KVM_CAP_REINJECT_CONTROL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_REINJECT_CONTROL) == (24), "KVM_CAP_REINJECT_CONTROL != 24"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_REINJECT_CONTROL 24 ++#endif ++#if defined(KVM_CAP_IRQ_ROUTING) || (defined(HAVE_DECL_KVM_CAP_IRQ_ROUTING) && HAVE_DECL_KVM_CAP_IRQ_ROUTING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQ_ROUTING) == (25), "KVM_CAP_IRQ_ROUTING != 25"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQ_ROUTING 25 ++#endif ++#if defined(KVM_CAP_IRQ_INJECT_STATUS) || (defined(HAVE_DECL_KVM_CAP_IRQ_INJECT_STATUS) && HAVE_DECL_KVM_CAP_IRQ_INJECT_STATUS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQ_INJECT_STATUS) == (26), "KVM_CAP_IRQ_INJECT_STATUS != 26"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQ_INJECT_STATUS 26 ++#endif ++#if defined(KVM_CAP_ASSIGN_DEV_IRQ) || (defined(HAVE_DECL_KVM_CAP_ASSIGN_DEV_IRQ) && HAVE_DECL_KVM_CAP_ASSIGN_DEV_IRQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ASSIGN_DEV_IRQ) == (29), "KVM_CAP_ASSIGN_DEV_IRQ != 29"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ASSIGN_DEV_IRQ 29 ++#endif ++#if defined(KVM_CAP_JOIN_MEMORY_REGIONS_WORKS) || (defined(HAVE_DECL_KVM_CAP_JOIN_MEMORY_REGIONS_WORKS) && HAVE_DECL_KVM_CAP_JOIN_MEMORY_REGIONS_WORKS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_JOIN_MEMORY_REGIONS_WORKS) == (30), "KVM_CAP_JOIN_MEMORY_REGIONS_WORKS != 30"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30 ++#endif ++#if defined(KVM_CAP_MCE) || (defined(HAVE_DECL_KVM_CAP_MCE) && HAVE_DECL_KVM_CAP_MCE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MCE) == (31), "KVM_CAP_MCE != 31"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MCE 31 ++#endif ++#if defined(KVM_CAP_IRQFD) || (defined(HAVE_DECL_KVM_CAP_IRQFD) && HAVE_DECL_KVM_CAP_IRQFD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQFD) == (32), "KVM_CAP_IRQFD != 32"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQFD 32 ++#endif ++#if defined(KVM_CAP_PIT2) || (defined(HAVE_DECL_KVM_CAP_PIT2) && HAVE_DECL_KVM_CAP_PIT2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PIT2) == (33), "KVM_CAP_PIT2 != 33"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PIT2 33 ++#endif ++#if defined(KVM_CAP_SET_BOOT_CPU_ID) || (defined(HAVE_DECL_KVM_CAP_SET_BOOT_CPU_ID) && HAVE_DECL_KVM_CAP_SET_BOOT_CPU_ID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SET_BOOT_CPU_ID) == (34), "KVM_CAP_SET_BOOT_CPU_ID != 34"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SET_BOOT_CPU_ID 34 ++#endif ++#if defined(KVM_CAP_PIT_STATE2) || (defined(HAVE_DECL_KVM_CAP_PIT_STATE2) && HAVE_DECL_KVM_CAP_PIT_STATE2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PIT_STATE2) == (35), "KVM_CAP_PIT_STATE2 != 35"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PIT_STATE2 35 ++#endif ++#if defined(KVM_CAP_IOEVENTFD) || (defined(HAVE_DECL_KVM_CAP_IOEVENTFD) && HAVE_DECL_KVM_CAP_IOEVENTFD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IOEVENTFD) == (36), "KVM_CAP_IOEVENTFD != 36"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IOEVENTFD 36 ++#endif ++#if defined(KVM_CAP_SET_IDENTITY_MAP_ADDR) || (defined(HAVE_DECL_KVM_CAP_SET_IDENTITY_MAP_ADDR) && HAVE_DECL_KVM_CAP_SET_IDENTITY_MAP_ADDR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SET_IDENTITY_MAP_ADDR) == (37), "KVM_CAP_SET_IDENTITY_MAP_ADDR != 37"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SET_IDENTITY_MAP_ADDR 37 ++#endif ++#if defined(KVM_CAP_XEN_HVM) || (defined(HAVE_DECL_KVM_CAP_XEN_HVM) && HAVE_DECL_KVM_CAP_XEN_HVM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_XEN_HVM) == (38), "KVM_CAP_XEN_HVM != 38"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_XEN_HVM 38 ++#endif ++#if defined(KVM_CAP_ADJUST_CLOCK) || (defined(HAVE_DECL_KVM_CAP_ADJUST_CLOCK) && HAVE_DECL_KVM_CAP_ADJUST_CLOCK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ADJUST_CLOCK) == (39), "KVM_CAP_ADJUST_CLOCK != 39"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ADJUST_CLOCK 39 ++#endif ++#if defined(KVM_CAP_INTERNAL_ERROR_DATA) || (defined(HAVE_DECL_KVM_CAP_INTERNAL_ERROR_DATA) && HAVE_DECL_KVM_CAP_INTERNAL_ERROR_DATA) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_INTERNAL_ERROR_DATA) == (40), "KVM_CAP_INTERNAL_ERROR_DATA != 40"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_INTERNAL_ERROR_DATA 40 ++#endif ++#if defined(KVM_CAP_VCPU_EVENTS) || (defined(HAVE_DECL_KVM_CAP_VCPU_EVENTS) && HAVE_DECL_KVM_CAP_VCPU_EVENTS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_VCPU_EVENTS) == (41), "KVM_CAP_VCPU_EVENTS != 41"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_VCPU_EVENTS 41 ++#endif ++#if defined(KVM_CAP_S390_PSW) || (defined(HAVE_DECL_KVM_CAP_S390_PSW) && HAVE_DECL_KVM_CAP_S390_PSW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_PSW) == (42), "KVM_CAP_S390_PSW != 42"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_PSW 42 ++#endif ++#if defined(KVM_CAP_PPC_SEGSTATE) || (defined(HAVE_DECL_KVM_CAP_PPC_SEGSTATE) && HAVE_DECL_KVM_CAP_PPC_SEGSTATE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_SEGSTATE) == (43), "KVM_CAP_PPC_SEGSTATE != 43"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_SEGSTATE 43 ++#endif ++#if defined(KVM_CAP_HYPERV) || (defined(HAVE_DECL_KVM_CAP_HYPERV) && HAVE_DECL_KVM_CAP_HYPERV) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV) == (44), "KVM_CAP_HYPERV != 44"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV 44 ++#endif ++#if defined(KVM_CAP_HYPERV_VAPIC) || (defined(HAVE_DECL_KVM_CAP_HYPERV_VAPIC) && HAVE_DECL_KVM_CAP_HYPERV_VAPIC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_VAPIC) == (45), "KVM_CAP_HYPERV_VAPIC != 45"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_VAPIC 45 ++#endif ++#if defined(KVM_CAP_HYPERV_SPIN) || (defined(HAVE_DECL_KVM_CAP_HYPERV_SPIN) && HAVE_DECL_KVM_CAP_HYPERV_SPIN) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_SPIN) == (46), "KVM_CAP_HYPERV_SPIN != 46"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_SPIN 46 ++#endif ++#if defined(KVM_CAP_PCI_SEGMENT) || (defined(HAVE_DECL_KVM_CAP_PCI_SEGMENT) && HAVE_DECL_KVM_CAP_PCI_SEGMENT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PCI_SEGMENT) == (47), "KVM_CAP_PCI_SEGMENT != 47"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PCI_SEGMENT 47 ++#endif ++#if defined(KVM_CAP_PPC_PAIRED_SINGLES) || (defined(HAVE_DECL_KVM_CAP_PPC_PAIRED_SINGLES) && HAVE_DECL_KVM_CAP_PPC_PAIRED_SINGLES) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_PAIRED_SINGLES) == (48), "KVM_CAP_PPC_PAIRED_SINGLES != 48"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_PAIRED_SINGLES 48 ++#endif ++#if defined(KVM_CAP_INTR_SHADOW) || (defined(HAVE_DECL_KVM_CAP_INTR_SHADOW) && HAVE_DECL_KVM_CAP_INTR_SHADOW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_INTR_SHADOW) == (49), "KVM_CAP_INTR_SHADOW != 49"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_INTR_SHADOW 49 ++#endif ++#if defined(KVM_CAP_DEBUGREGS) || (defined(HAVE_DECL_KVM_CAP_DEBUGREGS) && HAVE_DECL_KVM_CAP_DEBUGREGS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_DEBUGREGS) == (50), "KVM_CAP_DEBUGREGS != 50"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_DEBUGREGS 50 ++#endif ++#if defined(KVM_CAP_X86_ROBUST_SINGLESTEP) || (defined(HAVE_DECL_KVM_CAP_X86_ROBUST_SINGLESTEP) && HAVE_DECL_KVM_CAP_X86_ROBUST_SINGLESTEP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_X86_ROBUST_SINGLESTEP) == (51), "KVM_CAP_X86_ROBUST_SINGLESTEP != 51"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_X86_ROBUST_SINGLESTEP 51 ++#endif ++#if defined(KVM_CAP_PPC_OSI) || (defined(HAVE_DECL_KVM_CAP_PPC_OSI) && HAVE_DECL_KVM_CAP_PPC_OSI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_OSI) == (52), "KVM_CAP_PPC_OSI != 52"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_OSI 52 ++#endif ++#if defined(KVM_CAP_PPC_UNSET_IRQ) || (defined(HAVE_DECL_KVM_CAP_PPC_UNSET_IRQ) && HAVE_DECL_KVM_CAP_PPC_UNSET_IRQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_UNSET_IRQ) == (53), "KVM_CAP_PPC_UNSET_IRQ != 53"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_UNSET_IRQ 53 ++#endif ++#if defined(KVM_CAP_ENABLE_CAP) || (defined(HAVE_DECL_KVM_CAP_ENABLE_CAP) && HAVE_DECL_KVM_CAP_ENABLE_CAP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ENABLE_CAP) == (54), "KVM_CAP_ENABLE_CAP != 54"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ENABLE_CAP 54 ++#endif ++#if defined(KVM_CAP_XSAVE) || (defined(HAVE_DECL_KVM_CAP_XSAVE) && HAVE_DECL_KVM_CAP_XSAVE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_XSAVE) == (55), "KVM_CAP_XSAVE != 55"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_XSAVE 55 ++#endif ++#if defined(KVM_CAP_XCRS) || (defined(HAVE_DECL_KVM_CAP_XCRS) && HAVE_DECL_KVM_CAP_XCRS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_XCRS) == (56), "KVM_CAP_XCRS != 56"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_XCRS 56 ++#endif ++#if defined(KVM_CAP_PPC_GET_PVINFO) || (defined(HAVE_DECL_KVM_CAP_PPC_GET_PVINFO) && HAVE_DECL_KVM_CAP_PPC_GET_PVINFO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_GET_PVINFO) == (57), "KVM_CAP_PPC_GET_PVINFO != 57"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_GET_PVINFO 57 ++#endif ++#if defined(KVM_CAP_PPC_IRQ_LEVEL) || (defined(HAVE_DECL_KVM_CAP_PPC_IRQ_LEVEL) && HAVE_DECL_KVM_CAP_PPC_IRQ_LEVEL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_IRQ_LEVEL) == (58), "KVM_CAP_PPC_IRQ_LEVEL != 58"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_IRQ_LEVEL 58 ++#endif ++#if defined(KVM_CAP_ASYNC_PF) || (defined(HAVE_DECL_KVM_CAP_ASYNC_PF) && HAVE_DECL_KVM_CAP_ASYNC_PF) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ASYNC_PF) == (59), "KVM_CAP_ASYNC_PF != 59"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ASYNC_PF 59 ++#endif ++#if defined(KVM_CAP_TSC_CONTROL) || (defined(HAVE_DECL_KVM_CAP_TSC_CONTROL) && HAVE_DECL_KVM_CAP_TSC_CONTROL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_TSC_CONTROL) == (60), "KVM_CAP_TSC_CONTROL != 60"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_TSC_CONTROL 60 ++#endif ++#if defined(KVM_CAP_GET_TSC_KHZ) || (defined(HAVE_DECL_KVM_CAP_GET_TSC_KHZ) && HAVE_DECL_KVM_CAP_GET_TSC_KHZ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_GET_TSC_KHZ) == (61), "KVM_CAP_GET_TSC_KHZ != 61"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_GET_TSC_KHZ 61 ++#endif ++#if defined(KVM_CAP_PPC_BOOKE_SREGS) || (defined(HAVE_DECL_KVM_CAP_PPC_BOOKE_SREGS) && HAVE_DECL_KVM_CAP_PPC_BOOKE_SREGS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_BOOKE_SREGS) == (62), "KVM_CAP_PPC_BOOKE_SREGS != 62"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_BOOKE_SREGS 62 ++#endif ++#if defined(KVM_CAP_SPAPR_TCE) || (defined(HAVE_DECL_KVM_CAP_SPAPR_TCE) && HAVE_DECL_KVM_CAP_SPAPR_TCE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPAPR_TCE) == (63), "KVM_CAP_SPAPR_TCE != 63"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPAPR_TCE 63 ++#endif ++#if defined(KVM_CAP_PPC_SMT) || (defined(HAVE_DECL_KVM_CAP_PPC_SMT) && HAVE_DECL_KVM_CAP_PPC_SMT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_SMT) == (64), "KVM_CAP_PPC_SMT != 64"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_SMT 64 ++#endif ++#if defined(KVM_CAP_PPC_RMA) || (defined(HAVE_DECL_KVM_CAP_PPC_RMA) && HAVE_DECL_KVM_CAP_PPC_RMA) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_RMA) == (65), "KVM_CAP_PPC_RMA != 65"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_RMA 65 ++#endif ++#if defined(KVM_CAP_MAX_VCPUS) || (defined(HAVE_DECL_KVM_CAP_MAX_VCPUS) && HAVE_DECL_KVM_CAP_MAX_VCPUS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MAX_VCPUS) == (66), "KVM_CAP_MAX_VCPUS != 66"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MAX_VCPUS 66 ++#endif ++#if defined(KVM_CAP_PPC_HIOR) || (defined(HAVE_DECL_KVM_CAP_PPC_HIOR) && HAVE_DECL_KVM_CAP_PPC_HIOR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_HIOR) == (67), "KVM_CAP_PPC_HIOR != 67"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_HIOR 67 ++#endif ++#if defined(KVM_CAP_PPC_PAPR) || (defined(HAVE_DECL_KVM_CAP_PPC_PAPR) && HAVE_DECL_KVM_CAP_PPC_PAPR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_PAPR) == (68), "KVM_CAP_PPC_PAPR != 68"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_PAPR 68 ++#endif ++#if defined(KVM_CAP_SW_TLB) || (defined(HAVE_DECL_KVM_CAP_SW_TLB) && HAVE_DECL_KVM_CAP_SW_TLB) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SW_TLB) == (69), "KVM_CAP_SW_TLB != 69"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SW_TLB 69 ++#endif ++#if defined(KVM_CAP_ONE_REG) || (defined(HAVE_DECL_KVM_CAP_ONE_REG) && HAVE_DECL_KVM_CAP_ONE_REG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ONE_REG) == (70), "KVM_CAP_ONE_REG != 70"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ONE_REG 70 ++#endif ++#if defined(KVM_CAP_S390_GMAP) || (defined(HAVE_DECL_KVM_CAP_S390_GMAP) && HAVE_DECL_KVM_CAP_S390_GMAP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_GMAP) == (71), "KVM_CAP_S390_GMAP != 71"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_GMAP 71 ++#endif ++#if defined(KVM_CAP_TSC_DEADLINE_TIMER) || (defined(HAVE_DECL_KVM_CAP_TSC_DEADLINE_TIMER) && HAVE_DECL_KVM_CAP_TSC_DEADLINE_TIMER) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_TSC_DEADLINE_TIMER) == (72), "KVM_CAP_TSC_DEADLINE_TIMER != 72"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_TSC_DEADLINE_TIMER 72 ++#endif ++#if defined(KVM_CAP_S390_UCONTROL) || (defined(HAVE_DECL_KVM_CAP_S390_UCONTROL) && HAVE_DECL_KVM_CAP_S390_UCONTROL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_UCONTROL) == (73), "KVM_CAP_S390_UCONTROL != 73"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_UCONTROL 73 ++#endif ++#if defined(KVM_CAP_SYNC_REGS) || (defined(HAVE_DECL_KVM_CAP_SYNC_REGS) && HAVE_DECL_KVM_CAP_SYNC_REGS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SYNC_REGS) == (74), "KVM_CAP_SYNC_REGS != 74"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SYNC_REGS 74 ++#endif ++#if defined(KVM_CAP_PCI_2_3) || (defined(HAVE_DECL_KVM_CAP_PCI_2_3) && HAVE_DECL_KVM_CAP_PCI_2_3) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PCI_2_3) == (75), "KVM_CAP_PCI_2_3 != 75"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PCI_2_3 75 ++#endif ++#if defined(KVM_CAP_KVMCLOCK_CTRL) || (defined(HAVE_DECL_KVM_CAP_KVMCLOCK_CTRL) && HAVE_DECL_KVM_CAP_KVMCLOCK_CTRL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_KVMCLOCK_CTRL) == (76), "KVM_CAP_KVMCLOCK_CTRL != 76"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_KVMCLOCK_CTRL 76 ++#endif ++#if defined(KVM_CAP_SIGNAL_MSI) || (defined(HAVE_DECL_KVM_CAP_SIGNAL_MSI) && HAVE_DECL_KVM_CAP_SIGNAL_MSI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SIGNAL_MSI) == (77), "KVM_CAP_SIGNAL_MSI != 77"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SIGNAL_MSI 77 ++#endif ++#if defined(KVM_CAP_PPC_GET_SMMU_INFO) || (defined(HAVE_DECL_KVM_CAP_PPC_GET_SMMU_INFO) && HAVE_DECL_KVM_CAP_PPC_GET_SMMU_INFO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_GET_SMMU_INFO) == (78), "KVM_CAP_PPC_GET_SMMU_INFO != 78"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_GET_SMMU_INFO 78 ++#endif ++#if defined(KVM_CAP_S390_COW) || (defined(HAVE_DECL_KVM_CAP_S390_COW) && HAVE_DECL_KVM_CAP_S390_COW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_COW) == (79), "KVM_CAP_S390_COW != 79"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_COW 79 ++#endif ++#if defined(KVM_CAP_PPC_ALLOC_HTAB) || (defined(HAVE_DECL_KVM_CAP_PPC_ALLOC_HTAB) && HAVE_DECL_KVM_CAP_PPC_ALLOC_HTAB) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_ALLOC_HTAB) == (80), "KVM_CAP_PPC_ALLOC_HTAB != 80"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_ALLOC_HTAB 80 ++#endif ++#if defined(KVM_CAP_READONLY_MEM) || (defined(HAVE_DECL_KVM_CAP_READONLY_MEM) && HAVE_DECL_KVM_CAP_READONLY_MEM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_READONLY_MEM) == (81), "KVM_CAP_READONLY_MEM != 81"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_READONLY_MEM 81 ++#endif ++#if defined(KVM_CAP_IRQFD_RESAMPLE) || (defined(HAVE_DECL_KVM_CAP_IRQFD_RESAMPLE) && HAVE_DECL_KVM_CAP_IRQFD_RESAMPLE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQFD_RESAMPLE) == (82), "KVM_CAP_IRQFD_RESAMPLE != 82"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQFD_RESAMPLE 82 ++#endif ++#if defined(KVM_CAP_PPC_BOOKE_WATCHDOG) || (defined(HAVE_DECL_KVM_CAP_PPC_BOOKE_WATCHDOG) && HAVE_DECL_KVM_CAP_PPC_BOOKE_WATCHDOG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_BOOKE_WATCHDOG) == (83), "KVM_CAP_PPC_BOOKE_WATCHDOG != 83"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_BOOKE_WATCHDOG 83 ++#endif ++#if defined(KVM_CAP_PPC_HTAB_FD) || (defined(HAVE_DECL_KVM_CAP_PPC_HTAB_FD) && HAVE_DECL_KVM_CAP_PPC_HTAB_FD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_HTAB_FD) == (84), "KVM_CAP_PPC_HTAB_FD != 84"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_HTAB_FD 84 ++#endif ++#if defined(KVM_CAP_S390_CSS_SUPPORT) || (defined(HAVE_DECL_KVM_CAP_S390_CSS_SUPPORT) && HAVE_DECL_KVM_CAP_S390_CSS_SUPPORT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_CSS_SUPPORT) == (85), "KVM_CAP_S390_CSS_SUPPORT != 85"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_CSS_SUPPORT 85 ++#endif ++#if defined(KVM_CAP_PPC_EPR) || (defined(HAVE_DECL_KVM_CAP_PPC_EPR) && HAVE_DECL_KVM_CAP_PPC_EPR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_EPR) == (86), "KVM_CAP_PPC_EPR != 86"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_EPR 86 ++#endif ++#if defined(KVM_CAP_ARM_PSCI) || (defined(HAVE_DECL_KVM_CAP_ARM_PSCI) && HAVE_DECL_KVM_CAP_ARM_PSCI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_PSCI) == (87), "KVM_CAP_ARM_PSCI != 87"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_PSCI 87 ++#endif ++#if defined(KVM_CAP_ARM_SET_DEVICE_ADDR) || (defined(HAVE_DECL_KVM_CAP_ARM_SET_DEVICE_ADDR) && HAVE_DECL_KVM_CAP_ARM_SET_DEVICE_ADDR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_SET_DEVICE_ADDR) == (88), "KVM_CAP_ARM_SET_DEVICE_ADDR != 88"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_SET_DEVICE_ADDR 88 ++#endif ++#if defined(KVM_CAP_DEVICE_CTRL) || (defined(HAVE_DECL_KVM_CAP_DEVICE_CTRL) && HAVE_DECL_KVM_CAP_DEVICE_CTRL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_DEVICE_CTRL) == (89), "KVM_CAP_DEVICE_CTRL != 89"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_DEVICE_CTRL 89 ++#endif ++#if defined(KVM_CAP_IRQ_MPIC) || (defined(HAVE_DECL_KVM_CAP_IRQ_MPIC) && HAVE_DECL_KVM_CAP_IRQ_MPIC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQ_MPIC) == (90), "KVM_CAP_IRQ_MPIC != 90"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQ_MPIC 90 ++#endif ++#if defined(KVM_CAP_PPC_RTAS) || (defined(HAVE_DECL_KVM_CAP_PPC_RTAS) && HAVE_DECL_KVM_CAP_PPC_RTAS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_RTAS) == (91), "KVM_CAP_PPC_RTAS != 91"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_RTAS 91 ++#endif ++#if defined(KVM_CAP_IRQ_XICS) || (defined(HAVE_DECL_KVM_CAP_IRQ_XICS) && HAVE_DECL_KVM_CAP_IRQ_XICS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IRQ_XICS) == (92), "KVM_CAP_IRQ_XICS != 92"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IRQ_XICS 92 ++#endif ++#if defined(KVM_CAP_ARM_EL1_32BIT) || (defined(HAVE_DECL_KVM_CAP_ARM_EL1_32BIT) && HAVE_DECL_KVM_CAP_ARM_EL1_32BIT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_EL1_32BIT) == (93), "KVM_CAP_ARM_EL1_32BIT != 93"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_EL1_32BIT 93 ++#endif ++#if defined(KVM_CAP_SPAPR_MULTITCE) || (defined(HAVE_DECL_KVM_CAP_SPAPR_MULTITCE) && HAVE_DECL_KVM_CAP_SPAPR_MULTITCE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPAPR_MULTITCE) == (94), "KVM_CAP_SPAPR_MULTITCE != 94"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPAPR_MULTITCE 94 ++#endif ++#if defined(KVM_CAP_EXT_EMUL_CPUID) || (defined(HAVE_DECL_KVM_CAP_EXT_EMUL_CPUID) && HAVE_DECL_KVM_CAP_EXT_EMUL_CPUID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_EXT_EMUL_CPUID) == (95), "KVM_CAP_EXT_EMUL_CPUID != 95"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_EXT_EMUL_CPUID 95 ++#endif ++#if defined(KVM_CAP_HYPERV_TIME) || (defined(HAVE_DECL_KVM_CAP_HYPERV_TIME) && HAVE_DECL_KVM_CAP_HYPERV_TIME) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_TIME) == (96), "KVM_CAP_HYPERV_TIME != 96"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_TIME 96 ++#endif ++#if defined(KVM_CAP_IOAPIC_POLARITY_IGNORED) || (defined(HAVE_DECL_KVM_CAP_IOAPIC_POLARITY_IGNORED) && HAVE_DECL_KVM_CAP_IOAPIC_POLARITY_IGNORED) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IOAPIC_POLARITY_IGNORED) == (97), "KVM_CAP_IOAPIC_POLARITY_IGNORED != 97"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IOAPIC_POLARITY_IGNORED 97 ++#endif ++#if defined(KVM_CAP_ENABLE_CAP_VM) || (defined(HAVE_DECL_KVM_CAP_ENABLE_CAP_VM) && HAVE_DECL_KVM_CAP_ENABLE_CAP_VM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ENABLE_CAP_VM) == (98), "KVM_CAP_ENABLE_CAP_VM != 98"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ENABLE_CAP_VM 98 ++#endif ++#if defined(KVM_CAP_S390_IRQCHIP) || (defined(HAVE_DECL_KVM_CAP_S390_IRQCHIP) && HAVE_DECL_KVM_CAP_S390_IRQCHIP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_IRQCHIP) == (99), "KVM_CAP_S390_IRQCHIP != 99"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_IRQCHIP 99 ++#endif ++#if defined(KVM_CAP_IOEVENTFD_NO_LENGTH) || (defined(HAVE_DECL_KVM_CAP_IOEVENTFD_NO_LENGTH) && HAVE_DECL_KVM_CAP_IOEVENTFD_NO_LENGTH) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IOEVENTFD_NO_LENGTH) == (100), "KVM_CAP_IOEVENTFD_NO_LENGTH != 100"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IOEVENTFD_NO_LENGTH 100 ++#endif ++#if defined(KVM_CAP_VM_ATTRIBUTES) || (defined(HAVE_DECL_KVM_CAP_VM_ATTRIBUTES) && HAVE_DECL_KVM_CAP_VM_ATTRIBUTES) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_VM_ATTRIBUTES) == (101), "KVM_CAP_VM_ATTRIBUTES != 101"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_VM_ATTRIBUTES 101 ++#endif ++#if defined(KVM_CAP_ARM_PSCI_0_2) || (defined(HAVE_DECL_KVM_CAP_ARM_PSCI_0_2) && HAVE_DECL_KVM_CAP_ARM_PSCI_0_2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_PSCI_0_2) == (102), "KVM_CAP_ARM_PSCI_0_2 != 102"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_PSCI_0_2 102 ++#endif ++#if defined(KVM_CAP_PPC_FIXUP_HCALL) || (defined(HAVE_DECL_KVM_CAP_PPC_FIXUP_HCALL) && HAVE_DECL_KVM_CAP_PPC_FIXUP_HCALL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_FIXUP_HCALL) == (103), "KVM_CAP_PPC_FIXUP_HCALL != 103"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_FIXUP_HCALL 103 ++#endif ++#if defined(KVM_CAP_PPC_ENABLE_HCALL) || (defined(HAVE_DECL_KVM_CAP_PPC_ENABLE_HCALL) && HAVE_DECL_KVM_CAP_PPC_ENABLE_HCALL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_ENABLE_HCALL) == (104), "KVM_CAP_PPC_ENABLE_HCALL != 104"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_ENABLE_HCALL 104 ++#endif ++#if defined(KVM_CAP_CHECK_EXTENSION_VM) || (defined(HAVE_DECL_KVM_CAP_CHECK_EXTENSION_VM) && HAVE_DECL_KVM_CAP_CHECK_EXTENSION_VM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_CHECK_EXTENSION_VM) == (105), "KVM_CAP_CHECK_EXTENSION_VM != 105"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_CHECK_EXTENSION_VM 105 ++#endif ++#if defined(KVM_CAP_S390_USER_SIGP) || (defined(HAVE_DECL_KVM_CAP_S390_USER_SIGP) && HAVE_DECL_KVM_CAP_S390_USER_SIGP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_USER_SIGP) == (106), "KVM_CAP_S390_USER_SIGP != 106"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_USER_SIGP 106 ++#endif ++#if defined(KVM_CAP_S390_VECTOR_REGISTERS) || (defined(HAVE_DECL_KVM_CAP_S390_VECTOR_REGISTERS) && HAVE_DECL_KVM_CAP_S390_VECTOR_REGISTERS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_VECTOR_REGISTERS) == (107), "KVM_CAP_S390_VECTOR_REGISTERS != 107"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_VECTOR_REGISTERS 107 ++#endif ++#if defined(KVM_CAP_S390_MEM_OP) || (defined(HAVE_DECL_KVM_CAP_S390_MEM_OP) && HAVE_DECL_KVM_CAP_S390_MEM_OP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_MEM_OP) == (108), "KVM_CAP_S390_MEM_OP != 108"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_MEM_OP 108 ++#endif ++#if defined(KVM_CAP_S390_USER_STSI) || (defined(HAVE_DECL_KVM_CAP_S390_USER_STSI) && HAVE_DECL_KVM_CAP_S390_USER_STSI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_USER_STSI) == (109), "KVM_CAP_S390_USER_STSI != 109"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_USER_STSI 109 ++#endif ++#if defined(KVM_CAP_S390_SKEYS) || (defined(HAVE_DECL_KVM_CAP_S390_SKEYS) && HAVE_DECL_KVM_CAP_S390_SKEYS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_SKEYS) == (110), "KVM_CAP_S390_SKEYS != 110"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_SKEYS 110 ++#endif ++#if defined(KVM_CAP_MIPS_FPU) || (defined(HAVE_DECL_KVM_CAP_MIPS_FPU) && HAVE_DECL_KVM_CAP_MIPS_FPU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MIPS_FPU) == (111), "KVM_CAP_MIPS_FPU != 111"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MIPS_FPU 111 ++#endif ++#if defined(KVM_CAP_MIPS_MSA) || (defined(HAVE_DECL_KVM_CAP_MIPS_MSA) && HAVE_DECL_KVM_CAP_MIPS_MSA) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MIPS_MSA) == (112), "KVM_CAP_MIPS_MSA != 112"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MIPS_MSA 112 ++#endif ++#if defined(KVM_CAP_S390_INJECT_IRQ) || (defined(HAVE_DECL_KVM_CAP_S390_INJECT_IRQ) && HAVE_DECL_KVM_CAP_S390_INJECT_IRQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_INJECT_IRQ) == (113), "KVM_CAP_S390_INJECT_IRQ != 113"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_INJECT_IRQ 113 ++#endif ++#if defined(KVM_CAP_S390_IRQ_STATE) || (defined(HAVE_DECL_KVM_CAP_S390_IRQ_STATE) && HAVE_DECL_KVM_CAP_S390_IRQ_STATE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_IRQ_STATE) == (114), "KVM_CAP_S390_IRQ_STATE != 114"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_IRQ_STATE 114 ++#endif ++#if defined(KVM_CAP_PPC_HWRNG) || (defined(HAVE_DECL_KVM_CAP_PPC_HWRNG) && HAVE_DECL_KVM_CAP_PPC_HWRNG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_HWRNG) == (115), "KVM_CAP_PPC_HWRNG != 115"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_HWRNG 115 ++#endif ++#if defined(KVM_CAP_DISABLE_QUIRKS) || (defined(HAVE_DECL_KVM_CAP_DISABLE_QUIRKS) && HAVE_DECL_KVM_CAP_DISABLE_QUIRKS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_DISABLE_QUIRKS) == (116), "KVM_CAP_DISABLE_QUIRKS != 116"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_DISABLE_QUIRKS 116 ++#endif ++#if defined(KVM_CAP_X86_SMM) || (defined(HAVE_DECL_KVM_CAP_X86_SMM) && HAVE_DECL_KVM_CAP_X86_SMM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_X86_SMM) == (117), "KVM_CAP_X86_SMM != 117"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_X86_SMM 117 ++#endif ++#if defined(KVM_CAP_MULTI_ADDRESS_SPACE) || (defined(HAVE_DECL_KVM_CAP_MULTI_ADDRESS_SPACE) && HAVE_DECL_KVM_CAP_MULTI_ADDRESS_SPACE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MULTI_ADDRESS_SPACE) == (118), "KVM_CAP_MULTI_ADDRESS_SPACE != 118"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MULTI_ADDRESS_SPACE 118 ++#endif ++#if defined(KVM_CAP_GUEST_DEBUG_HW_BPS) || (defined(HAVE_DECL_KVM_CAP_GUEST_DEBUG_HW_BPS) && HAVE_DECL_KVM_CAP_GUEST_DEBUG_HW_BPS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_GUEST_DEBUG_HW_BPS) == (119), "KVM_CAP_GUEST_DEBUG_HW_BPS != 119"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_GUEST_DEBUG_HW_BPS 119 ++#endif ++#if defined(KVM_CAP_GUEST_DEBUG_HW_WPS) || (defined(HAVE_DECL_KVM_CAP_GUEST_DEBUG_HW_WPS) && HAVE_DECL_KVM_CAP_GUEST_DEBUG_HW_WPS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_GUEST_DEBUG_HW_WPS) == (120), "KVM_CAP_GUEST_DEBUG_HW_WPS != 120"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_GUEST_DEBUG_HW_WPS 120 ++#endif ++#if defined(KVM_CAP_SPLIT_IRQCHIP) || (defined(HAVE_DECL_KVM_CAP_SPLIT_IRQCHIP) && HAVE_DECL_KVM_CAP_SPLIT_IRQCHIP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPLIT_IRQCHIP) == (121), "KVM_CAP_SPLIT_IRQCHIP != 121"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPLIT_IRQCHIP 121 ++#endif ++#if defined(KVM_CAP_IOEVENTFD_ANY_LENGTH) || (defined(HAVE_DECL_KVM_CAP_IOEVENTFD_ANY_LENGTH) && HAVE_DECL_KVM_CAP_IOEVENTFD_ANY_LENGTH) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IOEVENTFD_ANY_LENGTH) == (122), "KVM_CAP_IOEVENTFD_ANY_LENGTH != 122"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IOEVENTFD_ANY_LENGTH 122 ++#endif ++#if defined(KVM_CAP_HYPERV_SYNIC) || (defined(HAVE_DECL_KVM_CAP_HYPERV_SYNIC) && HAVE_DECL_KVM_CAP_HYPERV_SYNIC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_SYNIC) == (123), "KVM_CAP_HYPERV_SYNIC != 123"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_SYNIC 123 ++#endif ++#if defined(KVM_CAP_S390_RI) || (defined(HAVE_DECL_KVM_CAP_S390_RI) && HAVE_DECL_KVM_CAP_S390_RI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_RI) == (124), "KVM_CAP_S390_RI != 124"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_RI 124 ++#endif ++#if defined(KVM_CAP_SPAPR_TCE_64) || (defined(HAVE_DECL_KVM_CAP_SPAPR_TCE_64) && HAVE_DECL_KVM_CAP_SPAPR_TCE_64) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPAPR_TCE_64) == (125), "KVM_CAP_SPAPR_TCE_64 != 125"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPAPR_TCE_64 125 ++#endif ++#if defined(KVM_CAP_ARM_PMU_V3) || (defined(HAVE_DECL_KVM_CAP_ARM_PMU_V3) && HAVE_DECL_KVM_CAP_ARM_PMU_V3) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_PMU_V3) == (126), "KVM_CAP_ARM_PMU_V3 != 126"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_PMU_V3 126 ++#endif ++#if defined(KVM_CAP_VCPU_ATTRIBUTES) || (defined(HAVE_DECL_KVM_CAP_VCPU_ATTRIBUTES) && HAVE_DECL_KVM_CAP_VCPU_ATTRIBUTES) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_VCPU_ATTRIBUTES) == (127), "KVM_CAP_VCPU_ATTRIBUTES != 127"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_VCPU_ATTRIBUTES 127 ++#endif ++#if defined(KVM_CAP_MAX_VCPU_ID) || (defined(HAVE_DECL_KVM_CAP_MAX_VCPU_ID) && HAVE_DECL_KVM_CAP_MAX_VCPU_ID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MAX_VCPU_ID) == (128), "KVM_CAP_MAX_VCPU_ID != 128"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MAX_VCPU_ID 128 ++#endif ++#if defined(KVM_CAP_X2APIC_API) || (defined(HAVE_DECL_KVM_CAP_X2APIC_API) && HAVE_DECL_KVM_CAP_X2APIC_API) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_X2APIC_API) == (129), "KVM_CAP_X2APIC_API != 129"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_X2APIC_API 129 ++#endif ++#if defined(KVM_CAP_S390_USER_INSTR0) || (defined(HAVE_DECL_KVM_CAP_S390_USER_INSTR0) && HAVE_DECL_KVM_CAP_S390_USER_INSTR0) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_USER_INSTR0) == (130), "KVM_CAP_S390_USER_INSTR0 != 130"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_USER_INSTR0 130 ++#endif ++#if defined(KVM_CAP_MSI_DEVID) || (defined(HAVE_DECL_KVM_CAP_MSI_DEVID) && HAVE_DECL_KVM_CAP_MSI_DEVID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MSI_DEVID) == (131), "KVM_CAP_MSI_DEVID != 131"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MSI_DEVID 131 ++#endif ++#if defined(KVM_CAP_PPC_HTM) || (defined(HAVE_DECL_KVM_CAP_PPC_HTM) && HAVE_DECL_KVM_CAP_PPC_HTM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_HTM) == (132), "KVM_CAP_PPC_HTM != 132"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_HTM 132 ++#endif ++#if defined(KVM_CAP_SPAPR_RESIZE_HPT) || (defined(HAVE_DECL_KVM_CAP_SPAPR_RESIZE_HPT) && HAVE_DECL_KVM_CAP_SPAPR_RESIZE_HPT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPAPR_RESIZE_HPT) == (133), "KVM_CAP_SPAPR_RESIZE_HPT != 133"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPAPR_RESIZE_HPT 133 ++#endif ++#if defined(KVM_CAP_PPC_MMU_RADIX) || (defined(HAVE_DECL_KVM_CAP_PPC_MMU_RADIX) && HAVE_DECL_KVM_CAP_PPC_MMU_RADIX) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_MMU_RADIX) == (134), "KVM_CAP_PPC_MMU_RADIX != 134"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_MMU_RADIX 134 ++#endif ++#if defined(KVM_CAP_PPC_MMU_HASH_V3) || (defined(HAVE_DECL_KVM_CAP_PPC_MMU_HASH_V3) && HAVE_DECL_KVM_CAP_PPC_MMU_HASH_V3) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_MMU_HASH_V3) == (135), "KVM_CAP_PPC_MMU_HASH_V3 != 135"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_MMU_HASH_V3 135 ++#endif ++#if defined(KVM_CAP_IMMEDIATE_EXIT) || (defined(HAVE_DECL_KVM_CAP_IMMEDIATE_EXIT) && HAVE_DECL_KVM_CAP_IMMEDIATE_EXIT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_IMMEDIATE_EXIT) == (136), "KVM_CAP_IMMEDIATE_EXIT != 136"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_IMMEDIATE_EXIT 136 ++#endif ++#if defined(KVM_CAP_MIPS_VZ) || (defined(HAVE_DECL_KVM_CAP_MIPS_VZ) && HAVE_DECL_KVM_CAP_MIPS_VZ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MIPS_VZ) == (137), "KVM_CAP_MIPS_VZ != 137"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MIPS_VZ 137 ++#endif ++#if defined(KVM_CAP_MIPS_TE) || (defined(HAVE_DECL_KVM_CAP_MIPS_TE) && HAVE_DECL_KVM_CAP_MIPS_TE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MIPS_TE) == (138), "KVM_CAP_MIPS_TE != 138"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MIPS_TE 138 ++#endif ++#if defined(KVM_CAP_MIPS_64BIT) || (defined(HAVE_DECL_KVM_CAP_MIPS_64BIT) && HAVE_DECL_KVM_CAP_MIPS_64BIT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MIPS_64BIT) == (139), "KVM_CAP_MIPS_64BIT != 139"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MIPS_64BIT 139 ++#endif ++#if defined(KVM_CAP_S390_GS) || (defined(HAVE_DECL_KVM_CAP_S390_GS) && HAVE_DECL_KVM_CAP_S390_GS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_GS) == (140), "KVM_CAP_S390_GS != 140"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_GS 140 ++#endif ++#if defined(KVM_CAP_S390_AIS) || (defined(HAVE_DECL_KVM_CAP_S390_AIS) && HAVE_DECL_KVM_CAP_S390_AIS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_AIS) == (141), "KVM_CAP_S390_AIS != 141"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_AIS 141 ++#endif ++#if defined(KVM_CAP_SPAPR_TCE_VFIO) || (defined(HAVE_DECL_KVM_CAP_SPAPR_TCE_VFIO) && HAVE_DECL_KVM_CAP_SPAPR_TCE_VFIO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_SPAPR_TCE_VFIO) == (142), "KVM_CAP_SPAPR_TCE_VFIO != 142"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_SPAPR_TCE_VFIO 142 ++#endif ++#if defined(KVM_CAP_X86_DISABLE_EXITS) || (defined(HAVE_DECL_KVM_CAP_X86_DISABLE_EXITS) && HAVE_DECL_KVM_CAP_X86_DISABLE_EXITS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_X86_DISABLE_EXITS) == (143), "KVM_CAP_X86_DISABLE_EXITS != 143"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_X86_DISABLE_EXITS 143 ++#endif ++#if defined(KVM_CAP_ARM_USER_IRQ) || (defined(HAVE_DECL_KVM_CAP_ARM_USER_IRQ) && HAVE_DECL_KVM_CAP_ARM_USER_IRQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_USER_IRQ) == (144), "KVM_CAP_ARM_USER_IRQ != 144"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_USER_IRQ 144 ++#endif ++#if defined(KVM_CAP_S390_CMMA_MIGRATION) || (defined(HAVE_DECL_KVM_CAP_S390_CMMA_MIGRATION) && HAVE_DECL_KVM_CAP_S390_CMMA_MIGRATION) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_CMMA_MIGRATION) == (145), "KVM_CAP_S390_CMMA_MIGRATION != 145"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_CMMA_MIGRATION 145 ++#endif ++#if defined(KVM_CAP_PPC_FWNMI) || (defined(HAVE_DECL_KVM_CAP_PPC_FWNMI) && HAVE_DECL_KVM_CAP_PPC_FWNMI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_FWNMI) == (146), "KVM_CAP_PPC_FWNMI != 146"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_FWNMI 146 ++#endif ++#if defined(KVM_CAP_PPC_SMT_POSSIBLE) || (defined(HAVE_DECL_KVM_CAP_PPC_SMT_POSSIBLE) && HAVE_DECL_KVM_CAP_PPC_SMT_POSSIBLE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_SMT_POSSIBLE) == (147), "KVM_CAP_PPC_SMT_POSSIBLE != 147"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_SMT_POSSIBLE 147 ++#endif ++#if defined(KVM_CAP_HYPERV_SYNIC2) || (defined(HAVE_DECL_KVM_CAP_HYPERV_SYNIC2) && HAVE_DECL_KVM_CAP_HYPERV_SYNIC2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_SYNIC2) == (148), "KVM_CAP_HYPERV_SYNIC2 != 148"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_SYNIC2 148 ++#endif ++#if defined(KVM_CAP_HYPERV_VP_INDEX) || (defined(HAVE_DECL_KVM_CAP_HYPERV_VP_INDEX) && HAVE_DECL_KVM_CAP_HYPERV_VP_INDEX) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_VP_INDEX) == (149), "KVM_CAP_HYPERV_VP_INDEX != 149"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_VP_INDEX 149 ++#endif ++#if defined(KVM_CAP_S390_AIS_MIGRATION) || (defined(HAVE_DECL_KVM_CAP_S390_AIS_MIGRATION) && HAVE_DECL_KVM_CAP_S390_AIS_MIGRATION) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_AIS_MIGRATION) == (150), "KVM_CAP_S390_AIS_MIGRATION != 150"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_AIS_MIGRATION 150 ++#endif ++#if defined(KVM_CAP_PPC_GET_CPU_CHAR) || (defined(HAVE_DECL_KVM_CAP_PPC_GET_CPU_CHAR) && HAVE_DECL_KVM_CAP_PPC_GET_CPU_CHAR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_GET_CPU_CHAR) == (151), "KVM_CAP_PPC_GET_CPU_CHAR != 151"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_GET_CPU_CHAR 151 ++#endif ++#if defined(KVM_CAP_S390_BPB) || (defined(HAVE_DECL_KVM_CAP_S390_BPB) && HAVE_DECL_KVM_CAP_S390_BPB) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_BPB) == (152), "KVM_CAP_S390_BPB != 152"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_BPB 152 ++#endif ++#if defined(KVM_CAP_GET_MSR_FEATURES) || (defined(HAVE_DECL_KVM_CAP_GET_MSR_FEATURES) && HAVE_DECL_KVM_CAP_GET_MSR_FEATURES) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_GET_MSR_FEATURES) == (153), "KVM_CAP_GET_MSR_FEATURES != 153"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_GET_MSR_FEATURES 153 ++#endif ++#if defined(KVM_CAP_HYPERV_EVENTFD) || (defined(HAVE_DECL_KVM_CAP_HYPERV_EVENTFD) && HAVE_DECL_KVM_CAP_HYPERV_EVENTFD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_EVENTFD) == (154), "KVM_CAP_HYPERV_EVENTFD != 154"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_EVENTFD 154 ++#endif ++#if defined(KVM_CAP_HYPERV_TLBFLUSH) || (defined(HAVE_DECL_KVM_CAP_HYPERV_TLBFLUSH) && HAVE_DECL_KVM_CAP_HYPERV_TLBFLUSH) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_TLBFLUSH) == (155), "KVM_CAP_HYPERV_TLBFLUSH != 155"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_TLBFLUSH 155 ++#endif ++#if defined(KVM_CAP_S390_HPAGE_1M) || (defined(HAVE_DECL_KVM_CAP_S390_HPAGE_1M) && HAVE_DECL_KVM_CAP_S390_HPAGE_1M) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_S390_HPAGE_1M) == (156), "KVM_CAP_S390_HPAGE_1M != 156"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_S390_HPAGE_1M 156 ++#endif ++#if defined(KVM_CAP_NESTED_STATE) || (defined(HAVE_DECL_KVM_CAP_NESTED_STATE) && HAVE_DECL_KVM_CAP_NESTED_STATE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_NESTED_STATE) == (157), "KVM_CAP_NESTED_STATE != 157"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_NESTED_STATE 157 ++#endif ++#if defined(KVM_CAP_ARM_INJECT_SERROR_ESR) || (defined(HAVE_DECL_KVM_CAP_ARM_INJECT_SERROR_ESR) && HAVE_DECL_KVM_CAP_ARM_INJECT_SERROR_ESR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_INJECT_SERROR_ESR) == (158), "KVM_CAP_ARM_INJECT_SERROR_ESR != 158"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_INJECT_SERROR_ESR 158 ++#endif ++#if defined(KVM_CAP_MSR_PLATFORM_INFO) || (defined(HAVE_DECL_KVM_CAP_MSR_PLATFORM_INFO) && HAVE_DECL_KVM_CAP_MSR_PLATFORM_INFO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_MSR_PLATFORM_INFO) == (159), "KVM_CAP_MSR_PLATFORM_INFO != 159"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_MSR_PLATFORM_INFO 159 ++#endif ++#if defined(KVM_CAP_PPC_NESTED_HV) || (defined(HAVE_DECL_KVM_CAP_PPC_NESTED_HV) && HAVE_DECL_KVM_CAP_PPC_NESTED_HV) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_PPC_NESTED_HV) == (160), "KVM_CAP_PPC_NESTED_HV != 160"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_PPC_NESTED_HV 160 ++#endif ++#if defined(KVM_CAP_HYPERV_SEND_IPI) || (defined(HAVE_DECL_KVM_CAP_HYPERV_SEND_IPI) && HAVE_DECL_KVM_CAP_HYPERV_SEND_IPI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_SEND_IPI) == (161), "KVM_CAP_HYPERV_SEND_IPI != 161"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_SEND_IPI 161 ++#endif ++#if defined(KVM_CAP_COALESCED_PIO) || (defined(HAVE_DECL_KVM_CAP_COALESCED_PIO) && HAVE_DECL_KVM_CAP_COALESCED_PIO) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_COALESCED_PIO) == (162), "KVM_CAP_COALESCED_PIO != 162"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_COALESCED_PIO 162 ++#endif ++#if defined(KVM_CAP_HYPERV_ENLIGHTENED_VMCS) || (defined(HAVE_DECL_KVM_CAP_HYPERV_ENLIGHTENED_VMCS) && HAVE_DECL_KVM_CAP_HYPERV_ENLIGHTENED_VMCS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_HYPERV_ENLIGHTENED_VMCS) == (163), "KVM_CAP_HYPERV_ENLIGHTENED_VMCS != 163"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163 ++#endif ++#if defined(KVM_CAP_EXCEPTION_PAYLOAD) || (defined(HAVE_DECL_KVM_CAP_EXCEPTION_PAYLOAD) && HAVE_DECL_KVM_CAP_EXCEPTION_PAYLOAD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_EXCEPTION_PAYLOAD) == (164), "KVM_CAP_EXCEPTION_PAYLOAD != 164"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_EXCEPTION_PAYLOAD 164 ++#endif ++#if defined(KVM_CAP_ARM_VM_IPA_SIZE) || (defined(HAVE_DECL_KVM_CAP_ARM_VM_IPA_SIZE) && HAVE_DECL_KVM_CAP_ARM_VM_IPA_SIZE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((KVM_CAP_ARM_VM_IPA_SIZE) == (165), "KVM_CAP_ARM_VM_IPA_SIZE != 165"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define KVM_CAP_ARM_VM_IPA_SIZE 165 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat kvm_cap in mpers mode ++ ++# else ++ ++static ++const struct xlat kvm_cap[] = { ++ [KVM_CAP_IRQCHIP] = XLAT(KVM_CAP_IRQCHIP), ++ [KVM_CAP_HLT] = XLAT(KVM_CAP_HLT), ++ [KVM_CAP_MMU_SHADOW_CACHE_CONTROL] = XLAT(KVM_CAP_MMU_SHADOW_CACHE_CONTROL), ++ [KVM_CAP_USER_MEMORY] = XLAT(KVM_CAP_USER_MEMORY), ++ [KVM_CAP_SET_TSS_ADDR] = XLAT(KVM_CAP_SET_TSS_ADDR), ++ [KVM_CAP_VAPIC] = XLAT(KVM_CAP_VAPIC), ++ [KVM_CAP_EXT_CPUID] = XLAT(KVM_CAP_EXT_CPUID), ++ [KVM_CAP_CLOCKSOURCE] = XLAT(KVM_CAP_CLOCKSOURCE), ++ [KVM_CAP_NR_VCPUS] = XLAT(KVM_CAP_NR_VCPUS), ++ [KVM_CAP_NR_MEMSLOTS] = XLAT(KVM_CAP_NR_MEMSLOTS), ++ [KVM_CAP_PIT] = XLAT(KVM_CAP_PIT), ++ [KVM_CAP_NOP_IO_DELAY] = XLAT(KVM_CAP_NOP_IO_DELAY), ++ [KVM_CAP_PV_MMU] = XLAT(KVM_CAP_PV_MMU), ++ [KVM_CAP_MP_STATE] = XLAT(KVM_CAP_MP_STATE), ++ [KVM_CAP_COALESCED_MMIO] = XLAT(KVM_CAP_COALESCED_MMIO), ++ [KVM_CAP_SYNC_MMU] = XLAT(KVM_CAP_SYNC_MMU), ++ [KVM_CAP_IOMMU] = XLAT(KVM_CAP_IOMMU), ++ [KVM_CAP_DESTROY_MEMORY_REGION_WORKS] = XLAT(KVM_CAP_DESTROY_MEMORY_REGION_WORKS), ++ [KVM_CAP_USER_NMI] = XLAT(KVM_CAP_USER_NMI), ++ [KVM_CAP_SET_GUEST_DEBUG] = XLAT(KVM_CAP_SET_GUEST_DEBUG), ++ [KVM_CAP_REINJECT_CONTROL] = XLAT(KVM_CAP_REINJECT_CONTROL), ++ [KVM_CAP_IRQ_ROUTING] = XLAT(KVM_CAP_IRQ_ROUTING), ++ [KVM_CAP_IRQ_INJECT_STATUS] = XLAT(KVM_CAP_IRQ_INJECT_STATUS), ++ [KVM_CAP_ASSIGN_DEV_IRQ] = XLAT(KVM_CAP_ASSIGN_DEV_IRQ), ++ [KVM_CAP_JOIN_MEMORY_REGIONS_WORKS] = XLAT(KVM_CAP_JOIN_MEMORY_REGIONS_WORKS), ++ [KVM_CAP_MCE] = XLAT(KVM_CAP_MCE), ++ [KVM_CAP_IRQFD] = XLAT(KVM_CAP_IRQFD), ++ [KVM_CAP_PIT2] = XLAT(KVM_CAP_PIT2), ++ [KVM_CAP_SET_BOOT_CPU_ID] = XLAT(KVM_CAP_SET_BOOT_CPU_ID), ++ [KVM_CAP_PIT_STATE2] = XLAT(KVM_CAP_PIT_STATE2), ++ [KVM_CAP_IOEVENTFD] = XLAT(KVM_CAP_IOEVENTFD), ++ [KVM_CAP_SET_IDENTITY_MAP_ADDR] = XLAT(KVM_CAP_SET_IDENTITY_MAP_ADDR), ++ [KVM_CAP_XEN_HVM] = XLAT(KVM_CAP_XEN_HVM), ++ [KVM_CAP_ADJUST_CLOCK] = XLAT(KVM_CAP_ADJUST_CLOCK), ++ [KVM_CAP_INTERNAL_ERROR_DATA] = XLAT(KVM_CAP_INTERNAL_ERROR_DATA), ++ [KVM_CAP_VCPU_EVENTS] = XLAT(KVM_CAP_VCPU_EVENTS), ++ [KVM_CAP_S390_PSW] = XLAT(KVM_CAP_S390_PSW), ++ [KVM_CAP_PPC_SEGSTATE] = XLAT(KVM_CAP_PPC_SEGSTATE), ++ [KVM_CAP_HYPERV] = XLAT(KVM_CAP_HYPERV), ++ [KVM_CAP_HYPERV_VAPIC] = XLAT(KVM_CAP_HYPERV_VAPIC), ++ [KVM_CAP_HYPERV_SPIN] = XLAT(KVM_CAP_HYPERV_SPIN), ++ [KVM_CAP_PCI_SEGMENT] = XLAT(KVM_CAP_PCI_SEGMENT), ++ [KVM_CAP_PPC_PAIRED_SINGLES] = XLAT(KVM_CAP_PPC_PAIRED_SINGLES), ++ [KVM_CAP_INTR_SHADOW] = XLAT(KVM_CAP_INTR_SHADOW), ++ [KVM_CAP_DEBUGREGS] = XLAT(KVM_CAP_DEBUGREGS), ++ [KVM_CAP_X86_ROBUST_SINGLESTEP] = XLAT(KVM_CAP_X86_ROBUST_SINGLESTEP), ++ [KVM_CAP_PPC_OSI] = XLAT(KVM_CAP_PPC_OSI), ++ [KVM_CAP_PPC_UNSET_IRQ] = XLAT(KVM_CAP_PPC_UNSET_IRQ), ++ [KVM_CAP_ENABLE_CAP] = XLAT(KVM_CAP_ENABLE_CAP), ++ [KVM_CAP_XSAVE] = XLAT(KVM_CAP_XSAVE), ++ [KVM_CAP_XCRS] = XLAT(KVM_CAP_XCRS), ++ [KVM_CAP_PPC_GET_PVINFO] = XLAT(KVM_CAP_PPC_GET_PVINFO), ++ [KVM_CAP_PPC_IRQ_LEVEL] = XLAT(KVM_CAP_PPC_IRQ_LEVEL), ++ [KVM_CAP_ASYNC_PF] = XLAT(KVM_CAP_ASYNC_PF), ++ [KVM_CAP_TSC_CONTROL] = XLAT(KVM_CAP_TSC_CONTROL), ++ [KVM_CAP_GET_TSC_KHZ] = XLAT(KVM_CAP_GET_TSC_KHZ), ++ [KVM_CAP_PPC_BOOKE_SREGS] = XLAT(KVM_CAP_PPC_BOOKE_SREGS), ++ [KVM_CAP_SPAPR_TCE] = XLAT(KVM_CAP_SPAPR_TCE), ++ [KVM_CAP_PPC_SMT] = XLAT(KVM_CAP_PPC_SMT), ++ [KVM_CAP_PPC_RMA] = XLAT(KVM_CAP_PPC_RMA), ++ [KVM_CAP_MAX_VCPUS] = XLAT(KVM_CAP_MAX_VCPUS), ++ [KVM_CAP_PPC_HIOR] = XLAT(KVM_CAP_PPC_HIOR), ++ [KVM_CAP_PPC_PAPR] = XLAT(KVM_CAP_PPC_PAPR), ++ [KVM_CAP_SW_TLB] = XLAT(KVM_CAP_SW_TLB), ++ [KVM_CAP_ONE_REG] = XLAT(KVM_CAP_ONE_REG), ++ [KVM_CAP_S390_GMAP] = XLAT(KVM_CAP_S390_GMAP), ++ [KVM_CAP_TSC_DEADLINE_TIMER] = XLAT(KVM_CAP_TSC_DEADLINE_TIMER), ++ [KVM_CAP_S390_UCONTROL] = XLAT(KVM_CAP_S390_UCONTROL), ++ [KVM_CAP_SYNC_REGS] = XLAT(KVM_CAP_SYNC_REGS), ++ [KVM_CAP_PCI_2_3] = XLAT(KVM_CAP_PCI_2_3), ++ [KVM_CAP_KVMCLOCK_CTRL] = XLAT(KVM_CAP_KVMCLOCK_CTRL), ++ [KVM_CAP_SIGNAL_MSI] = XLAT(KVM_CAP_SIGNAL_MSI), ++ [KVM_CAP_PPC_GET_SMMU_INFO] = XLAT(KVM_CAP_PPC_GET_SMMU_INFO), ++ [KVM_CAP_S390_COW] = XLAT(KVM_CAP_S390_COW), ++ [KVM_CAP_PPC_ALLOC_HTAB] = XLAT(KVM_CAP_PPC_ALLOC_HTAB), ++ [KVM_CAP_READONLY_MEM] = XLAT(KVM_CAP_READONLY_MEM), ++ [KVM_CAP_IRQFD_RESAMPLE] = XLAT(KVM_CAP_IRQFD_RESAMPLE), ++ [KVM_CAP_PPC_BOOKE_WATCHDOG] = XLAT(KVM_CAP_PPC_BOOKE_WATCHDOG), ++ [KVM_CAP_PPC_HTAB_FD] = XLAT(KVM_CAP_PPC_HTAB_FD), ++ [KVM_CAP_S390_CSS_SUPPORT] = XLAT(KVM_CAP_S390_CSS_SUPPORT), ++ [KVM_CAP_PPC_EPR] = XLAT(KVM_CAP_PPC_EPR), ++ [KVM_CAP_ARM_PSCI] = XLAT(KVM_CAP_ARM_PSCI), ++ [KVM_CAP_ARM_SET_DEVICE_ADDR] = XLAT(KVM_CAP_ARM_SET_DEVICE_ADDR), ++ [KVM_CAP_DEVICE_CTRL] = XLAT(KVM_CAP_DEVICE_CTRL), ++ [KVM_CAP_IRQ_MPIC] = XLAT(KVM_CAP_IRQ_MPIC), ++ [KVM_CAP_PPC_RTAS] = XLAT(KVM_CAP_PPC_RTAS), ++ [KVM_CAP_IRQ_XICS] = XLAT(KVM_CAP_IRQ_XICS), ++ [KVM_CAP_ARM_EL1_32BIT] = XLAT(KVM_CAP_ARM_EL1_32BIT), ++ [KVM_CAP_SPAPR_MULTITCE] = XLAT(KVM_CAP_SPAPR_MULTITCE), ++ [KVM_CAP_EXT_EMUL_CPUID] = XLAT(KVM_CAP_EXT_EMUL_CPUID), ++ [KVM_CAP_HYPERV_TIME] = XLAT(KVM_CAP_HYPERV_TIME), ++ [KVM_CAP_IOAPIC_POLARITY_IGNORED] = XLAT(KVM_CAP_IOAPIC_POLARITY_IGNORED), ++ [KVM_CAP_ENABLE_CAP_VM] = XLAT(KVM_CAP_ENABLE_CAP_VM), ++ [KVM_CAP_S390_IRQCHIP] = XLAT(KVM_CAP_S390_IRQCHIP), ++ [KVM_CAP_IOEVENTFD_NO_LENGTH] = XLAT(KVM_CAP_IOEVENTFD_NO_LENGTH), ++ [KVM_CAP_VM_ATTRIBUTES] = XLAT(KVM_CAP_VM_ATTRIBUTES), ++ [KVM_CAP_ARM_PSCI_0_2] = XLAT(KVM_CAP_ARM_PSCI_0_2), ++ [KVM_CAP_PPC_FIXUP_HCALL] = XLAT(KVM_CAP_PPC_FIXUP_HCALL), ++ [KVM_CAP_PPC_ENABLE_HCALL] = XLAT(KVM_CAP_PPC_ENABLE_HCALL), ++ [KVM_CAP_CHECK_EXTENSION_VM] = XLAT(KVM_CAP_CHECK_EXTENSION_VM), ++ [KVM_CAP_S390_USER_SIGP] = XLAT(KVM_CAP_S390_USER_SIGP), ++ [KVM_CAP_S390_VECTOR_REGISTERS] = XLAT(KVM_CAP_S390_VECTOR_REGISTERS), ++ [KVM_CAP_S390_MEM_OP] = XLAT(KVM_CAP_S390_MEM_OP), ++ [KVM_CAP_S390_USER_STSI] = XLAT(KVM_CAP_S390_USER_STSI), ++ [KVM_CAP_S390_SKEYS] = XLAT(KVM_CAP_S390_SKEYS), ++ [KVM_CAP_MIPS_FPU] = XLAT(KVM_CAP_MIPS_FPU), ++ [KVM_CAP_MIPS_MSA] = XLAT(KVM_CAP_MIPS_MSA), ++ [KVM_CAP_S390_INJECT_IRQ] = XLAT(KVM_CAP_S390_INJECT_IRQ), ++ [KVM_CAP_S390_IRQ_STATE] = XLAT(KVM_CAP_S390_IRQ_STATE), ++ [KVM_CAP_PPC_HWRNG] = XLAT(KVM_CAP_PPC_HWRNG), ++ [KVM_CAP_DISABLE_QUIRKS] = XLAT(KVM_CAP_DISABLE_QUIRKS), ++ [KVM_CAP_X86_SMM] = XLAT(KVM_CAP_X86_SMM), ++ [KVM_CAP_MULTI_ADDRESS_SPACE] = XLAT(KVM_CAP_MULTI_ADDRESS_SPACE), ++ [KVM_CAP_GUEST_DEBUG_HW_BPS] = XLAT(KVM_CAP_GUEST_DEBUG_HW_BPS), ++ [KVM_CAP_GUEST_DEBUG_HW_WPS] = XLAT(KVM_CAP_GUEST_DEBUG_HW_WPS), ++ [KVM_CAP_SPLIT_IRQCHIP] = XLAT(KVM_CAP_SPLIT_IRQCHIP), ++ [KVM_CAP_IOEVENTFD_ANY_LENGTH] = XLAT(KVM_CAP_IOEVENTFD_ANY_LENGTH), ++ [KVM_CAP_HYPERV_SYNIC] = XLAT(KVM_CAP_HYPERV_SYNIC), ++ [KVM_CAP_S390_RI] = XLAT(KVM_CAP_S390_RI), ++ [KVM_CAP_SPAPR_TCE_64] = XLAT(KVM_CAP_SPAPR_TCE_64), ++ [KVM_CAP_ARM_PMU_V3] = XLAT(KVM_CAP_ARM_PMU_V3), ++ [KVM_CAP_VCPU_ATTRIBUTES] = XLAT(KVM_CAP_VCPU_ATTRIBUTES), ++ [KVM_CAP_MAX_VCPU_ID] = XLAT(KVM_CAP_MAX_VCPU_ID), ++ [KVM_CAP_X2APIC_API] = XLAT(KVM_CAP_X2APIC_API), ++ [KVM_CAP_S390_USER_INSTR0] = XLAT(KVM_CAP_S390_USER_INSTR0), ++ [KVM_CAP_MSI_DEVID] = XLAT(KVM_CAP_MSI_DEVID), ++ [KVM_CAP_PPC_HTM] = XLAT(KVM_CAP_PPC_HTM), ++ [KVM_CAP_SPAPR_RESIZE_HPT] = XLAT(KVM_CAP_SPAPR_RESIZE_HPT), ++ [KVM_CAP_PPC_MMU_RADIX] = XLAT(KVM_CAP_PPC_MMU_RADIX), ++ [KVM_CAP_PPC_MMU_HASH_V3] = XLAT(KVM_CAP_PPC_MMU_HASH_V3), ++ [KVM_CAP_IMMEDIATE_EXIT] = XLAT(KVM_CAP_IMMEDIATE_EXIT), ++ [KVM_CAP_MIPS_VZ] = XLAT(KVM_CAP_MIPS_VZ), ++ [KVM_CAP_MIPS_TE] = XLAT(KVM_CAP_MIPS_TE), ++ [KVM_CAP_MIPS_64BIT] = XLAT(KVM_CAP_MIPS_64BIT), ++ [KVM_CAP_S390_GS] = XLAT(KVM_CAP_S390_GS), ++ [KVM_CAP_S390_AIS] = XLAT(KVM_CAP_S390_AIS), ++ [KVM_CAP_SPAPR_TCE_VFIO] = XLAT(KVM_CAP_SPAPR_TCE_VFIO), ++ [KVM_CAP_X86_DISABLE_EXITS] = XLAT(KVM_CAP_X86_DISABLE_EXITS), ++ [KVM_CAP_ARM_USER_IRQ] = XLAT(KVM_CAP_ARM_USER_IRQ), ++ [KVM_CAP_S390_CMMA_MIGRATION] = XLAT(KVM_CAP_S390_CMMA_MIGRATION), ++ [KVM_CAP_PPC_FWNMI] = XLAT(KVM_CAP_PPC_FWNMI), ++ [KVM_CAP_PPC_SMT_POSSIBLE] = XLAT(KVM_CAP_PPC_SMT_POSSIBLE), ++ [KVM_CAP_HYPERV_SYNIC2] = XLAT(KVM_CAP_HYPERV_SYNIC2), ++ [KVM_CAP_HYPERV_VP_INDEX] = XLAT(KVM_CAP_HYPERV_VP_INDEX), ++ [KVM_CAP_S390_AIS_MIGRATION] = XLAT(KVM_CAP_S390_AIS_MIGRATION), ++ [KVM_CAP_PPC_GET_CPU_CHAR] = XLAT(KVM_CAP_PPC_GET_CPU_CHAR), ++ [KVM_CAP_S390_BPB] = XLAT(KVM_CAP_S390_BPB), ++ [KVM_CAP_GET_MSR_FEATURES] = XLAT(KVM_CAP_GET_MSR_FEATURES), ++ [KVM_CAP_HYPERV_EVENTFD] = XLAT(KVM_CAP_HYPERV_EVENTFD), ++ [KVM_CAP_HYPERV_TLBFLUSH] = XLAT(KVM_CAP_HYPERV_TLBFLUSH), ++ [KVM_CAP_S390_HPAGE_1M] = XLAT(KVM_CAP_S390_HPAGE_1M), ++ [KVM_CAP_NESTED_STATE] = XLAT(KVM_CAP_NESTED_STATE), ++ [KVM_CAP_ARM_INJECT_SERROR_ESR] = XLAT(KVM_CAP_ARM_INJECT_SERROR_ESR), ++ [KVM_CAP_MSR_PLATFORM_INFO] = XLAT(KVM_CAP_MSR_PLATFORM_INFO), ++ [KVM_CAP_PPC_NESTED_HV] = XLAT(KVM_CAP_PPC_NESTED_HV), ++ [KVM_CAP_HYPERV_SEND_IPI] = XLAT(KVM_CAP_HYPERV_SEND_IPI), ++ [KVM_CAP_COALESCED_PIO] = XLAT(KVM_CAP_COALESCED_PIO), ++ [KVM_CAP_HYPERV_ENLIGHTENED_VMCS] = XLAT(KVM_CAP_HYPERV_ENLIGHTENED_VMCS), ++ [KVM_CAP_EXCEPTION_PAYLOAD] = XLAT(KVM_CAP_EXCEPTION_PAYLOAD), ++ [KVM_CAP_ARM_VM_IPA_SIZE] = XLAT(KVM_CAP_ARM_VM_IPA_SIZE), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/nbd_ioctl_cmds.h b/xlat/nbd_ioctl_cmds.h +new file mode 100644 +index 0000000..840dc8e +--- /dev/null ++++ b/xlat/nbd_ioctl_cmds.h +@@ -0,0 +1,110 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/nbd_ioctl_cmds.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(NBD_SET_SOCK) || (defined(HAVE_DECL_NBD_SET_SOCK) && HAVE_DECL_NBD_SET_SOCK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_SOCK) == (_IO( 0xab, 0 )), "NBD_SET_SOCK != _IO( 0xab, 0 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_SOCK _IO( 0xab, 0 ) ++#endif ++#if defined(NBD_SET_BLKSIZE) || (defined(HAVE_DECL_NBD_SET_BLKSIZE) && HAVE_DECL_NBD_SET_BLKSIZE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_BLKSIZE) == (_IO( 0xab, 1 )), "NBD_SET_BLKSIZE != _IO( 0xab, 1 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_BLKSIZE _IO( 0xab, 1 ) ++#endif ++#if defined(NBD_SET_SIZE) || (defined(HAVE_DECL_NBD_SET_SIZE) && HAVE_DECL_NBD_SET_SIZE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_SIZE) == (_IO( 0xab, 2 )), "NBD_SET_SIZE != _IO( 0xab, 2 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_SIZE _IO( 0xab, 2 ) ++#endif ++#if defined(NBD_DO_IT) || (defined(HAVE_DECL_NBD_DO_IT) && HAVE_DECL_NBD_DO_IT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_DO_IT) == (_IO( 0xab, 3 )), "NBD_DO_IT != _IO( 0xab, 3 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_DO_IT _IO( 0xab, 3 ) ++#endif ++#if defined(NBD_CLEAR_SOCK) || (defined(HAVE_DECL_NBD_CLEAR_SOCK) && HAVE_DECL_NBD_CLEAR_SOCK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_CLEAR_SOCK) == (_IO( 0xab, 4 )), "NBD_CLEAR_SOCK != _IO( 0xab, 4 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_CLEAR_SOCK _IO( 0xab, 4 ) ++#endif ++#if defined(NBD_CLEAR_QUE) || (defined(HAVE_DECL_NBD_CLEAR_QUE) && HAVE_DECL_NBD_CLEAR_QUE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_CLEAR_QUE) == (_IO( 0xab, 5 )), "NBD_CLEAR_QUE != _IO( 0xab, 5 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_CLEAR_QUE _IO( 0xab, 5 ) ++#endif ++#if defined(NBD_PRINT_DEBUG) || (defined(HAVE_DECL_NBD_PRINT_DEBUG) && HAVE_DECL_NBD_PRINT_DEBUG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_PRINT_DEBUG) == (_IO( 0xab, 6 )), "NBD_PRINT_DEBUG != _IO( 0xab, 6 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_PRINT_DEBUG _IO( 0xab, 6 ) ++#endif ++#if defined(NBD_SET_SIZE_BLOCKS) || (defined(HAVE_DECL_NBD_SET_SIZE_BLOCKS) && HAVE_DECL_NBD_SET_SIZE_BLOCKS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_SIZE_BLOCKS) == (_IO( 0xab, 7 )), "NBD_SET_SIZE_BLOCKS != _IO( 0xab, 7 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 ) ++#endif ++#if defined(NBD_DISCONNECT) || (defined(HAVE_DECL_NBD_DISCONNECT) && HAVE_DECL_NBD_DISCONNECT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_DISCONNECT) == (_IO( 0xab, 8 )), "NBD_DISCONNECT != _IO( 0xab, 8 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_DISCONNECT _IO( 0xab, 8 ) ++#endif ++#if defined(NBD_SET_TIMEOUT) || (defined(HAVE_DECL_NBD_SET_TIMEOUT) && HAVE_DECL_NBD_SET_TIMEOUT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_TIMEOUT) == (_IO( 0xab, 9 )), "NBD_SET_TIMEOUT != _IO( 0xab, 9 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_TIMEOUT _IO( 0xab, 9 ) ++#endif ++#if defined(NBD_SET_FLAGS) || (defined(HAVE_DECL_NBD_SET_FLAGS) && HAVE_DECL_NBD_SET_FLAGS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_SET_FLAGS) == (_IO( 0xab, 10)), "NBD_SET_FLAGS != _IO( 0xab, 10)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_SET_FLAGS _IO( 0xab, 10) ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat nbd_ioctl_cmds in mpers mode ++ ++# else ++ ++static ++const struct xlat nbd_ioctl_cmds[] = { ++ XLAT(NBD_SET_SOCK), ++ XLAT(NBD_SET_BLKSIZE), ++ XLAT(NBD_SET_SIZE), ++ XLAT(NBD_DO_IT), ++ XLAT(NBD_CLEAR_SOCK), ++ XLAT(NBD_CLEAR_QUE), ++ XLAT(NBD_PRINT_DEBUG), ++ XLAT(NBD_SET_SIZE_BLOCKS), ++ XLAT(NBD_DISCONNECT), ++ XLAT(NBD_SET_TIMEOUT), ++ XLAT(NBD_SET_FLAGS), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/nbd_ioctl_flags.h b/xlat/nbd_ioctl_flags.h +new file mode 100644 +index 0000000..a1311a2 +--- /dev/null ++++ b/xlat/nbd_ioctl_flags.h +@@ -0,0 +1,128 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/nbd_ioctl_flags.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(NBD_FLAG_HAS_FLAGS) || (defined(HAVE_DECL_NBD_FLAG_HAS_FLAGS) && HAVE_DECL_NBD_FLAG_HAS_FLAGS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_HAS_FLAGS) == ((1 << 0)), "NBD_FLAG_HAS_FLAGS != (1 << 0)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_HAS_FLAGS (1 << 0) ++#endif ++#if defined(NBD_FLAG_READ_ONLY) || (defined(HAVE_DECL_NBD_FLAG_READ_ONLY) && HAVE_DECL_NBD_FLAG_READ_ONLY) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_READ_ONLY) == ((1 << 1)), "NBD_FLAG_READ_ONLY != (1 << 1)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_READ_ONLY (1 << 1) ++#endif ++#if defined(NBD_FLAG_SEND_FLUSH) || (defined(HAVE_DECL_NBD_FLAG_SEND_FLUSH) && HAVE_DECL_NBD_FLAG_SEND_FLUSH) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_FLUSH) == ((1 << 2)), "NBD_FLAG_SEND_FLUSH != (1 << 2)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_FLUSH (1 << 2) ++#endif ++#if defined(NBD_FLAG_SEND_FUA) || (defined(HAVE_DECL_NBD_FLAG_SEND_FUA) && HAVE_DECL_NBD_FLAG_SEND_FUA) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_FUA) == ((1 << 3)), "NBD_FLAG_SEND_FUA != (1 << 3)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_FUA (1 << 3) ++#endif ++#if defined(NBD_FLAG_ROTATIONAL) || (defined(HAVE_DECL_NBD_FLAG_ROTATIONAL) && HAVE_DECL_NBD_FLAG_ROTATIONAL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_ROTATIONAL) == ((1 << 4)), "NBD_FLAG_ROTATIONAL != (1 << 4)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_ROTATIONAL (1 << 4) ++#endif ++#if defined(NBD_FLAG_SEND_TRIM) || (defined(HAVE_DECL_NBD_FLAG_SEND_TRIM) && HAVE_DECL_NBD_FLAG_SEND_TRIM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_TRIM) == ((1 << 5)), "NBD_FLAG_SEND_TRIM != (1 << 5)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_TRIM (1 << 5) ++#endif ++#if defined(NBD_FLAG_SEND_WRITE_ZEROES) || (defined(HAVE_DECL_NBD_FLAG_SEND_WRITE_ZEROES) && HAVE_DECL_NBD_FLAG_SEND_WRITE_ZEROES) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_WRITE_ZEROES) == ((1 << 6)), "NBD_FLAG_SEND_WRITE_ZEROES != (1 << 6)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_WRITE_ZEROES (1 << 6) ++#endif ++#if defined(NBD_FLAG_SEND_DF) || (defined(HAVE_DECL_NBD_FLAG_SEND_DF) && HAVE_DECL_NBD_FLAG_SEND_DF) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_DF) == ((1 << 7)), "NBD_FLAG_SEND_DF != (1 << 7)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_DF (1 << 7) ++#endif ++#if defined(NBD_FLAG_CAN_MULTI_CONN) || (defined(HAVE_DECL_NBD_FLAG_CAN_MULTI_CONN) && HAVE_DECL_NBD_FLAG_CAN_MULTI_CONN) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_CAN_MULTI_CONN) == ((1 << 8)), "NBD_FLAG_CAN_MULTI_CONN != (1 << 8)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_CAN_MULTI_CONN (1 << 8) ++#endif ++#if defined(NBD_FLAG_SEND_RESIZE) || (defined(HAVE_DECL_NBD_FLAG_SEND_RESIZE) && HAVE_DECL_NBD_FLAG_SEND_RESIZE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_RESIZE) == ((1 << 9)), "NBD_FLAG_SEND_RESIZE != (1 << 9)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_RESIZE (1 << 9) ++#endif ++#if defined(NBD_FLAG_SEND_CACHE) || (defined(HAVE_DECL_NBD_FLAG_SEND_CACHE) && HAVE_DECL_NBD_FLAG_SEND_CACHE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NBD_FLAG_SEND_CACHE) == ((1 << 10)), "NBD_FLAG_SEND_CACHE != (1 << 10)"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NBD_FLAG_SEND_CACHE (1 << 10) ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat nbd_ioctl_flags in mpers mode ++ ++# else ++ ++static ++const struct xlat nbd_ioctl_flags[] = { ++/* ++* Some flags are not defined in , but are passed anyway. ++* These flags are sent from nbd-server to the client, and the client ++* passes them to the kernel unmodified after parsing. Both the client ++* and the kernel ignore flags unknown to them. ++*/ ++ ++ ++ XLAT(NBD_FLAG_HAS_FLAGS), ++ ++ XLAT(NBD_FLAG_READ_ONLY), ++ ++ XLAT(NBD_FLAG_SEND_FLUSH), ++ ++ XLAT(NBD_FLAG_SEND_FUA), ++ ++ XLAT(NBD_FLAG_ROTATIONAL), ++ ++ XLAT(NBD_FLAG_SEND_TRIM), ++ ++ XLAT(NBD_FLAG_SEND_WRITE_ZEROES), ++ ++ XLAT(NBD_FLAG_SEND_DF), ++ ++ XLAT(NBD_FLAG_CAN_MULTI_CONN), ++ ++ XLAT(NBD_FLAG_SEND_RESIZE), ++ ++ XLAT(NBD_FLAG_SEND_CACHE), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/pr_spec_cmds.h b/xlat/pr_spec_cmds.h +index 7724d24..9fa9f65 100644 +--- a/xlat/pr_spec_cmds.h ++++ b/xlat/pr_spec_cmds.h +@@ -10,6 +10,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define PR_SPEC_STORE_BYPASS 0 + #endif ++#if defined(PR_SPEC_INDIRECT_BRANCH) || (defined(HAVE_DECL_PR_SPEC_INDIRECT_BRANCH) && HAVE_DECL_PR_SPEC_INDIRECT_BRANCH) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((PR_SPEC_INDIRECT_BRANCH) == (1), "PR_SPEC_INDIRECT_BRANCH != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define PR_SPEC_INDIRECT_BRANCH 1 ++#endif + + #ifndef XLAT_MACROS_ONLY + +@@ -21,7 +28,8 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + + static + const struct xlat pr_spec_cmds[] = { +- XLAT(PR_SPEC_STORE_BYPASS), ++ [PR_SPEC_STORE_BYPASS] = XLAT(PR_SPEC_STORE_BYPASS), ++ [PR_SPEC_INDIRECT_BRANCH] = XLAT(PR_SPEC_INDIRECT_BRANCH), + XLAT_END + }; + +diff --git a/xlat/ptrace_cmds.h b/xlat/ptrace_cmds.h +index 36b4eae..77faa90 100644 +--- a/xlat/ptrace_cmds.h ++++ b/xlat/ptrace_cmds.h +@@ -6,13 +6,8 @@ + + #ifndef XLAT_MACROS_ONLY + +-# ifdef IN_MPERS ++# ifndef IN_MPERS + +-# error static const struct xlat ptrace_cmds in mpers mode +- +-# else +- +-static + const struct xlat ptrace_cmds[] = { + #if defined(PTRACE_TRACEME) || (defined(HAVE_DECL_PTRACE_TRACEME) && HAVE_DECL_PTRACE_TRACEME) + XLAT(PTRACE_TRACEME), +diff --git a/xlat/random_ioctl_cmds.h b/xlat/random_ioctl_cmds.h +new file mode 100644 +index 0000000..e556474 +--- /dev/null ++++ b/xlat/random_ioctl_cmds.h +@@ -0,0 +1,78 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/random_ioctl_cmds.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(RNDGETENTCNT) || (defined(HAVE_DECL_RNDGETENTCNT) && HAVE_DECL_RNDGETENTCNT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDGETENTCNT) == (_IOR( 'R', 0x00, int )), "RNDGETENTCNT != _IOR( 'R', 0x00, int )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDGETENTCNT _IOR( 'R', 0x00, int ) ++#endif ++#if defined(RNDADDTOENTCNT) || (defined(HAVE_DECL_RNDADDTOENTCNT) && HAVE_DECL_RNDADDTOENTCNT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDADDTOENTCNT) == (_IOW( 'R', 0x01, int )), "RNDADDTOENTCNT != _IOW( 'R', 0x01, int )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDADDTOENTCNT _IOW( 'R', 0x01, int ) ++#endif ++#if defined(RNDGETPOOL) || (defined(HAVE_DECL_RNDGETPOOL) && HAVE_DECL_RNDGETPOOL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDGETPOOL) == (_IOR( 'R', 0x02, int [2] )), "RNDGETPOOL != _IOR( 'R', 0x02, int [2] )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDGETPOOL _IOR( 'R', 0x02, int [2] ) ++#endif ++#if defined(RNDADDENTROPY) || (defined(HAVE_DECL_RNDADDENTROPY) && HAVE_DECL_RNDADDENTROPY) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDADDENTROPY) == (_IOW( 'R', 0x03, int [2] )), "RNDADDENTROPY != _IOW( 'R', 0x03, int [2] )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDADDENTROPY _IOW( 'R', 0x03, int [2] ) ++#endif ++#if defined(RNDZAPENTCNT) || (defined(HAVE_DECL_RNDZAPENTCNT) && HAVE_DECL_RNDZAPENTCNT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDZAPENTCNT) == (_IO( 'R', 0x04 )), "RNDZAPENTCNT != _IO( 'R', 0x04 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDZAPENTCNT _IO( 'R', 0x04 ) ++#endif ++#if defined(RNDCLEARPOOL) || (defined(HAVE_DECL_RNDCLEARPOOL) && HAVE_DECL_RNDCLEARPOOL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDCLEARPOOL) == (_IO( 'R', 0x06 )), "RNDCLEARPOOL != _IO( 'R', 0x06 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDCLEARPOOL _IO( 'R', 0x06 ) ++#endif ++#if defined(RNDRESEEDCRNG) || (defined(HAVE_DECL_RNDRESEEDCRNG) && HAVE_DECL_RNDRESEEDCRNG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RNDRESEEDCRNG) == (_IO( 'R', 0x07 )), "RNDRESEEDCRNG != _IO( 'R', 0x07 )"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RNDRESEEDCRNG _IO( 'R', 0x07 ) ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat random_ioctl_cmds in mpers mode ++ ++# else ++ ++static ++const struct xlat random_ioctl_cmds[] = { ++ XLAT(RNDGETENTCNT), ++ XLAT(RNDADDTOENTCNT), ++ XLAT(RNDGETPOOL), ++ XLAT(RNDADDENTROPY), ++ XLAT(RNDZAPENTCNT), ++ XLAT(RNDCLEARPOOL), ++ XLAT(RNDRESEEDCRNG), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/rtnl_ifla_brport_attrs.h b/xlat/rtnl_ifla_brport_attrs.h +index 07d2c2d..fdef1af 100644 +--- a/xlat/rtnl_ifla_brport_attrs.h ++++ b/xlat/rtnl_ifla_brport_attrs.h +@@ -241,6 +241,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define IFLA_BRPORT_ISOLATED 33 + #endif ++#if defined(IFLA_BRPORT_BACKUP_PORT) || (defined(HAVE_DECL_IFLA_BRPORT_BACKUP_PORT) && HAVE_DECL_IFLA_BRPORT_BACKUP_PORT) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_BRPORT_BACKUP_PORT) == (34), "IFLA_BRPORT_BACKUP_PORT != 34"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_BRPORT_BACKUP_PORT 34 ++#endif + + #ifndef XLAT_MACROS_ONLY + +@@ -286,6 +293,7 @@ const struct xlat rtnl_ifla_brport_attrs[] = { + XLAT(IFLA_BRPORT_GROUP_FWD_MASK), + XLAT(IFLA_BRPORT_NEIGH_SUPPRESS), + XLAT(IFLA_BRPORT_ISOLATED), ++ XLAT(IFLA_BRPORT_BACKUP_PORT), + XLAT_END + }; + +diff --git a/xlat/rtnl_ifla_xdp_attached_mode.h b/xlat/rtnl_ifla_xdp_attached_mode.h +new file mode 100644 +index 0000000..bfa9dee +--- /dev/null ++++ b/xlat/rtnl_ifla_xdp_attached_mode.h +@@ -0,0 +1,62 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/rtnl_ifla_xdp_attached_mode.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(XDP_ATTACHED_NONE) || (defined(HAVE_DECL_XDP_ATTACHED_NONE) && HAVE_DECL_XDP_ATTACHED_NONE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_ATTACHED_NONE) == (0), "XDP_ATTACHED_NONE != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_ATTACHED_NONE 0 ++#endif ++#if defined(XDP_ATTACHED_DRV) || (defined(HAVE_DECL_XDP_ATTACHED_DRV) && HAVE_DECL_XDP_ATTACHED_DRV) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_ATTACHED_DRV) == (1), "XDP_ATTACHED_DRV != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_ATTACHED_DRV 1 ++#endif ++#if defined(XDP_ATTACHED_SKB) || (defined(HAVE_DECL_XDP_ATTACHED_SKB) && HAVE_DECL_XDP_ATTACHED_SKB) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_ATTACHED_SKB) == (2), "XDP_ATTACHED_SKB != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_ATTACHED_SKB 2 ++#endif ++#if defined(XDP_ATTACHED_HW) || (defined(HAVE_DECL_XDP_ATTACHED_HW) && HAVE_DECL_XDP_ATTACHED_HW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_ATTACHED_HW) == (3), "XDP_ATTACHED_HW != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_ATTACHED_HW 3 ++#endif ++#if defined(XDP_ATTACHED_MULTI) || (defined(HAVE_DECL_XDP_ATTACHED_MULTI) && HAVE_DECL_XDP_ATTACHED_MULTI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_ATTACHED_MULTI) == (4), "XDP_ATTACHED_MULTI != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_ATTACHED_MULTI 4 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat rtnl_ifla_xdp_attached_mode in mpers mode ++ ++# else ++ ++static ++const struct xlat rtnl_ifla_xdp_attached_mode[] = { ++ [XDP_ATTACHED_NONE] = XLAT(XDP_ATTACHED_NONE), ++ [XDP_ATTACHED_DRV] = XLAT(XDP_ATTACHED_DRV), ++ [XDP_ATTACHED_SKB] = XLAT(XDP_ATTACHED_SKB), ++ [XDP_ATTACHED_HW] = XLAT(XDP_ATTACHED_HW), ++ [XDP_ATTACHED_MULTI] = XLAT(XDP_ATTACHED_MULTI), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/rtnl_ifla_xdp_attrs.h b/xlat/rtnl_ifla_xdp_attrs.h +index 3972d8e..dc9018f 100644 +--- a/xlat/rtnl_ifla_xdp_attrs.h ++++ b/xlat/rtnl_ifla_xdp_attrs.h +@@ -38,6 +38,27 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define IFLA_XDP_PROG_ID 4 + #endif ++#if defined(IFLA_XDP_DRV_PROG_ID) || (defined(HAVE_DECL_IFLA_XDP_DRV_PROG_ID) && HAVE_DECL_IFLA_XDP_DRV_PROG_ID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_XDP_DRV_PROG_ID) == (5), "IFLA_XDP_DRV_PROG_ID != 5"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_XDP_DRV_PROG_ID 5 ++#endif ++#if defined(IFLA_XDP_SKB_PROG_ID) || (defined(HAVE_DECL_IFLA_XDP_SKB_PROG_ID) && HAVE_DECL_IFLA_XDP_SKB_PROG_ID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_XDP_SKB_PROG_ID) == (6), "IFLA_XDP_SKB_PROG_ID != 6"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_XDP_SKB_PROG_ID 6 ++#endif ++#if defined(IFLA_XDP_HW_PROG_ID) || (defined(HAVE_DECL_IFLA_XDP_HW_PROG_ID) && HAVE_DECL_IFLA_XDP_HW_PROG_ID) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_XDP_HW_PROG_ID) == (7), "IFLA_XDP_HW_PROG_ID != 7"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_XDP_HW_PROG_ID 7 ++#endif + + #ifndef XLAT_MACROS_ONLY + +@@ -54,6 +75,9 @@ const struct xlat rtnl_ifla_xdp_attrs[] = { + XLAT(IFLA_XDP_ATTACHED), + XLAT(IFLA_XDP_FLAGS), + XLAT(IFLA_XDP_PROG_ID), ++ XLAT(IFLA_XDP_DRV_PROG_ID), ++ XLAT(IFLA_XDP_SKB_PROG_ID), ++ XLAT(IFLA_XDP_HW_PROG_ID), + XLAT_END + }; + +diff --git a/xlat/rtnl_link_attrs.h b/xlat/rtnl_link_attrs.h +index 2ce3ee4..6a29860 100644 +--- a/xlat/rtnl_link_attrs.h ++++ b/xlat/rtnl_link_attrs.h +@@ -353,6 +353,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define IFLA_NEW_IFINDEX 49 + #endif ++#if defined(IFLA_MIN_MTU) || (defined(HAVE_DECL_IFLA_MIN_MTU) && HAVE_DECL_IFLA_MIN_MTU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_MIN_MTU) == (50), "IFLA_MIN_MTU != 50"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_MIN_MTU 50 ++#endif ++#if defined(IFLA_MAX_MTU) || (defined(HAVE_DECL_IFLA_MAX_MTU) && HAVE_DECL_IFLA_MAX_MTU) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((IFLA_MAX_MTU) == (51), "IFLA_MAX_MTU != 51"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define IFLA_MAX_MTU 51 ++#endif + + #ifndef XLAT_MACROS_ONLY + +@@ -414,6 +428,8 @@ const struct xlat rtnl_link_attrs[] = { + XLAT(IFLA_CARRIER_UP_COUNT), + XLAT(IFLA_CARRIER_DOWN_COUNT), + XLAT(IFLA_NEW_IFINDEX), ++ XLAT(IFLA_MIN_MTU), ++ XLAT(IFLA_MAX_MTU), + XLAT_END + }; + +diff --git a/xlat/rtnl_netconf_attrs.h b/xlat/rtnl_netconf_attrs.h +index 194aa58..d1d7c87 100644 +--- a/xlat/rtnl_netconf_attrs.h ++++ b/xlat/rtnl_netconf_attrs.h +@@ -59,6 +59,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define NETCONFA_INPUT 7 + #endif ++#if defined(NETCONFA_BC_FORWARDING) || (defined(HAVE_DECL_NETCONFA_BC_FORWARDING) && HAVE_DECL_NETCONFA_BC_FORWARDING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((NETCONFA_BC_FORWARDING) == (8), "NETCONFA_BC_FORWARDING != 8"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define NETCONFA_BC_FORWARDING 8 ++#endif + + #ifndef XLAT_MACROS_ONLY + +@@ -78,6 +85,7 @@ const struct xlat rtnl_netconf_attrs[] = { + XLAT(NETCONFA_PROXY_NEIGH), + XLAT(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN), + XLAT(NETCONFA_INPUT), ++ XLAT(NETCONFA_BC_FORWARDING), + XLAT_END + }; + +diff --git a/xlat/smc_decl_codes.h b/xlat/smc_decl_codes.h +new file mode 100644 +index 0000000..2f8f859 +--- /dev/null ++++ b/xlat/smc_decl_codes.h +@@ -0,0 +1,151 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/smc_decl_codes.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(SMC_CLC_DECL_MEM) || (defined(HAVE_DECL_SMC_CLC_DECL_MEM) && HAVE_DECL_SMC_CLC_DECL_MEM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_MEM) == (0x01010000), "SMC_CLC_DECL_MEM != 0x01010000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_MEM 0x01010000 ++#endif ++#if defined(SMC_CLC_DECL_TIMEOUT_CL) || (defined(HAVE_DECL_SMC_CLC_DECL_TIMEOUT_CL) && HAVE_DECL_SMC_CLC_DECL_TIMEOUT_CL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_TIMEOUT_CL) == (0x02010000), "SMC_CLC_DECL_TIMEOUT_CL != 0x02010000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_TIMEOUT_CL 0x02010000 ++#endif ++#if defined(SMC_CLC_DECL_TIMEOUT_AL) || (defined(HAVE_DECL_SMC_CLC_DECL_TIMEOUT_AL) && HAVE_DECL_SMC_CLC_DECL_TIMEOUT_AL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_TIMEOUT_AL) == (0x02020000), "SMC_CLC_DECL_TIMEOUT_AL != 0x02020000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_TIMEOUT_AL 0x02020000 ++#endif ++#if defined(SMC_CLC_DECL_CNFERR) || (defined(HAVE_DECL_SMC_CLC_DECL_CNFERR) && HAVE_DECL_SMC_CLC_DECL_CNFERR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_CNFERR) == (0x03000000), "SMC_CLC_DECL_CNFERR != 0x03000000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_CNFERR 0x03000000 ++#endif ++#if defined(SMC_CLC_DECL_PEERNOSMC) || (defined(HAVE_DECL_SMC_CLC_DECL_PEERNOSMC) && HAVE_DECL_SMC_CLC_DECL_PEERNOSMC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_PEERNOSMC) == (0x03010000), "SMC_CLC_DECL_PEERNOSMC != 0x03010000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_PEERNOSMC 0x03010000 ++#endif ++#if defined(SMC_CLC_DECL_IPSEC) || (defined(HAVE_DECL_SMC_CLC_DECL_IPSEC) && HAVE_DECL_SMC_CLC_DECL_IPSEC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_IPSEC) == (0x03020000), "SMC_CLC_DECL_IPSEC != 0x03020000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_IPSEC 0x03020000 ++#endif ++#if defined(SMC_CLC_DECL_NOSMCDEV) || (defined(HAVE_DECL_SMC_CLC_DECL_NOSMCDEV) && HAVE_DECL_SMC_CLC_DECL_NOSMCDEV) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_NOSMCDEV) == (0x03030000), "SMC_CLC_DECL_NOSMCDEV != 0x03030000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_NOSMCDEV 0x03030000 ++#endif ++#if defined(SMC_CLC_DECL_MODEUNSUPP) || (defined(HAVE_DECL_SMC_CLC_DECL_MODEUNSUPP) && HAVE_DECL_SMC_CLC_DECL_MODEUNSUPP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_MODEUNSUPP) == (0x03040000), "SMC_CLC_DECL_MODEUNSUPP != 0x03040000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_MODEUNSUPP 0x03040000 ++#endif ++#if defined(SMC_CLC_DECL_RMBE_EC) || (defined(HAVE_DECL_SMC_CLC_DECL_RMBE_EC) && HAVE_DECL_SMC_CLC_DECL_RMBE_EC) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_RMBE_EC) == (0x03050000), "SMC_CLC_DECL_RMBE_EC != 0x03050000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_RMBE_EC 0x03050000 ++#endif ++#if defined(SMC_CLC_DECL_OPTUNSUPP) || (defined(HAVE_DECL_SMC_CLC_DECL_OPTUNSUPP) && HAVE_DECL_SMC_CLC_DECL_OPTUNSUPP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_OPTUNSUPP) == (0x03060000), "SMC_CLC_DECL_OPTUNSUPP != 0x03060000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_OPTUNSUPP 0x03060000 ++#endif ++#if defined(SMC_CLC_DECL_SYNCERR) || (defined(HAVE_DECL_SMC_CLC_DECL_SYNCERR) && HAVE_DECL_SMC_CLC_DECL_SYNCERR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_SYNCERR) == (0x04000000), "SMC_CLC_DECL_SYNCERR != 0x04000000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_SYNCERR 0x04000000 ++#endif ++#if defined(SMC_CLC_DECL_PEERDECL) || (defined(HAVE_DECL_SMC_CLC_DECL_PEERDECL) && HAVE_DECL_SMC_CLC_DECL_PEERDECL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_PEERDECL) == (0x05000000), "SMC_CLC_DECL_PEERDECL != 0x05000000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_PEERDECL 0x05000000 ++#endif ++#if defined(SMC_CLC_DECL_INTERR) || (defined(HAVE_DECL_SMC_CLC_DECL_INTERR) && HAVE_DECL_SMC_CLC_DECL_INTERR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_INTERR) == (0x99990000), "SMC_CLC_DECL_INTERR != 0x99990000"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_INTERR 0x99990000 ++#endif ++#if defined(SMC_CLC_DECL_ERR_RTOK) || (defined(HAVE_DECL_SMC_CLC_DECL_ERR_RTOK) && HAVE_DECL_SMC_CLC_DECL_ERR_RTOK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_ERR_RTOK) == (0x99990001), "SMC_CLC_DECL_ERR_RTOK != 0x99990001"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_ERR_RTOK 0x99990001 ++#endif ++#if defined(SMC_CLC_DECL_ERR_RDYLNK) || (defined(HAVE_DECL_SMC_CLC_DECL_ERR_RDYLNK) && HAVE_DECL_SMC_CLC_DECL_ERR_RDYLNK) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_ERR_RDYLNK) == (0x99990002), "SMC_CLC_DECL_ERR_RDYLNK != 0x99990002"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_ERR_RDYLNK 0x99990002 ++#endif ++#if defined(SMC_CLC_DECL_ERR_REGRMB) || (defined(HAVE_DECL_SMC_CLC_DECL_ERR_REGRMB) && HAVE_DECL_SMC_CLC_DECL_ERR_REGRMB) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_CLC_DECL_ERR_REGRMB) == (0x99990003), "SMC_CLC_DECL_ERR_REGRMB != 0x99990003"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_CLC_DECL_ERR_REGRMB 0x99990003 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat smc_decl_codes in mpers mode ++ ++# else ++ ++static ++const struct xlat smc_decl_codes[] = { ++ ++ XLAT(SMC_CLC_DECL_MEM), ++ XLAT(SMC_CLC_DECL_TIMEOUT_CL), ++ XLAT(SMC_CLC_DECL_TIMEOUT_AL), ++ XLAT(SMC_CLC_DECL_CNFERR), ++ XLAT(SMC_CLC_DECL_PEERNOSMC), ++ XLAT(SMC_CLC_DECL_IPSEC), ++ XLAT(SMC_CLC_DECL_NOSMCDEV), ++ XLAT(SMC_CLC_DECL_MODEUNSUPP), ++ XLAT(SMC_CLC_DECL_RMBE_EC), ++ XLAT(SMC_CLC_DECL_OPTUNSUPP), ++ XLAT(SMC_CLC_DECL_SYNCERR), ++ XLAT(SMC_CLC_DECL_PEERDECL), ++ XLAT(SMC_CLC_DECL_INTERR), ++ XLAT(SMC_CLC_DECL_ERR_RTOK), ++ XLAT(SMC_CLC_DECL_ERR_RDYLNK), ++ XLAT(SMC_CLC_DECL_ERR_REGRMB), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/smc_diag_mode.h b/xlat/smc_diag_mode.h +new file mode 100644 +index 0000000..7cbddcd +--- /dev/null ++++ b/xlat/smc_diag_mode.h +@@ -0,0 +1,46 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/smc_diag_mode.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(SMC_DIAG_MODE_SMCR) || (defined(HAVE_DECL_SMC_DIAG_MODE_SMCR) && HAVE_DECL_SMC_DIAG_MODE_SMCR) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_DIAG_MODE_SMCR) == (0), "SMC_DIAG_MODE_SMCR != 0"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_DIAG_MODE_SMCR 0 ++#endif ++#if defined(SMC_DIAG_MODE_FALLBACK_TCP) || (defined(HAVE_DECL_SMC_DIAG_MODE_FALLBACK_TCP) && HAVE_DECL_SMC_DIAG_MODE_FALLBACK_TCP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_DIAG_MODE_FALLBACK_TCP) == (1), "SMC_DIAG_MODE_FALLBACK_TCP != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_DIAG_MODE_FALLBACK_TCP 1 ++#endif ++#if defined(SMC_DIAG_MODE_SMCD) || (defined(HAVE_DECL_SMC_DIAG_MODE_SMCD) && HAVE_DECL_SMC_DIAG_MODE_SMCD) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SMC_DIAG_MODE_SMCD) == (2), "SMC_DIAG_MODE_SMCD != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SMC_DIAG_MODE_SMCD 2 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat smc_diag_mode in mpers mode ++ ++# else ++ ++static ++const struct xlat smc_diag_mode[] = { ++ [SMC_DIAG_MODE_SMCR] = XLAT(SMC_DIAG_MODE_SMCR), ++ [SMC_DIAG_MODE_FALLBACK_TCP] = XLAT(SMC_DIAG_MODE_FALLBACK_TCP), ++ [SMC_DIAG_MODE_SMCD] = XLAT(SMC_DIAG_MODE_SMCD), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/sock_ax25_options.h b/xlat/sock_ax25_options.h +new file mode 100644 +index 0000000..11c833d +--- /dev/null ++++ b/xlat/sock_ax25_options.h +@@ -0,0 +1,116 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/sock_ax25_options.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(AX25_WINDOW) || (defined(HAVE_DECL_AX25_WINDOW) && HAVE_DECL_AX25_WINDOW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_WINDOW) == (1), "AX25_WINDOW != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_WINDOW 1 ++#endif ++#if defined(AX25_T1) || (defined(HAVE_DECL_AX25_T1) && HAVE_DECL_AX25_T1) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_T1) == (2), "AX25_T1 != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_T1 2 ++#endif ++#if defined(AX25_N2) || (defined(HAVE_DECL_AX25_N2) && HAVE_DECL_AX25_N2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_N2) == (3), "AX25_N2 != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_N2 3 ++#endif ++#if defined(AX25_T3) || (defined(HAVE_DECL_AX25_T3) && HAVE_DECL_AX25_T3) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_T3) == (4), "AX25_T3 != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_T3 4 ++#endif ++#if defined(AX25_T2) || (defined(HAVE_DECL_AX25_T2) && HAVE_DECL_AX25_T2) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_T2) == (5), "AX25_T2 != 5"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_T2 5 ++#endif ++#if defined(AX25_BACKOFF) || (defined(HAVE_DECL_AX25_BACKOFF) && HAVE_DECL_AX25_BACKOFF) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_BACKOFF) == (6), "AX25_BACKOFF != 6"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_BACKOFF 6 ++#endif ++#if defined(AX25_EXTSEQ) || (defined(HAVE_DECL_AX25_EXTSEQ) && HAVE_DECL_AX25_EXTSEQ) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_EXTSEQ) == (7), "AX25_EXTSEQ != 7"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_EXTSEQ 7 ++#endif ++#if defined(AX25_PIDINCL) || (defined(HAVE_DECL_AX25_PIDINCL) && HAVE_DECL_AX25_PIDINCL) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_PIDINCL) == (8), "AX25_PIDINCL != 8"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_PIDINCL 8 ++#endif ++#if defined(AX25_IDLE) || (defined(HAVE_DECL_AX25_IDLE) && HAVE_DECL_AX25_IDLE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_IDLE) == (9), "AX25_IDLE != 9"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_IDLE 9 ++#endif ++#if defined(AX25_PACLEN) || (defined(HAVE_DECL_AX25_PACLEN) && HAVE_DECL_AX25_PACLEN) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_PACLEN) == (10), "AX25_PACLEN != 10"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_PACLEN 10 ++#endif ++#if defined(AX25_IAMDIGI) || (defined(HAVE_DECL_AX25_IAMDIGI) && HAVE_DECL_AX25_IAMDIGI) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((AX25_IAMDIGI) == (12), "AX25_IAMDIGI != 12"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define AX25_IAMDIGI 12 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat sock_ax25_options in mpers mode ++ ++# else ++ ++static ++const struct xlat sock_ax25_options[] = { ++ ++ XLAT(AX25_WINDOW), ++ XLAT(AX25_T1), ++ XLAT(AX25_N2), ++ XLAT(AX25_T3), ++ XLAT(AX25_T2), ++ XLAT(AX25_BACKOFF), ++ XLAT(AX25_EXTSEQ), ++ XLAT(AX25_PIDINCL), ++ XLAT(AX25_IDLE), ++ XLAT(AX25_PACLEN), ++ XLAT(AX25_IAMDIGI), ++ ++ ++#if defined(SO_BINDTODEVICE) || (defined(HAVE_DECL_SO_BINDTODEVICE) && HAVE_DECL_SO_BINDTODEVICE) ++ XLAT(SO_BINDTODEVICE), ++#endif ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/sock_shutdown_flags.h b/xlat/sock_shutdown_flags.h +new file mode 100644 +index 0000000..8f6caa2 +--- /dev/null ++++ b/xlat/sock_shutdown_flags.h +@@ -0,0 +1,38 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/sock_shutdown_flags.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(RCV_SHUTDOWN) || (defined(HAVE_DECL_RCV_SHUTDOWN) && HAVE_DECL_RCV_SHUTDOWN) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((RCV_SHUTDOWN) == (1), "RCV_SHUTDOWN != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define RCV_SHUTDOWN 1 ++#endif ++#if defined(SEND_SHUTDOWN) || (defined(HAVE_DECL_SEND_SHUTDOWN) && HAVE_DECL_SEND_SHUTDOWN) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SEND_SHUTDOWN) == (2), "SEND_SHUTDOWN != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SEND_SHUTDOWN 2 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat sock_shutdown_flags in mpers mode ++ ++# else ++ ++static ++const struct xlat sock_shutdown_flags[] = { ++ XLAT(RCV_SHUTDOWN), ++ XLAT(SEND_SHUTDOWN), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/sock_xdp_options.h b/xlat/sock_xdp_options.h +new file mode 100644 +index 0000000..8cd2ded +--- /dev/null ++++ b/xlat/sock_xdp_options.h +@@ -0,0 +1,78 @@ ++/* Generated by ./xlat/gen.sh from ./xlat/sock_xdp_options.in; do not edit. */ ++ ++#include "gcc_compat.h" ++#include "static_assert.h" ++ ++#if defined(XDP_MMAP_OFFSETS) || (defined(HAVE_DECL_XDP_MMAP_OFFSETS) && HAVE_DECL_XDP_MMAP_OFFSETS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_MMAP_OFFSETS) == (1), "XDP_MMAP_OFFSETS != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_MMAP_OFFSETS 1 ++#endif ++#if defined(XDP_RX_RING) || (defined(HAVE_DECL_XDP_RX_RING) && HAVE_DECL_XDP_RX_RING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_RX_RING) == (2), "XDP_RX_RING != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_RX_RING 2 ++#endif ++#if defined(XDP_TX_RING) || (defined(HAVE_DECL_XDP_TX_RING) && HAVE_DECL_XDP_TX_RING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_TX_RING) == (3), "XDP_TX_RING != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_TX_RING 3 ++#endif ++#if defined(XDP_UMEM_REG) || (defined(HAVE_DECL_XDP_UMEM_REG) && HAVE_DECL_XDP_UMEM_REG) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_UMEM_REG) == (4), "XDP_UMEM_REG != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_UMEM_REG 4 ++#endif ++#if defined(XDP_UMEM_FILL_RING) || (defined(HAVE_DECL_XDP_UMEM_FILL_RING) && HAVE_DECL_XDP_UMEM_FILL_RING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_UMEM_FILL_RING) == (5), "XDP_UMEM_FILL_RING != 5"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_UMEM_FILL_RING 5 ++#endif ++#if defined(XDP_UMEM_COMPLETION_RING) || (defined(HAVE_DECL_XDP_UMEM_COMPLETION_RING) && HAVE_DECL_XDP_UMEM_COMPLETION_RING) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_UMEM_COMPLETION_RING) == (6), "XDP_UMEM_COMPLETION_RING != 6"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_UMEM_COMPLETION_RING 6 ++#endif ++#if defined(XDP_STATISTICS) || (defined(HAVE_DECL_XDP_STATISTICS) && HAVE_DECL_XDP_STATISTICS) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((XDP_STATISTICS) == (7), "XDP_STATISTICS != 7"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define XDP_STATISTICS 7 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifdef IN_MPERS ++ ++# error static const struct xlat sock_xdp_options in mpers mode ++ ++# else ++ ++static ++const struct xlat sock_xdp_options[] = { ++ [XDP_MMAP_OFFSETS] = XLAT(XDP_MMAP_OFFSETS), ++ [XDP_RX_RING] = XLAT(XDP_RX_RING), ++ [XDP_TX_RING] = XLAT(XDP_TX_RING), ++ [XDP_UMEM_REG] = XLAT(XDP_UMEM_REG), ++ [XDP_UMEM_FILL_RING] = XLAT(XDP_UMEM_FILL_RING), ++ [XDP_UMEM_COMPLETION_RING] = XLAT(XDP_UMEM_COMPLETION_RING), ++ [XDP_STATISTICS] = XLAT(XDP_STATISTICS), ++ XLAT_END ++}; ++ ++# endif /* !IN_MPERS */ ++ ++#endif /* !XLAT_MACROS_ONLY */ +diff --git a/xlat/socketlayers.h b/xlat/socketlayers.h +index 5296344..2239cdc 100644 +--- a/xlat/socketlayers.h ++++ b/xlat/socketlayers.h +@@ -47,6 +47,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define SOL_ICMPV6 58 + #endif ++#if defined(SOL_CAN_BASE) || (defined(HAVE_DECL_SOL_CAN_BASE) && HAVE_DECL_SOL_CAN_BASE) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOL_CAN_BASE) == (100), "SOL_CAN_BASE != 100"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOL_CAN_BASE 100 ++#endif ++#if defined(SOL_CAN_RAW) || (defined(HAVE_DECL_SOL_CAN_RAW) && HAVE_DECL_SOL_CAN_RAW) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOL_CAN_RAW) == (101), "SOL_CAN_RAW != 101"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOL_CAN_RAW 101 ++#endif + #if defined(SOL_SCTP) || (defined(HAVE_DECL_SOL_SCTP) && HAVE_DECL_SOL_SCTP) + DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE + static_assert((SOL_SCTP) == (132), "SOL_SCTP != 132"); +@@ -257,6 +271,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define SOL_TLS 282 + #endif ++#if defined(SOL_XDP) || (defined(HAVE_DECL_SOL_XDP) && HAVE_DECL_SOL_XDP) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOL_XDP) == (283), "SOL_XDP != 283"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOL_XDP 283 ++#endif + #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__ + #if defined(SOL_SOCKET) || (defined(HAVE_DECL_SOL_SOCKET) && HAVE_DECL_SOL_SOCKET) + DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE +@@ -281,6 +302,8 @@ const struct xlat socketlayers[] = { + XLAT(SOL_UDP), + XLAT(SOL_IPV6), + XLAT(SOL_ICMPV6), ++ XLAT(SOL_CAN_BASE), ++ XLAT(SOL_CAN_RAW), + XLAT(SOL_SCTP), + XLAT(SOL_UDPLITE), + XLAT(SOL_RAW), +@@ -311,6 +334,7 @@ const struct xlat socketlayers[] = { + XLAT(SOL_NFC), + XLAT(SOL_KCM), + XLAT(SOL_TLS), ++ XLAT(SOL_XDP), + #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__ + XLAT(SOL_SOCKET), + #endif +diff --git a/xlat/socktypes.h b/xlat/socktypes.h +index 208c172..113ccb0 100644 +--- a/xlat/socktypes.h ++++ b/xlat/socktypes.h +@@ -3,33 +3,90 @@ + #include "gcc_compat.h" + #include "static_assert.h" + +- +-#ifndef XLAT_MACROS_ONLY +- +-# ifndef IN_MPERS +- +-const struct xlat socktypes[] = { ++#ifdef __mips__ ++#if defined(SOCK_DGRAM) || (defined(HAVE_DECL_SOCK_DGRAM) && HAVE_DECL_SOCK_DGRAM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_DGRAM) == (1), "SOCK_DGRAM != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_DGRAM 1 ++#endif ++#if defined(SOCK_STREAM) || (defined(HAVE_DECL_SOCK_STREAM) && HAVE_DECL_SOCK_STREAM) ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_STREAM) == (2), "SOCK_STREAM != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_STREAM 2 ++#endif ++#else + #if defined(SOCK_STREAM) || (defined(HAVE_DECL_SOCK_STREAM) && HAVE_DECL_SOCK_STREAM) +- XLAT(SOCK_STREAM), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_STREAM) == (1), "SOCK_STREAM != 1"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_STREAM 1 + #endif + #if defined(SOCK_DGRAM) || (defined(HAVE_DECL_SOCK_DGRAM) && HAVE_DECL_SOCK_DGRAM) +- XLAT(SOCK_DGRAM), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_DGRAM) == (2), "SOCK_DGRAM != 2"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_DGRAM 2 ++#endif + #endif + #if defined(SOCK_RAW) || (defined(HAVE_DECL_SOCK_RAW) && HAVE_DECL_SOCK_RAW) +- XLAT(SOCK_RAW), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_RAW) == (3), "SOCK_RAW != 3"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_RAW 3 + #endif + #if defined(SOCK_RDM) || (defined(HAVE_DECL_SOCK_RDM) && HAVE_DECL_SOCK_RDM) +- XLAT(SOCK_RDM), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_RDM) == (4), "SOCK_RDM != 4"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_RDM 4 + #endif + #if defined(SOCK_SEQPACKET) || (defined(HAVE_DECL_SOCK_SEQPACKET) && HAVE_DECL_SOCK_SEQPACKET) +- XLAT(SOCK_SEQPACKET), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_SEQPACKET) == (5), "SOCK_SEQPACKET != 5"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_SEQPACKET 5 + #endif + #if defined(SOCK_DCCP) || (defined(HAVE_DECL_SOCK_DCCP) && HAVE_DECL_SOCK_DCCP) +- XLAT(SOCK_DCCP), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_DCCP) == (6), "SOCK_DCCP != 6"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_DCCP 6 + #endif + #if defined(SOCK_PACKET) || (defined(HAVE_DECL_SOCK_PACKET) && HAVE_DECL_SOCK_PACKET) +- XLAT(SOCK_PACKET), ++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE ++static_assert((SOCK_PACKET) == (10), "SOCK_PACKET != 10"); ++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE ++#else ++# define SOCK_PACKET 10 ++#endif ++ ++#ifndef XLAT_MACROS_ONLY ++ ++# ifndef IN_MPERS ++ ++const struct xlat socktypes[] = { ++#ifdef __mips__ ++ XLAT(SOCK_DGRAM), ++ XLAT(SOCK_STREAM), ++#else ++ XLAT(SOCK_STREAM), ++ XLAT(SOCK_DGRAM), + #endif ++ XLAT(SOCK_RAW), ++ XLAT(SOCK_RDM), ++ XLAT(SOCK_SEQPACKET), ++ XLAT(SOCK_DCCP), ++ XLAT(SOCK_PACKET), + XLAT_END + }; + +diff --git a/xlat/v4l2_control_id_bases.h b/xlat/v4l2_control_id_bases.h +index e668d94..cd82577 100644 +--- a/xlat/v4l2_control_id_bases.h ++++ b/xlat/v4l2_control_id_bases.h +@@ -31,12 +31,16 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else + # define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050) + #endif ++#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++# undef V4L2_CID_USER_IMX_BASE ++#endif + #if defined(V4L2_CID_USER_IMX_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_IMX_BASE) && HAVE_DECL_V4L2_CID_USER_IMX_BASE) + DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE +-static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE + 0x1090)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE + 0x1090)"); ++static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE | 0x10b0)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE | 0x10b0)"); + DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE + #else +-# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090) ++# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE | 0x10b0) + #endif + #if defined(V4L2_CID_MPEG_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_BASE) && HAVE_DECL_V4L2_CID_MPEG_BASE) + DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE +@@ -146,6 +150,21 @@ const struct xlat v4l2_control_id_bases[] = { + XLAT(V4L2_CID_USER_MEYE_BASE), + XLAT(V4L2_CID_USER_BTTV_BASE), + XLAT(V4L2_CID_USER_TI_VPE_BASE), ++#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++/* ++ * * Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48 ++ * * has changed the value of V4L2_CID_USER_IMX_BASE constant introduced ++ * * by commit v4.13-rc1~141^2~121 because the old value was already used ++ * * by V4L2_CID_USER_MAX217X_BASE. ++ * * This is of course an ABI breakage that affects Linux kernels starting ++ * * with 4.13 and up to 4.18, as well as their LTS derivatives. ++ * * Since the imx driver didn't provide any public control ID definitions, ++ * * it looks like the best way to handle this situation is to pretend that ++ * * the old value of V4L2_CID_USER_IMX_BASE didn't exist. ++ * */ ++# undef V4L2_CID_USER_IMX_BASE ++#endif + XLAT(V4L2_CID_USER_IMX_BASE), + XLAT(V4L2_CID_MPEG_BASE), + XLAT(V4L2_CID_MPEG_CX2341X_BASE), +-- +1.8.3.1 + diff --git a/arm-sparc-sparc64-wire-up-io_pgetevents.patch b/arm-sparc-sparc64-wire-up-io_pgetevents.patch new file mode 100644 index 0000000..ae3bb6c --- /dev/null +++ b/arm-sparc-sparc64-wire-up-io_pgetevents.patch @@ -0,0 +1,64 @@ +From 43700247534bee217cdf1ec553558c4dcf158335 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 24 Oct 2018 09:05:38 +0000 +Subject: [PATCH 091/293] arm, sparc, sparc64: wire up io_pgetevents + +* linux/arm/syscallent.h ([399]): Wire up io_pgetevents syscall +introduced by Linux commit v4.19-rc7~24^2~1. +(ARM_FIRST_SHUFFLED_SYSCALL, SYS_socket_subcall): Raise from 400 to 500, +to make room for new syscalls. +* linux/sparc/syscallent.h ([361]): Wire up io_pgetevents syscall +introduced by Linux commit v4.19~31^2~5. +* linux/sparc64/syscallent.h: Likewise. +--- + linux/arm/syscallent.h | 5 +++-- + linux/sparc/syscallent.h | 1 + + linux/sparc64/syscallent.h | 1 + + 3 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h +index 568d946..4577db8 100644 +--- a/linux/arm/syscallent.h ++++ b/linux/arm/syscallent.h +@@ -424,11 +424,12 @@ + [396] = { 1, 0, SEN(pkey_free), "pkey_free" }, + [397] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, + [398] = { 4, 0, SEN(rseq), "rseq" }, ++[399] = { 6, 0, SEN(io_pgetevents), "io_pgetevents" }, + + #ifdef __ARM_EABI__ +-# define ARM_FIRST_SHUFFLED_SYSCALL 400 ++# define ARM_FIRST_SHUFFLED_SYSCALL 500 + #else +-# define SYS_socket_subcall 400 ++# define SYS_socket_subcall 500 + # include "subcall.h" + # define ARM_FIRST_SHUFFLED_SYSCALL (SYS_ipc_subcall + SYS_ipc_nsubcalls) + #endif /* !__ARM_EABI__ */ +diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h +index b6a378a..4c409b4 100644 +--- a/linux/sparc/syscallent.h ++++ b/linux/sparc/syscallent.h +@@ -359,6 +359,7 @@ + [358] = { 6, TD, SEN(preadv2), "preadv2" }, + [359] = { 6, TD, SEN(pwritev2), "pwritev2" }, + [360] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, ++[361] = { 6, 0, SEN(io_pgetevents), "io_pgetevents" }, + + #define SYS_socket_subcall 400 + #include "subcall.h" +diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h +index fc2e921..a3a2858 100644 +--- a/linux/sparc64/syscallent.h ++++ b/linux/sparc64/syscallent.h +@@ -357,6 +357,7 @@ + [358] = { 6, TD, SEN(preadv2), "preadv2" }, + [359] = { 6, TD, SEN(pwritev2), "pwritev2" }, + [360] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, ++[361] = { 6, 0, SEN(io_pgetevents), "io_pgetevents" }, + + #define SYS_socket_subcall 400 + #include "subcall.h" +-- +1.7.12.4 + diff --git a/bpf-add-support-for-btf_-fields-in-BPF_MAP_CREATE.patch b/bpf-add-support-for-btf_-fields-in-BPF_MAP_CREATE.patch new file mode 100644 index 0000000..3130569 --- /dev/null +++ b/bpf-add-support-for-btf_-fields-in-BPF_MAP_CREATE.patch @@ -0,0 +1,110 @@ +From 14a9b6ca66109fc1231eb16e98a9ce4262fb610c Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Tue, 12 Mar 2019 11:17:20 +0000 +Subject: [PATCH 269/293] bpf: add support for btf_* fields in BPF_MAP_CREATE + +* bpf_attr.h (struct BPF_MAP_CREATE_struct): Add btf_fd, +btf_key_type_id, and btf_value_type_id fields. +* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)): Decode btf_fd, +btf_key_type_id, and btf_value_type_id fields introduced by Linux +commits v4.18-rc1~114^2~417^2~1^2~3 and v4.18-rc1~114^2~148^2~7^2~2. +* tests/bpf.c (BPF_MAP_CREATE_checks): Check it. +* tests/bpf-obj_get_info_by_fd.c (print_map_create): Update expected +output. +--- + bpf.c | 10 ++++++++++ + bpf_attr.h | 5 ++++- + tests/bpf-obj_get_info_by_fd.c | 4 ++++ + tests/bpf.c | 20 ++++++++++++++++++++ + 4 files changed, 38 insertions(+), 1 deletion(-) + +diff --git a/bpf.c b/bpf.c +index 6fb4c2c..bf7cd6c 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -232,6 +232,16 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE) + if (len <= offsetof(struct BPF_MAP_CREATE_struct, map_ifindex)) + break; + PRINT_FIELD_IFINDEX(", ", attr, map_ifindex); ++ ++ /* ++ * The following three fields were introduced by Linux commits ++ * v4.18-rc1~114^2~417^2~1^2~3 and v4.18-rc1~114^2~148^2~7^2~2. ++ */ ++ if (len <= offsetof(struct BPF_MAP_CREATE_struct, btf_fd)) ++ break; ++ PRINT_FIELD_FD(", ", attr, btf_fd, tcp); ++ PRINT_FIELD_U(", ", attr, btf_key_type_id); ++ PRINT_FIELD_U(", ", attr, btf_value_type_id); + } + END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD) + +diff --git a/bpf_attr.h b/bpf_attr.h +index cb49896..a789d10 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -65,11 +65,14 @@ struct BPF_MAP_CREATE_struct { + uint32_t numa_node; + char map_name[BPF_OBJ_NAME_LEN]; + uint32_t map_ifindex; ++ uint32_t btf_fd; ++ uint32_t btf_key_type_id; ++ uint32_t btf_value_type_id; + }; + + #define BPF_MAP_CREATE_struct_size \ + sizeof(struct BPF_MAP_CREATE_struct) +-#define expected_BPF_MAP_CREATE_struct_size 48 ++#define expected_BPF_MAP_CREATE_struct_size 60 + + struct BPF_MAP_LOOKUP_ELEM_struct { + uint32_t map_fd; +diff --git a/tests/bpf-obj_get_info_by_fd.c b/tests/bpf-obj_get_info_by_fd.c +index ff06e27..02d14e5 100644 +--- a/tests/bpf-obj_get_info_by_fd.c ++++ b/tests/bpf-obj_get_info_by_fd.c +@@ -103,6 +103,10 @@ print_map_create(void *attr_void, size_t size, long rc) + printf(", map_name=\"test_map\""); + if (size > offsetof(struct BPF_MAP_CREATE_struct, map_ifindex)) + printf(", map_ifindex=0"); ++ if (size > offsetof(struct BPF_MAP_CREATE_struct, btf_fd)) { ++ printf(", btf_fd=0" ++ ", btf_key_type_id=0, btf_value_type_id=0"); ++ } + printf("}, %zu) = ", size); + if (rc >= 0) + printf("%ld\n", rc); +diff --git a/tests/bpf.c b/tests/bpf.c +index cfed319..b18a056 100644 +--- a/tests/bpf.c ++++ b/tests/bpf.c +@@ -420,6 +420,26 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = { + ", map_ifindex=" IFINDEX_LO_STR, + .init_fn = init_BPF_MAP_CREATE_attr7, + }, ++ { /* 8 */ ++ .data = { .BPF_MAP_CREATE_data = { ++ .btf_fd = 0xbadc0ded, ++ .btf_key_type_id = 0xfacefeed, ++ .btf_value_type_id = 0xcafef00d ++ } }, ++ .size = offsetofend(struct BPF_MAP_CREATE_struct, ++ btf_value_type_id), ++ .str = "map_type=BPF_MAP_TYPE_UNSPEC" ++ ", key_size=0" ++ ", value_size=0" ++ ", max_entries=0" ++ ", map_flags=0" ++ ", inner_map_fd=0" ++ ", map_name=\"\"" ++ ", map_ifindex=0" ++ ", btf_fd=-1159983635" ++ ", btf_key_type_id=4207869677" ++ ", btf_value_type_id=3405705229" ++ }, + }; + + static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = { +-- +1.7.12.4 + diff --git a/bpf-add-support-for-jited_ksyms-and-jited_func_lens-.patch b/bpf-add-support-for-jited_ksyms-and-jited_func_lens-.patch new file mode 100644 index 0000000..1932dd9 --- /dev/null +++ b/bpf-add-support-for-jited_ksyms-and-jited_func_lens-.patch @@ -0,0 +1,145 @@ +From d1f90bcdc7cf95cf442321f18452d0367e80b7d5 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Tue, 12 Mar 2019 11:17:20 +0000 +Subject: [PATCH 271/293] bpf: add support for *jited_ksyms and + *jited_func_lens fields in struct bpf_prog_info + +* bpf_attr.h (struct bpf_prog_info_struct): Add nr_jited_ksyms, +nr_jited_func_lens, jited_ksyms, and jited_func_lens fields. +* bpf.c (struct obj_get_info_saved): Likewise. +(print_bpf_prog_info): Decode these fields introduced by Linux commits +v4.18-rc1~114^2~148^2~3^2~6 and v4.18-rc1~114^2~148^2~3^2~2. +* tests/bpf-obj_get_info_by_fd.c (main): Update expected output. +--- + bpf.c | 40 ++++++++++++++++++++++++++++++++++++++++ + bpf_attr.h | 6 +++++- + tests/bpf-obj_get_info_by_fd.c | 21 +++++++++++++++++++++ + 3 files changed, 66 insertions(+), 1 deletion(-) + +diff --git a/bpf.c b/bpf.c +index 31bdd9b..c1a4e52 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -447,6 +447,11 @@ struct obj_get_info_saved { + uint32_t jited_prog_len; + uint32_t xlated_prog_len; + uint32_t nr_map_ids; ++ uint32_t nr_jited_ksyms; ++ ++ uint32_t nr_jited_func_lens; ++ uint64_t jited_ksyms; ++ uint64_t jited_func_lens; + }; + + static void +@@ -507,6 +512,10 @@ print_bpf_prog_info(struct tcb * const tcp, uint32_t bpf_fd, + saved->jited_prog_len = info.jited_prog_len; + saved->xlated_prog_len = info.xlated_prog_len; + saved->nr_map_ids = info.nr_map_ids; ++ saved->nr_jited_ksyms = info.nr_jited_ksyms; ++ saved->nr_jited_func_lens = info.nr_jited_func_lens; ++ saved->jited_ksyms = info.jited_ksyms; ++ saved->jited_func_lens = info.jited_func_lens; + + return; + } +@@ -569,6 +578,37 @@ print_bpf_prog_info(struct tcb * const tcp, uint32_t bpf_fd, + PRINT_FIELD_DEV(", ", info, netns_dev); + PRINT_FIELD_U(", ", info, netns_ino); + ++ /* ++ * The next four fields were introduced by Linux commits ++ * v4.18-rc1~114^2~148^2~3^2~6 and v4.18-rc1~114^2~148^2~3^2~2. ++ */ ++ if (len <= offsetof(struct bpf_prog_info_struct, nr_jited_ksyms)) ++ goto print_bpf_prog_info_end; ++ ++ tprints(", nr_jited_ksyms="); ++ if (saved->nr_jited_ksyms != info.nr_jited_ksyms) ++ tprintf("%" PRIu32 " => ", saved->nr_jited_ksyms); ++ tprintf("%" PRIu32, info.nr_jited_ksyms); ++ ++ tprints(", nr_jited_func_lens="); ++ if (saved->nr_jited_func_lens != info.nr_jited_func_lens) ++ tprintf("%" PRIu32 " => ", saved->nr_jited_func_lens); ++ tprintf("%" PRIu32, info.nr_jited_func_lens); ++ ++ tprints(", jited_ksyms="); ++ if (saved->jited_ksyms != info.jited_ksyms) { ++ printaddr64(saved->jited_ksyms); ++ tprints(" => "); ++ } ++ printaddr64(info.jited_ksyms); ++ ++ tprints(", jited_func_lens="); ++ if (saved->jited_func_lens != info.jited_func_lens) { ++ printaddr64(saved->jited_func_lens); ++ tprints(" => "); ++ } ++ printaddr64(info.jited_func_lens); ++ + decode_attr_extra_data(tcp, info_buf, size, bpf_prog_info_struct_size); + + print_bpf_prog_info_end: +diff --git a/bpf_attr.h b/bpf_attr.h +index 7da8af6..d23d464 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -289,10 +289,14 @@ struct bpf_prog_info_struct { + */ + uint64_t ATTRIBUTE_ALIGNED(8) netns_dev; /* skip check */ + uint64_t ATTRIBUTE_ALIGNED(8) netns_ino; /* skip check */ ++ uint32_t nr_jited_ksyms; ++ uint32_t nr_jited_func_lens; ++ uint64_t ATTRIBUTE_ALIGNED(8) jited_ksyms; ++ uint64_t ATTRIBUTE_ALIGNED(8) jited_func_lens; + }; + + #define bpf_prog_info_struct_size \ + sizeof(struct bpf_prog_info_struct) +-#define expected_bpf_prog_info_struct_size 104 ++#define expected_bpf_prog_info_struct_size 128 + + #endif /* !STRACE_BPF_ATTR_H */ +diff --git a/tests/bpf-obj_get_info_by_fd.c b/tests/bpf-obj_get_info_by_fd.c +index 5096f16..96c8837 100644 +--- a/tests/bpf-obj_get_info_by_fd.c ++++ b/tests/bpf-obj_get_info_by_fd.c +@@ -366,6 +366,8 @@ main(void) + + for (unsigned int i = 0; i < 4; i++) { + prog_info->jited_prog_len = 0; ++ prog_info->nr_jited_ksyms = 0; ++ prog_info->nr_jited_func_lens = 0; + switch (i) { + case 1: + prog_info->xlated_prog_insns = +@@ -492,6 +494,25 @@ main(void) + offsetof(struct bpf_prog_info_struct, netns_ino)) + printf(", netns_ino=%" PRIu64, prog_info->netns_ino); + ++ if (bpf_prog_get_info_attr.info_len > ++ offsetof(struct bpf_prog_info_struct, nr_jited_ksyms)) { ++ printf(", nr_jited_ksyms=0"); ++ if (prog_info->nr_jited_ksyms) ++ printf(" => %u", prog_info->nr_jited_ksyms); ++ } ++ if (bpf_prog_get_info_attr.info_len > ++ offsetof(struct bpf_prog_info_struct, nr_jited_func_lens)) { ++ printf(", nr_jited_func_lens=0"); ++ if (prog_info->nr_jited_func_lens) ++ printf(" => %u", prog_info->nr_jited_func_lens); ++ } ++ if (bpf_prog_get_info_attr.info_len > ++ offsetof(struct bpf_prog_info_struct, jited_ksyms)) ++ printf(", jited_ksyms=NULL"); ++ if (bpf_prog_get_info_attr.info_len > ++ offsetof(struct bpf_prog_info_struct, jited_func_lens)) ++ printf(", jited_func_lens=NULL"); ++ + printf("}"); + # else /* !VERBOSE */ + printf("%p", prog_info); +-- +1.7.12.4 + diff --git a/bpf-implement-decoding-of-BPF_BTF_GET_FD_BY_ID-comma.patch b/bpf-implement-decoding-of-BPF_BTF_GET_FD_BY_ID-comma.patch new file mode 100644 index 0000000..eaf804c --- /dev/null +++ b/bpf-implement-decoding-of-BPF_BTF_GET_FD_BY_ID-comma.patch @@ -0,0 +1,108 @@ +From 9c183d96f7bba6c6ff0e8349241a6dd1418e8d4d Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 13 Mar 2019 18:38:51 +0000 +Subject: [PATCH 275/293] bpf: implement decoding of BPF_BTF_GET_FD_BY_ID + command + +BPF_BTF_GET_FD_BY_ID command was introduced by Linux commit +v4.18-rc1~114^2~223^2~21^2~4. + +* bpf_attr.h (struct BPF_BTF_GET_FD_BY_ID_struct): New type. +(BPF_BTF_GET_FD_BY_ID_struct_size, +expected_BPF_BTF_GET_FD_BY_ID_struct_size): New macros. +* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_BTF_GET_FD_BY_ID)): New bpf command +decoder. +(SYS_FUNC(bpf)) : Add +BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID). +* tests/bpf.c (union bpf_attr_data): Add +BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID). +(BPF_BTF_GET_FD_BY_ID_checks): New checks array. +(main) : Add CHK(BPF_BTF_GET_FD_BY_ID). +--- + bpf.c | 7 +++++++ + bpf_attr.h | 8 ++++++++ + tests/bpf.c | 10 ++++++++++ + 3 files changed, 25 insertions(+) + +diff --git a/bpf.c b/bpf.c +index 5fedbd1..69c9a4f 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -837,6 +837,12 @@ BEGIN_BPF_CMD_DECODER(BPF_BTF_LOAD) + } + END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD) + ++BEGIN_BPF_CMD_DECODER(BPF_BTF_GET_FD_BY_ID) ++{ ++ PRINT_FIELD_U("{", attr, btf_id); ++} ++END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD) ++ + SYS_FUNC(bpf) + { + static const bpf_cmd_decoder_t bpf_cmd_decoders[] = { +@@ -859,6 +865,7 @@ SYS_FUNC(bpf) + BPF_CMD_ENTRY(BPF_PROG_QUERY), + BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN), + BPF_CMD_ENTRY(BPF_BTF_LOAD), ++ BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID), + }; + + const unsigned int cmd = tcp->u_arg[0]; +diff --git a/bpf_attr.h b/bpf_attr.h +index a04f79e..37ddc41 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -239,6 +239,14 @@ struct BPF_BTF_LOAD_struct { + offsetofend(struct BPF_BTF_LOAD_struct, btf_log_level) + # define expected_BPF_BTF_LOAD_struct_size 28 + ++struct BPF_BTF_GET_FD_BY_ID_struct { ++ uint32_t btf_id; ++}; ++ ++# define BPF_BTF_GET_FD_BY_ID_struct_size \ ++ sizeof(struct BPF_BTF_GET_FD_BY_ID_struct) ++# define expected_BPF_BTF_GET_FD_BY_ID_struct_size 4 ++ + struct bpf_map_info_struct { + uint32_t type; + uint32_t id; +diff --git a/tests/bpf.c b/tests/bpf.c +index 85b27d5..8f887fb 100644 +--- a/tests/bpf.c ++++ b/tests/bpf.c +@@ -72,6 +72,7 @@ union bpf_attr_data { + BPF_ATTR_DATA_FIELD(BPF_PROG_QUERY); + BPF_ATTR_DATA_FIELD(BPF_RAW_TRACEPOINT_OPEN); + BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD); ++ BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID); + char char_data[256]; + }; + +@@ -1117,6 +1118,14 @@ static struct bpf_attr_check BPF_BTF_LOAD_checks[] = { + } + }; + ++static const struct bpf_attr_check BPF_BTF_GET_FD_BY_ID_checks[] = { ++ { ++ .data = { .BPF_BTF_GET_FD_BY_ID_data = { .btf_id = 0xdeadbeef } }, ++ .size = offsetofend(struct BPF_BTF_GET_FD_BY_ID_struct, btf_id), ++ .str = "btf_id=3735928559" ++ } ++}; ++ + + #define CHK(cmd_) \ + { \ +@@ -1148,6 +1157,7 @@ main(void) + CHK(BPF_PROG_QUERY), + CHK(BPF_RAW_TRACEPOINT_OPEN), + CHK(BPF_BTF_LOAD), ++ CHK(BPF_BTF_GET_FD_BY_ID), + }; + + page_size = get_page_size(); +-- +1.7.12.4 + diff --git a/bpf-implement-decoding-of-BPF_BTF_LOAD-command.patch b/bpf-implement-decoding-of-BPF_BTF_LOAD-command.patch new file mode 100644 index 0000000..52a33b3 --- /dev/null +++ b/bpf-implement-decoding-of-BPF_BTF_LOAD-command.patch @@ -0,0 +1,146 @@ +From bc4224a8fa641819d42639ac5b3252681304bfc3 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 13 Mar 2019 18:38:51 +0000 +Subject: [PATCH 274/293] bpf: implement decoding of BPF_BTF_LOAD command + +BPF_BTF_LOAD command was introduced by Linux commit +v4.18-rc1~114^2~417^2~1^2~5. + +* bpf_attr.h (struct BPF_BTF_LOAD_struct): New type. +(BPF_BTF_LOAD_struct_size, expected_BPF_BTF_LOAD_struct_size): New +macros. +* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_BTF_LOAD)): New bpf command decoder. +(SYS_FUNC(bpf)) : Add BPF_CMD_ENTRY(BPF_BTF_LOAD). +* tests/bpf.c (union bpf_attr_data): Add +BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD). +(init_BPF_BTF_LOAD_attr): New function. +(BPF_BTF_LOAD_checks): New checks array. +(main) : Add CHK(BPF_BTF_LOAD). +--- + bpf.c | 13 +++++++++++++ + bpf_attr.h | 12 ++++++++++++ + tests/bpf.c | 40 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 65 insertions(+) + +diff --git a/bpf.c b/bpf.c +index fbd77dc..5fedbd1 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -825,6 +825,18 @@ BEGIN_BPF_CMD_DECODER(BPF_RAW_TRACEPOINT_OPEN) + } + END_BPF_CMD_DECODER(RVAL_DECODED) + ++BEGIN_BPF_CMD_DECODER(BPF_BTF_LOAD) ++{ ++ tprints("{btf="); ++ print_big_u64_addr(attr.btf); ++ printstrn(tcp, attr.btf, attr.btf_size); ++ PRINT_FIELD_ADDR64(", ", attr, btf_log_buf); ++ PRINT_FIELD_U(", ", attr, btf_size); ++ PRINT_FIELD_U(", ", attr, btf_log_size); ++ PRINT_FIELD_U(", ", attr, btf_log_level); ++} ++END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD) ++ + SYS_FUNC(bpf) + { + static const bpf_cmd_decoder_t bpf_cmd_decoders[] = { +@@ -846,6 +858,7 @@ SYS_FUNC(bpf) + BPF_CMD_ENTRY(BPF_OBJ_GET_INFO_BY_FD), + BPF_CMD_ENTRY(BPF_PROG_QUERY), + BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN), ++ BPF_CMD_ENTRY(BPF_BTF_LOAD), + }; + + const unsigned int cmd = tcp->u_arg[0]; +diff --git a/bpf_attr.h b/bpf_attr.h +index b34983a..a04f79e 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -227,6 +227,18 @@ struct BPF_RAW_TRACEPOINT_OPEN_struct /* raw_tracepoint */ { + offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) + #define expected_BPF_RAW_TRACEPOINT_OPEN_struct_size 12 + ++struct BPF_BTF_LOAD_struct { ++ uint64_t ATTRIBUTE_ALIGNED(8) btf; ++ uint64_t ATTRIBUTE_ALIGNED(8) btf_log_buf; ++ uint32_t btf_size; ++ uint32_t btf_log_size; ++ uint32_t btf_log_level; ++}; ++ ++# define BPF_BTF_LOAD_struct_size \ ++ offsetofend(struct BPF_BTF_LOAD_struct, btf_log_level) ++# define expected_BPF_BTF_LOAD_struct_size 28 ++ + struct bpf_map_info_struct { + uint32_t type; + uint32_t id; +diff --git a/tests/bpf.c b/tests/bpf.c +index b18a056..85b27d5 100644 +--- a/tests/bpf.c ++++ b/tests/bpf.c +@@ -71,6 +71,7 @@ union bpf_attr_data { + BPF_ATTR_DATA_FIELD(BPF_OBJ_GET_INFO_BY_FD); + BPF_ATTR_DATA_FIELD(BPF_PROG_QUERY); + BPF_ATTR_DATA_FIELD(BPF_RAW_TRACEPOINT_OPEN); ++ BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD); + char char_data[256]; + }; + +@@ -1078,6 +1079,44 @@ static struct bpf_attr_check BPF_RAW_TRACEPOINT_OPEN_checks[] = { + } + }; + ++static void ++init_BPF_BTF_LOAD_attr(struct bpf_attr_check *check) ++{ ++ static const char sample_btf_data[] = "bPf\0daTum"; ++ ++ static char *btf_data; ++ if (!btf_data) ++ btf_data = tail_memdup(sample_btf_data, ++ sizeof(sample_btf_data) - 1); ++ ++ struct BPF_BTF_LOAD_struct *attr = &check->data.BPF_BTF_LOAD_data; ++ attr->btf = (uintptr_t) btf_data; ++} ++ ++static struct bpf_attr_check BPF_BTF_LOAD_checks[] = { ++ { ++ .data = { .BPF_BTF_LOAD_data = { .btf = 0 } }, ++ .size = offsetofend(struct BPF_BTF_LOAD_struct, btf), ++ .str = "btf=NULL, btf_log_buf=NULL, btf_size=0" ++ ", btf_log_size=0, btf_log_level=0" ++ }, ++ { /* 1 */ ++ .data = { .BPF_BTF_LOAD_data = { ++ .btf_log_buf = 0xfacefeeddeadbeefULL, ++ .btf_size = 9, ++ .btf_log_size = -1U, ++ .btf_log_level = 42 ++ } }, ++ .size = offsetofend(struct BPF_BTF_LOAD_struct, btf_log_level), ++ .init_fn = init_BPF_BTF_LOAD_attr, ++ .str = "btf=\"bPf\\0daTum\"" ++ ", btf_log_buf=0xfacefeeddeadbeef" ++ ", btf_size=9" ++ ", btf_log_size=4294967295" ++ ", btf_log_level=42" ++ } ++}; ++ + + #define CHK(cmd_) \ + { \ +@@ -1108,6 +1147,7 @@ main(void) + CHK(BPF_OBJ_GET_INFO_BY_FD), + CHK(BPF_PROG_QUERY), + CHK(BPF_RAW_TRACEPOINT_OPEN), ++ CHK(BPF_BTF_LOAD), + }; + + page_size = get_page_size(); +-- +1.7.12.4 + diff --git a/bpf-implement-decoding-of-BPF_TASK_FD_QUERY-command.patch b/bpf-implement-decoding-of-BPF_TASK_FD_QUERY-command.patch new file mode 100644 index 0000000..5548d47 --- /dev/null +++ b/bpf-implement-decoding-of-BPF_TASK_FD_QUERY-command.patch @@ -0,0 +1,191 @@ +From 4207c1115d11f40a9cb045bb61128fe49ad760e7 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 13 Mar 2019 18:38:51 +0000 +Subject: [PATCH 277/293] bpf: implement decoding of BPF_TASK_FD_QUERY command + +BPF_TASK_FD_QUERY command was introduced by Linux commit +v4.18-rc1~114^2~148^2~1^2~5. + +* bpf_attr.h (struct BPF_TASK_FD_QUERY_struct): New type. +(BPF_TASK_FD_QUERY_struct_size, +expected_BPF_TASK_FD_QUERY_struct_size): New macros. +* bpf.c: Include "xlat/bpf_task_fd_type.h". +(BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY)): New bpf command decoder. +(SYS_FUNC(bpf)) : Add +BPF_CMD_ENTRY(BPF_TASK_FD_QUERY). +* xlat/bpf_task_fd_type.in: New file. +* tests/bpf.c (union bpf_attr_data): Add +BPF_ATTR_DATA_FIELD(BPF_TASK_FD_QUERY). +(BPF_TASK_FD_QUERY_checks): New checks array. +(main) : Add CHK(BPF_TASK_FD_QUERY). +--- + bpf.c | 34 ++++++++++++++++++++++++++++++++++ + bpf_attr.h | 16 ++++++++++++++++ + tests/bpf.c | 36 ++++++++++++++++++++++++++++++++++++ + xlat/bpf_task_fd_type.in | 7 +++++++ + 4 files changed, 93 insertions(+) + create mode 100644 xlat/bpf_task_fd_type.in + +diff --git a/bpf.c b/bpf.c +index 3c68957..66fae2d 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -47,6 +47,7 @@ + #include "xlat/bpf_attach_type.h" + #include "xlat/bpf_attach_flags.h" + #include "xlat/bpf_query_flags.h" ++#include "xlat/bpf_task_fd_type.h" + #include "xlat/ebpf_regs.h" + #include "xlat/numa_node.h" + +@@ -778,6 +779,38 @@ BEGIN_BPF_CMD_DECODER(BPF_BTF_GET_FD_BY_ID) + } + END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD) + ++BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY) ++{ ++ if (entering(tcp)) { ++ set_tcb_priv_ulong(tcp, attr.buf_len); ++ ++ PRINT_FIELD_U("{task_fd_query={", attr, pid); ++ PRINT_FIELD_FD(", ", attr, fd, tcp); ++ PRINT_FIELD_U(", ", attr, flags); ++ PRINT_FIELD_U(", ", attr, buf_len); ++ ++ return 0; ++ } ++ ++ unsigned int saved_buf_len = get_tcb_priv_ulong(tcp); ++ ++ if (saved_buf_len != attr.buf_len) ++ tprintf(" => %u", attr.buf_len); ++ ++ const unsigned int buf_len = MIN(saved_buf_len, attr.buf_len); ++ tprintf(", buf="); ++ print_big_u64_addr(attr.buf); ++ printstr_ex(tcp, attr.buf, buf_len, QUOTE_0_TERMINATED); ++ PRINT_FIELD_U(", ", attr, prog_id); ++ PRINT_FIELD_XVAL_INDEX(", ", attr, fd_type, bpf_task_fd_type, ++ "BPF_FD_TYPE_???"); ++ PRINT_FIELD_X(", ", attr, probe_offset); ++ PRINT_FIELD_X(", ", attr, probe_addr); ++ ++ tprints("}"); ++} ++END_BPF_CMD_DECODER(RVAL_DECODED) ++ + SYS_FUNC(bpf) + { + static const bpf_cmd_decoder_t bpf_cmd_decoders[] = { +@@ -801,6 +834,7 @@ SYS_FUNC(bpf) + BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN), + BPF_CMD_ENTRY(BPF_BTF_LOAD), + BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID), ++ BPF_CMD_ENTRY(BPF_TASK_FD_QUERY), + }; + + const unsigned int cmd = tcp->u_arg[0]; +diff --git a/bpf_attr.h b/bpf_attr.h +index 584aa75..750198b 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -267,6 +267,22 @@ struct BPF_BTF_GET_FD_BY_ID_struct { + sizeof(struct BPF_BTF_GET_FD_BY_ID_struct) + # define expected_BPF_BTF_GET_FD_BY_ID_struct_size 4 + ++struct BPF_TASK_FD_QUERY_struct /* task_fd_query */ { ++ uint32_t pid; ++ uint32_t fd; ++ uint32_t flags; ++ uint32_t buf_len; ++ uint64_t ATTRIBUTE_ALIGNED(8) buf; ++ uint32_t prog_id; ++ uint32_t fd_type; ++ uint64_t ATTRIBUTE_ALIGNED(8) probe_offset; ++ uint64_t ATTRIBUTE_ALIGNED(8) probe_addr; ++}; ++ ++# define BPF_TASK_FD_QUERY_struct_size \ ++ sizeof(struct BPF_TASK_FD_QUERY_struct) ++# define expected_BPF_TASK_FD_QUERY_struct_size 48 ++ + struct bpf_map_info_struct { + uint32_t type; + uint32_t id; +diff --git a/tests/bpf.c b/tests/bpf.c +index 3f707e4..c1ec568 100644 +--- a/tests/bpf.c ++++ b/tests/bpf.c +@@ -93,6 +93,7 @@ union bpf_attr_data { + BPF_ATTR_DATA_FIELD(BPF_RAW_TRACEPOINT_OPEN); + BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD); + BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID); ++ BPF_ATTR_DATA_FIELD(BPF_TASK_FD_QUERY); + char char_data[256]; + }; + +@@ -1146,6 +1147,40 @@ static const struct bpf_attr_check BPF_BTF_GET_FD_BY_ID_checks[] = { + } + }; + ++static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = { ++ { ++ .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } }, ++ .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid), ++ .str = "task_fd_query={pid=3735928559, fd=0, flags=0" ++ ", buf_len=0, buf=NULL, prog_id=0" ++ ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT" ++ ", probe_offset=0, probe_addr=0}" ++ }, ++ { /* 1 */ ++ .data = { .BPF_TASK_FD_QUERY_data = { ++ .pid = 0xcafef00d, ++ .fd = 0xdeadbeef, ++ .flags = 0xfacefeed, ++ .buf_len = 0xdefaced, ++ .buf = 0xfffffffffffffffe, ++ .prog_id = 0xbadc0ded, ++ .fd_type = 5, ++ .probe_offset = 0xfac1fed2fac3fed4, ++ .probe_addr = 0xfac5fed5fac7fed8 ++ } }, ++ .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr), ++ .str = "task_fd_query={pid=3405705229" ++ ", fd=-559038737" ++ ", flags=4207869677" ++ ", buf_len=233811181" ++ ", buf=" BIG_ADDR("0xfffffffffffffffe", "0xfffffffe") ++ ", prog_id=3134983661" ++ ", fd_type=BPF_FD_TYPE_URETPROBE" ++ ", probe_offset=0xfac1fed2fac3fed4" ++ ", probe_addr=0xfac5fed5fac7fed8}" ++ } ++}; ++ + + #define CHK(cmd_) \ + { \ +@@ -1178,6 +1213,7 @@ main(void) + CHK(BPF_RAW_TRACEPOINT_OPEN), + CHK(BPF_BTF_LOAD), + CHK(BPF_BTF_GET_FD_BY_ID), ++ CHK(BPF_TASK_FD_QUERY), + }; + + page_size = get_page_size(); +diff --git a/xlat/bpf_task_fd_type.in b/xlat/bpf_task_fd_type.in +new file mode 100644 +index 0000000..df554e6 +--- /dev/null ++++ b/xlat/bpf_task_fd_type.in +@@ -0,0 +1,7 @@ ++#value_indexed ++BPF_FD_TYPE_RAW_TRACEPOINT 0 ++BPF_FD_TYPE_TRACEPOINT 1 ++BPF_FD_TYPE_KPROBE 2 ++BPF_FD_TYPE_KRETPROBE 3 ++BPF_FD_TYPE_UPROBE 4 ++BPF_FD_TYPE_URETPROBE 5 +-- +1.7.12.4 + diff --git a/bpf-print-struct-bpf_prog_info.gpl_compatible.patch b/bpf-print-struct-bpf_prog_info.gpl_compatible.patch new file mode 100644 index 0000000..18b3b74 --- /dev/null +++ b/bpf-print-struct-bpf_prog_info.gpl_compatible.patch @@ -0,0 +1,65 @@ +From cabd6955d3c3048bb2ba19032b504eeb3776a86f Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Tue, 12 Mar 2019 11:17:20 +0000 +Subject: [PATCH 268/293] bpf: print struct bpf_prog_info.gpl_compatible + +This bit field was added by Linux commit v4.18-rc1~114^2~376^2~6. + +* bpf_attr.h (struct bpf_prog_info_struct): Add gpl_compatible field. +* bpf.c (print_bpf_prog_info): Print gpl_compatible field. +* tests/bpf-obj_get_info_by_fd.c (main): Update expected output. +--- + bpf.c | 5 ++++- + bpf_attr.h | 1 + + tests/bpf-obj_get_info_by_fd.c | 3 +++ + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/bpf.c b/bpf.c +index 397521e..6fb4c2c 100644 +--- a/bpf.c ++++ b/bpf.c +@@ -525,11 +525,14 @@ print_bpf_prog_info(struct tcb * const tcp, uint32_t bpf_fd, + + /* + * ifindex, netns_dev, and netns_ino fields were introduced +- * by Linux commit v4.16-rc1~123^2~227^2~5^2~2. ++ * by Linux commit v4.16-rc1~123^2~227^2~5^2~2, and ++ * gpl_compatible was added later by Linux commit ++ * v4.18-rc1~114^2~376^2~6. + */ + if (len <= offsetof(struct bpf_prog_info_struct, ifindex)) + goto print_bpf_prog_info_end; + PRINT_FIELD_IFINDEX(", ", info, ifindex); ++ tprintf(", gpl_compatible=%u", info.gpl_compatible); + PRINT_FIELD_DEV(", ", info, netns_dev); + PRINT_FIELD_U(", ", info, netns_ino); + +diff --git a/bpf_attr.h b/bpf_attr.h +index dc7694c..cb49896 100644 +--- a/bpf_attr.h ++++ b/bpf_attr.h +@@ -259,6 +259,7 @@ struct bpf_prog_info_struct { + uint64_t ATTRIBUTE_ALIGNED(8) map_ids; + char name[BPF_OBJ_NAME_LEN]; + uint32_t ifindex; ++ uint32_t gpl_compatible:1; + /* + * The kernel UAPI is broken by Linux commit + * v4.16-rc1~123^2~227^2~5^2~2 . +diff --git a/tests/bpf-obj_get_info_by_fd.c b/tests/bpf-obj_get_info_by_fd.c +index fba0e75..ff06e27 100644 +--- a/tests/bpf-obj_get_info_by_fd.c ++++ b/tests/bpf-obj_get_info_by_fd.c +@@ -461,6 +461,9 @@ main(void) + offsetof(struct bpf_prog_info_struct, ifindex)) + printf(", ifindex=%u", prog_info->ifindex); + if (bpf_prog_get_info_attr.info_len > ++ offsetofend(struct bpf_prog_info_struct, ifindex)) ++ printf(", gpl_compatible=%u", prog_info->gpl_compatible); ++ if (bpf_prog_get_info_attr.info_len > + offsetof(struct bpf_prog_info_struct, netns_dev)) + printf(", netns_dev=makedev(%u, %u)", + major(prog_info->netns_dev), +-- +1.7.12.4 + diff --git a/evdev-fix-decoding-of-EVIOCGBIT-0.patch b/evdev-fix-decoding-of-EVIOCGBIT-0.patch new file mode 100644 index 0000000..784435d --- /dev/null +++ b/evdev-fix-decoding-of-EVIOCGBIT-0.patch @@ -0,0 +1,129 @@ +From 5ee385e2eb9288ae49e07dca67e576abb2e10fea Mon Sep 17 00:00:00 2001 +From: Zhibin Li <08826794brmt@gmail.com> +Date: Wed, 1 Aug 2018 17:53:57 +0800 +Subject: [PATCH 006/293] evdev: fix decoding of EVIOCGBIT(0, ...) + +There is a comment in drivers/input/evdev.c which says: +/* EV_SYN==0 is EV_CNT, _not_ SYN_CNT, see EVIOCGBIT */ + +That is, EVIOCGBIT(0, ...) should return a bit mask with supported +event types instead of SYN_* event codes. + +* defs.h (evdev_ev): New prototype. +* evdev.c: Include "xlat/evdev_ev.h" and remove "xlat/evdev_sync.h". +(bit_ioctl) : Replace EV_SYN with 0, use evdev_ev +with XT_SORTED in decode_bitset invocation instead. +* ioctl.c: Do not include "xlat/evdev_ev.h". +(evdev_decode_number): Print nr == 0x20 as "0" instead of "EV_SYN". +* tests/ioctl_evdev.c (main): Use 0 instead of EV_SYN in EVIOCGBIT +output. +* xlat/evdev_sync.in: Remove. + +Co-Authored-by: Dmitry V. Levin +Fixes: v4.10~89 "Add decoding for evdev ioctls" +--- + defs.h | 1 + + evdev.c | 8 ++++---- + ioctl.c | 7 ++++--- + tests/ioctl_evdev.c | 2 +- + xlat/evdev_sync.in | 5 ----- + 5 files changed, 10 insertions(+), 13 deletions(-) + delete mode 100644 xlat/evdev_sync.in + +diff --git a/defs.h b/defs.h +index 0d4bf82..2c19dd3 100644 +--- a/defs.h ++++ b/defs.h +@@ -330,6 +330,7 @@ extern const struct xlat evdev_abs[]; + /** Number of elements in evdev_abs array without the terminating record. */ + extern const size_t evdev_abs_size; + ++extern const struct xlat evdev_ev[]; + extern const struct xlat iffflags[]; + extern const struct xlat ip_type_of_services[]; + extern const struct xlat ipc_private[]; +diff --git a/evdev.c b/evdev.c +index 3c1aaa8..cae2ef1 100644 +--- a/evdev.c ++++ b/evdev.c +@@ -30,6 +30,7 @@ + #include "defs.h" + + #include "xlat/evdev_abs.h" ++#include "xlat/evdev_ev.h" + + #ifdef HAVE_LINUX_INPUT_H + +@@ -47,7 +48,6 @@ + # include "xlat/evdev_relative_axes.h" + # include "xlat/evdev_snd.h" + # include "xlat/evdev_switch.h" +-# include "xlat/evdev_sync.h" + + # ifndef SYN_MAX + # define SYN_MAX 0xf +@@ -258,9 +258,9 @@ bit_ioctl(struct tcb *const tcp, const unsigned int ev_nr, + const kernel_ulong_t arg) + { + switch (ev_nr) { +- case EV_SYN: +- return decode_bitset(tcp, arg, evdev_sync, +- SYN_MAX, "SYN_???", XT_INDEXED); ++ case 0: ++ return decode_bitset(tcp, arg, evdev_ev, ++ EV_MAX, "EV_???", XT_SORTED); + case EV_KEY: + return decode_bitset(tcp, arg, evdev_keycode, + KEY_MAX, "KEY_???", XT_INDEXED); +diff --git a/ioctl.c b/ioctl.c +index 93fb526..66b10ec 100644 +--- a/ioctl.c ++++ b/ioctl.c +@@ -33,8 +33,6 @@ + #include + #include "xlat/ioctl_dirs.h" + +-#include "xlat/evdev_ev.h" +- + static int + compare(const void *a, const void *b) + { +@@ -99,7 +97,10 @@ evdev_decode_number(const unsigned int code) + + if (nr >= 0x20 && nr <= 0x20 + 0x1f) { + tprints("EVIOCGBIT("); +- printxval(evdev_ev, nr - 0x20, "EV_???"); ++ if (nr == 0x20) ++ tprintf("0"); ++ else ++ printxval(evdev_ev, nr - 0x20, "EV_???"); + tprintf(", %u)", _IOC_SIZE(code)); + return 1; + } else if (nr >= 0x40 && nr <= 0x40 + 0x3f) { +diff --git a/tests/ioctl_evdev.c b/tests/ioctl_evdev.c +index 5eacac0..071b6b0 100644 +--- a/tests/ioctl_evdev.c ++++ b/tests/ioctl_evdev.c +@@ -138,7 +138,7 @@ main(void) + TEST_NULL_ARG_EX(EVIOCGABS(0x3f), "EVIOCGABS(0x3f /* ABS_??? */)"); + TEST_NULL_ARG_EX(EVIOCSABS(0x3f), "EVIOCSABS(0x3f /* ABS_??? */)"); + +- TEST_NULL_ARG(EVIOCGBIT(EV_SYN, 0)); ++ TEST_NULL_ARG(EVIOCGBIT(0, 0)); + TEST_NULL_ARG(EVIOCGBIT(EV_KEY, 1)); + TEST_NULL_ARG(EVIOCGBIT(EV_REL, 2)); + TEST_NULL_ARG(EVIOCGBIT(EV_ABS, 3)); +diff --git a/xlat/evdev_sync.in b/xlat/evdev_sync.in +deleted file mode 100644 +index ca9ea50..0000000 +--- a/xlat/evdev_sync.in ++++ /dev/null +@@ -1,5 +0,0 @@ +-#value_indexed +-SYN_REPORT 0 +-SYN_CONFIG 1 +-SYN_MT_REPORT 2 +-SYN_DROPPED 3 +-- +1.7.12.4 + diff --git a/evdev-fix-decoding-of-bit-sets.patch b/evdev-fix-decoding-of-bit-sets.patch new file mode 100644 index 0000000..541adda --- /dev/null +++ b/evdev-fix-decoding-of-bit-sets.patch @@ -0,0 +1,37 @@ +From 99300f217b7870fcaa752e1350a33cf98d61a993 Mon Sep 17 00:00:00 2001 +From: Zhibin Li <08826794brmt@gmail.com> +Date: Wed, 1 Aug 2018 17:53:57 +0800 +Subject: [PATCH 005/293] evdev: fix decoding of bit sets + +According to drivers/input/evdev.c:bits_to_user(), +the Linux kernel returns the number of bytes, not bits. + +* evdev.c (decode_bitset_): Treat syscall return value as the number +of bytes. + +Co-Authored-by: Dmitry V. Levin +Fixes: v4.10~89 "Add decoding for evdev ioctls" +--- + evdev.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/evdev.c b/evdev.c +index 7ca15c9..3c1aaa8 100644 +--- a/evdev.c ++++ b/evdev.c +@@ -171,10 +171,10 @@ decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg, + tprints(", "); + + unsigned int size; +- if ((kernel_ulong_t) tcp->u_rval > max_nr) ++ if ((kernel_ulong_t) tcp->u_rval > max_nr / 8) + size = max_nr; + else +- size = tcp->u_rval; ++ size = tcp->u_rval * 8; + char decoded_arg[size]; + + if (umove_or_printaddr(tcp, arg, &decoded_arg)) +-- +17.12.4 + diff --git a/futex-recognise-FUTEX_BITSET_MATCH_ANY-bitmask.patch b/futex-recognise-FUTEX_BITSET_MATCH_ANY-bitmask.patch new file mode 100644 index 0000000..94eb34a --- /dev/null +++ b/futex-recognise-FUTEX_BITSET_MATCH_ANY-bitmask.patch @@ -0,0 +1,89 @@ +From c3ac40611c339ff0a80598a1f0bf5ab3d2120d99 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 29 Aug 2018 22:18:36 +0200 +Subject: [PATCH 065/293] futex: recognise FUTEX_BITSET_MATCH_ANY bitmask + +* xlat/futexbitset.in: New file. +* futex.c: Include "xlat/futexbitset.h". +(futex) : Decode val3 using +futexbitset xlat. +* tests/futex.c: Add checks for 0xffffffff bitset mask printing. + +Closes: Linux commit v4.16-rc1~166^2^2~2 +--- + futex.c | 7 +++++-- + tests/futex.c | 16 ++++++++++++++++ + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/futex.c b/futex.c +index 9ce4ced..e4dfa08 100644 +--- a/futex.c ++++ b/futex.c +@@ -41,6 +41,7 @@ + # define FUTEX_OP_OPARG_SHIFT 8 + #endif + ++#include "xlat/futexbitset.h" + #include "xlat/futexops.h" + #include "xlat/futexwakeops.h" + #include "xlat/futexwakecmps.h" +@@ -74,11 +75,13 @@ SYS_FUNC(futex) + tprintf(", %u", val); + tprints(", "); + print_timespec(tcp, timeout); +- tprintf(", %#x", val3); ++ tprints(", "); ++ printxval(futexbitset, val3, NULL); + break; + case FUTEX_WAKE_BITSET: + tprintf(", %u", val); +- tprintf(", %#x", val3); ++ tprints(", "); ++ printxval(futexbitset, val3, NULL); + break; + case FUTEX_REQUEUE: + tprintf(", %u", val); +diff --git a/tests/futex.c b/tests/futex.c +index 174100f..5250d60 100644 +--- a/tests/futex.c ++++ b/tests/futex.c +@@ -166,6 +166,9 @@ void invalid_op(int *val, int op, uint32_t argmask, ...) + # define VAL3 ((unsigned long) 0xbadda7a09caffee1LLU) + # define VAL3_PR ((unsigned) VAL3) + ++# define VAL3A ((unsigned long) 0xbadda7a0ffffffffLLU) ++# define VAL3A_PR "FUTEX_BITSET_MATCH_ANY" ++ + int + main(int argc, char *argv[]) + { +@@ -288,6 +291,14 @@ main(int argc, char *argv[]) + zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR, + sprintrc(rc)); + ++ CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, ++ VAL3A, (rc == -1) && (errno == EAGAIN)); ++ printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}" ++ ", %s) = %s\n", ++ uaddr, VAL_PR, (long long) tmout->tv_sec, ++ zero_extend_signed_to_ull(tmout->tv_nsec), VAL3A_PR, ++ sprintrc(rc)); ++ + /* val3 of 0 is invalid */ + CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0, + (rc == -1) && (errno == EINVAL)); +@@ -375,6 +386,11 @@ main(int argc, char *argv[]) + printf("futex(%p, FUTEX_WAKE_BITSET, %u, %#x) = %s\n", uaddr, 10, + VAL3_PR, sprintrc(rc)); + ++ CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAKE_BITSET, 10, NULL, NULL, ++ VAL3A, (rc == 0)); ++ printf("futex(%p, FUTEX_WAKE_BITSET, %u, %s) = %s\n", uaddr, 10, ++ VAL3A_PR, sprintrc(rc)); ++ + /* bitset 0 is invalid */ + CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAKE_BITSET, 10, NULL, NULL, 0, + (rc == -1) && (errno == EINVAL)); +-- +1.7.12.4 + diff --git a/ioprio-move-constant-definitions-to-xlat.patch b/ioprio-move-constant-definitions-to-xlat.patch new file mode 100644 index 0000000..086b872 --- /dev/null +++ b/ioprio-move-constant-definitions-to-xlat.patch @@ -0,0 +1,69 @@ +From 8a56b8a1b7c2f49ed90d152a1ff765214016c95a Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 21:26:04 +0200 +Subject: [PATCH 064/293] ioprio: move constant definitions to xlat + +* xlat/ioprio_class.in: Add fallback values. +* xlat/ioprio_who.in: Likewise. +* ioprio.c: Remove IOPRIO_WHO_* and IOPRIO_CLASS_* enums. +--- + ioprio.c | 14 -------------- + xlat/ioprio_class.in | 9 ++++----- + xlat/ioprio_who.in | 7 +++---- + 3 files changed, 7 insertions(+), 23 deletions(-) + +diff --git a/ioprio.c b/ioprio.c +index 19ea74c..a9d4288 100644 +--- a/ioprio.c ++++ b/ioprio.c +@@ -29,21 +29,7 @@ + #include "defs.h" + #include "xstring.h" + +-enum { +- IOPRIO_WHO_PROCESS = 1, +- IOPRIO_WHO_PGRP, +- IOPRIO_WHO_USER +-}; +- + #include "xlat/ioprio_who.h" +- +-enum { +- IOPRIO_CLASS_NONE, +- IOPRIO_CLASS_RT, +- IOPRIO_CLASS_BE, +- IOPRIO_CLASS_IDLE +-}; +- + #include "xlat/ioprio_class.h" + + #define IOPRIO_CLASS_SHIFT (13) +diff --git a/xlat/ioprio_class.in b/xlat/ioprio_class.in +index 5020e5a..f7a3ed2 100644 +--- a/xlat/ioprio_class.in ++++ b/xlat/ioprio_class.in +@@ -1,5 +1,4 @@ +-#unconditional +-IOPRIO_CLASS_NONE +-IOPRIO_CLASS_RT +-IOPRIO_CLASS_BE +-IOPRIO_CLASS_IDLE ++IOPRIO_CLASS_NONE 0 ++IOPRIO_CLASS_RT 1 ++IOPRIO_CLASS_BE 2 ++IOPRIO_CLASS_IDLE 3 +diff --git a/xlat/ioprio_who.in b/xlat/ioprio_who.in +index 20b1bd1..dfb967c 100644 +--- a/xlat/ioprio_who.in ++++ b/xlat/ioprio_who.in +@@ -1,4 +1,3 @@ +-#unconditional +-IOPRIO_WHO_PROCESS +-IOPRIO_WHO_PGRP +-IOPRIO_WHO_USER ++IOPRIO_WHO_PROCESS 1 ++IOPRIO_WHO_PGRP 2 ++IOPRIO_WHO_USER 3 +-- +1.7.12.4 + diff --git a/kvm-decode-the-argument-of-KVM_CHECK_EXTENSION.patch b/kvm-decode-the-argument-of-KVM_CHECK_EXTENSION.patch new file mode 100644 index 0000000..9592436 --- /dev/null +++ b/kvm-decode-the-argument-of-KVM_CHECK_EXTENSION.patch @@ -0,0 +1,234 @@ +From e38143b00e8b03462ec66c8d0bd6f9413f10656d Mon Sep 17 00:00:00 2001 +From: Pierre Marsais +Date: Thu, 16 Aug 2018 20:04:41 +0100 +Subject: [PATCH 004/293] kvm: decode the argument of KVM_CHECK_EXTENSION + +xlat/kvm_cap.in has been generated using the following command line: + +grep '#define\s\+KVM_CAP' $linux/include/uapi/linux/kvm.h | +sed -E -e 's/^#define\s+([^ \t]+)\s*([0-9]+).*$/printf "%-40s%s\n" \1 \2/e' \ + -e 's/ {8}/\t/g; s/ +/\t/g' + +* xlat/kvm_cap.in: New file. +* kvm.c: Include "xlat/kvm_cap.h". +(kvm_ioctl_decode_check_extension): New function. +(kvm_ioctl): Use it. +* tests/ioctl_kvm_run_common.c (main): Check decoding +of KVM_CHECK_EXTENSION command. + +Signed-off-by: Pierre Marsais +--- + kvm.c | 13 ++++ + tests/ioctl_kvm_run_common.c | 5 ++ + xlat/kvm_cap.in | 152 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 170 insertions(+) + create mode 100644 xlat/kvm_cap.in + +diff --git a/kvm.c b/kvm.c +index c284e83..36c6404 100644 +--- a/kvm.c ++++ b/kvm.c +@@ -323,6 +323,16 @@ kvm_ioctl_decode_sregs(struct tcb *const tcp, const unsigned int code, + } + # endif /* HAVE_STRUCT_KVM_SREGS */ + ++# include "xlat/kvm_cap.h" ++static int ++kvm_ioctl_decode_check_extension(struct tcb *const tcp, const unsigned int code, ++ const kernel_ulong_t arg) ++{ ++ tprints(", "); ++ printxval_index(kvm_cap, arg, "KVM_CAP_???"); ++ return RVAL_IOCTL_DECODED; ++} ++ + # include "xlat/kvm_exit_reason.h" + static void + kvm_ioctl_run_attach_auxstr(struct tcb *const tcp, +@@ -403,6 +413,9 @@ kvm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t a + return kvm_ioctl_decode_cpuid2(tcp, code, arg); + # endif + ++ case KVM_CHECK_EXTENSION: ++ return kvm_ioctl_decode_check_extension(tcp, code, arg); ++ + case KVM_CREATE_VM: + return RVAL_DECODED | RVAL_FD; + +diff --git a/tests/ioctl_kvm_run_common.c b/tests/ioctl_kvm_run_common.c +index 522935a..2e7eda4 100644 +--- a/tests/ioctl_kvm_run_common.c ++++ b/tests/ioctl_kvm_run_common.c +@@ -306,6 +306,11 @@ main(void) + printf("ioctl(%d<%s>, KVM_GET_API_VERSION, 0) = %d\n", + kvm, dev, ret); + ++ ret = KVM_IOCTL(kvm, KVM_CHECK_EXTENSION, ++ (void *) (uintptr_t) KVM_CAP_USER_MEMORY); ++ printf("ioctl(%d<%s>, KVM_CHECK_EXTENSION, KVM_CAP_USER_MEMORY) = %d\n", ++ kvm, dev, ret); ++ + int vm_fd = KVM_IOCTL(kvm, KVM_CREATE_VM, 0); + printf("ioctl(%d<%s>, KVM_CREATE_VM, 0) = %d<%s>\n", + kvm, dev, vm_fd, vm_dev); +diff --git a/xlat/kvm_cap.in b/xlat/kvm_cap.in +new file mode 100644 +index 0000000..a3819e7 +--- /dev/null ++++ b/xlat/kvm_cap.in +@@ -0,0 +1,152 @@ ++#value_indexed ++KVM_CAP_IRQCHIP 0 ++KVM_CAP_HLT 1 ++KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2 ++KVM_CAP_USER_MEMORY 3 ++KVM_CAP_SET_TSS_ADDR 4 ++KVM_CAP_VAPIC 6 ++KVM_CAP_EXT_CPUID 7 ++KVM_CAP_CLOCKSOURCE 8 ++KVM_CAP_NR_VCPUS 9 ++KVM_CAP_NR_MEMSLOTS 10 ++KVM_CAP_PIT 11 ++KVM_CAP_NOP_IO_DELAY 12 ++KVM_CAP_PV_MMU 13 ++KVM_CAP_MP_STATE 14 ++KVM_CAP_COALESCED_MMIO 15 ++KVM_CAP_SYNC_MMU 16 ++KVM_CAP_IOMMU 18 ++KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 ++KVM_CAP_USER_NMI 22 ++KVM_CAP_SET_GUEST_DEBUG 23 ++KVM_CAP_REINJECT_CONTROL 24 ++KVM_CAP_IRQ_ROUTING 25 ++KVM_CAP_IRQ_INJECT_STATUS 26 ++KVM_CAP_ASSIGN_DEV_IRQ 29 ++KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30 ++KVM_CAP_MCE 31 ++KVM_CAP_IRQFD 32 ++KVM_CAP_PIT2 33 ++KVM_CAP_SET_BOOT_CPU_ID 34 ++KVM_CAP_PIT_STATE2 35 ++KVM_CAP_IOEVENTFD 36 ++KVM_CAP_SET_IDENTITY_MAP_ADDR 37 ++KVM_CAP_XEN_HVM 38 ++KVM_CAP_ADJUST_CLOCK 39 ++KVM_CAP_INTERNAL_ERROR_DATA 40 ++KVM_CAP_VCPU_EVENTS 41 ++KVM_CAP_S390_PSW 42 ++KVM_CAP_PPC_SEGSTATE 43 ++KVM_CAP_HYPERV 44 ++KVM_CAP_HYPERV_VAPIC 45 ++KVM_CAP_HYPERV_SPIN 46 ++KVM_CAP_PCI_SEGMENT 47 ++KVM_CAP_PPC_PAIRED_SINGLES 48 ++KVM_CAP_INTR_SHADOW 49 ++KVM_CAP_DEBUGREGS 50 ++KVM_CAP_X86_ROBUST_SINGLESTEP 51 ++KVM_CAP_PPC_OSI 52 ++KVM_CAP_PPC_UNSET_IRQ 53 ++KVM_CAP_ENABLE_CAP 54 ++KVM_CAP_XSAVE 55 ++KVM_CAP_XCRS 56 ++KVM_CAP_PPC_GET_PVINFO 57 ++KVM_CAP_PPC_IRQ_LEVEL 58 ++KVM_CAP_ASYNC_PF 59 ++KVM_CAP_TSC_CONTROL 60 ++KVM_CAP_GET_TSC_KHZ 61 ++KVM_CAP_PPC_BOOKE_SREGS 62 ++KVM_CAP_SPAPR_TCE 63 ++KVM_CAP_PPC_SMT 64 ++KVM_CAP_PPC_RMA 65 ++KVM_CAP_MAX_VCPUS 66 ++KVM_CAP_PPC_HIOR 67 ++KVM_CAP_PPC_PAPR 68 ++KVM_CAP_SW_TLB 69 ++KVM_CAP_ONE_REG 70 ++KVM_CAP_S390_GMAP 71 ++KVM_CAP_TSC_DEADLINE_TIMER 72 ++KVM_CAP_S390_UCONTROL 73 ++KVM_CAP_SYNC_REGS 74 ++KVM_CAP_PCI_2_3 75 ++KVM_CAP_KVMCLOCK_CTRL 76 ++KVM_CAP_SIGNAL_MSI 77 ++KVM_CAP_PPC_GET_SMMU_INFO 78 ++KVM_CAP_S390_COW 79 ++KVM_CAP_PPC_ALLOC_HTAB 80 ++KVM_CAP_READONLY_MEM 81 ++KVM_CAP_IRQFD_RESAMPLE 82 ++KVM_CAP_PPC_BOOKE_WATCHDOG 83 ++KVM_CAP_PPC_HTAB_FD 84 ++KVM_CAP_S390_CSS_SUPPORT 85 ++KVM_CAP_PPC_EPR 86 ++KVM_CAP_ARM_PSCI 87 ++KVM_CAP_ARM_SET_DEVICE_ADDR 88 ++KVM_CAP_DEVICE_CTRL 89 ++KVM_CAP_IRQ_MPIC 90 ++KVM_CAP_PPC_RTAS 91 ++KVM_CAP_IRQ_XICS 92 ++KVM_CAP_ARM_EL1_32BIT 93 ++KVM_CAP_SPAPR_MULTITCE 94 ++KVM_CAP_EXT_EMUL_CPUID 95 ++KVM_CAP_HYPERV_TIME 96 ++KVM_CAP_IOAPIC_POLARITY_IGNORED 97 ++KVM_CAP_ENABLE_CAP_VM 98 ++KVM_CAP_S390_IRQCHIP 99 ++KVM_CAP_IOEVENTFD_NO_LENGTH 100 ++KVM_CAP_VM_ATTRIBUTES 101 ++KVM_CAP_ARM_PSCI_0_2 102 ++KVM_CAP_PPC_FIXUP_HCALL 103 ++KVM_CAP_PPC_ENABLE_HCALL 104 ++KVM_CAP_CHECK_EXTENSION_VM 105 ++KVM_CAP_S390_USER_SIGP 106 ++KVM_CAP_S390_VECTOR_REGISTERS 107 ++KVM_CAP_S390_MEM_OP 108 ++KVM_CAP_S390_USER_STSI 109 ++KVM_CAP_S390_SKEYS 110 ++KVM_CAP_MIPS_FPU 111 ++KVM_CAP_MIPS_MSA 112 ++KVM_CAP_S390_INJECT_IRQ 113 ++KVM_CAP_S390_IRQ_STATE 114 ++KVM_CAP_PPC_HWRNG 115 ++KVM_CAP_DISABLE_QUIRKS 116 ++KVM_CAP_X86_SMM 117 ++KVM_CAP_MULTI_ADDRESS_SPACE 118 ++KVM_CAP_GUEST_DEBUG_HW_BPS 119 ++KVM_CAP_GUEST_DEBUG_HW_WPS 120 ++KVM_CAP_SPLIT_IRQCHIP 121 ++KVM_CAP_IOEVENTFD_ANY_LENGTH 122 ++KVM_CAP_HYPERV_SYNIC 123 ++KVM_CAP_S390_RI 124 ++KVM_CAP_SPAPR_TCE_64 125 ++KVM_CAP_ARM_PMU_V3 126 ++KVM_CAP_VCPU_ATTRIBUTES 127 ++KVM_CAP_MAX_VCPU_ID 128 ++KVM_CAP_X2APIC_API 129 ++KVM_CAP_S390_USER_INSTR0 130 ++KVM_CAP_MSI_DEVID 131 ++KVM_CAP_PPC_HTM 132 ++KVM_CAP_SPAPR_RESIZE_HPT 133 ++KVM_CAP_PPC_MMU_RADIX 134 ++KVM_CAP_PPC_MMU_HASH_V3 135 ++KVM_CAP_IMMEDIATE_EXIT 136 ++KVM_CAP_MIPS_VZ 137 ++KVM_CAP_MIPS_TE 138 ++KVM_CAP_MIPS_64BIT 139 ++KVM_CAP_S390_GS 140 ++KVM_CAP_S390_AIS 141 ++KVM_CAP_SPAPR_TCE_VFIO 142 ++KVM_CAP_X86_DISABLE_EXITS 143 ++KVM_CAP_ARM_USER_IRQ 144 ++KVM_CAP_S390_CMMA_MIGRATION 145 ++KVM_CAP_PPC_FWNMI 146 ++KVM_CAP_PPC_SMT_POSSIBLE 147 ++KVM_CAP_HYPERV_SYNIC2 148 ++KVM_CAP_HYPERV_VP_INDEX 149 ++KVM_CAP_S390_AIS_MIGRATION 150 ++KVM_CAP_PPC_GET_CPU_CHAR 151 ++KVM_CAP_S390_BPB 152 ++KVM_CAP_GET_MSR_FEATURES 153 ++KVM_CAP_HYPERV_EVENTFD 154 ++KVM_CAP_HYPERV_TLBFLUSH 155 ++KVM_CAP_S390_HPAGE_1M 156 +-- +1.7.12.4 + diff --git a/net-add-support-for-AX.25-protocols-and-socket-optio.patch b/net-add-support-for-AX.25-protocols-and-socket-optio.patch new file mode 100644 index 0000000..13e9aa2 --- /dev/null +++ b/net-add-support-for-AX.25-protocols-and-socket-optio.patch @@ -0,0 +1,111 @@ +From cfb86ab4e94f0d453dcc7c604a14df47ef9b5739 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 06:22:52 +0200 +Subject: [PATCH 068/293] net: add support for AX.25 protocols and socket + option names decoding + +* xlat/ax25_protocols.in: New file. +* xlat/sock_ax25_options.in: Likewise. +* net.c: Include "xlat/ax25_protocols.h" and "xlat/sock_ax25_options.h". +* (SYS_FUNC(socket)): <[AF_AX25]>: Print protocol name using +ax25_protocols xlat. +(print_sockopt_fd_level_name) <[SOL_AX25]>: Print socket option name +using sock_ax25_options xlat. +--- + net.c | 11 +++++++++++ + xlat/ax25_protocols.in | 17 +++++++++++++++++ + xlat/sock_ax25_options.in | 15 +++++++++++++++ + 3 files changed, 43 insertions(+) + create mode 100644 xlat/ax25_protocols.in + create mode 100644 xlat/sock_ax25_options.in + +diff --git a/net.c b/net.c +index 58296b9..f791a92 100644 +--- a/net.c ++++ b/net.c +@@ -88,6 +88,7 @@ + # include "xlat/addrfams.h" + # include "xlat/ethernet_protocols.h" + #undef XLAT_MACROS_ONLY ++#include "xlat/ax25_protocols.h" + #include "xlat/irda_protocols.h" + #include "xlat/can_protocols.h" + #include "xlat/bt_protocols.h" +@@ -145,6 +146,12 @@ SYS_FUNC(socket) + printxval_search(inet_protocols, tcp->u_arg[2], "IPPROTO_???"); + break; + ++ case AF_AX25: ++ /* Those are not available in public headers. */ ++ printxval_searchn_ex(ARRSZ_PAIR(ax25_protocols), tcp->u_arg[2], ++ "AX25_P_???", XLAT_STYLE_VERBOSE); ++ break; ++ + case AF_NETLINK: + printxval(netlink_protocols, tcp->u_arg[2], "NETLINK_???"); + break; +@@ -445,6 +452,7 @@ SYS_FUNC(socketpair) + #include "xlat/getsock_ipv6_options.h" + #include "xlat/setsock_ipv6_options.h" + #include "xlat/sock_ipx_options.h" ++#include "xlat/sock_ax25_options.h" + #include "xlat/sock_netlink_options.h" + #include "xlat/sock_packet_options.h" + #include "xlat/sock_raw_options.h" +@@ -496,6 +504,9 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level, + case SOL_IPX: + printxval(sock_ipx_options, name, "IPX_???"); + break; ++ case SOL_AX25: ++ printxval_search(sock_ax25_options, name, "AX25_???"); ++ break; + case SOL_PACKET: + printxval(sock_packet_options, name, "PACKET_???"); + break; +diff --git a/xlat/ax25_protocols.in b/xlat/ax25_protocols.in +new file mode 100644 +index 0000000..89ced43 +--- /dev/null ++++ b/xlat/ax25_protocols.in +@@ -0,0 +1,17 @@ ++/* sorted */ ++/* Those are pulled from include/net/ax25.h, they should be part of UAPI */ ++AX25_P_ROSE 0x01 ++AX25_P_VJCOMP 0x06 /* Compressed TCP/IP packet */ ++ /* Van Jacobsen (RFC 1144) */ ++AX25_P_VJUNCOMP 0x07 /* Uncompressed TCP/IP packet */ ++ /* Van Jacobsen (RFC 1144) */ ++AX25_P_SEGMENT 0x08 /* Segmentation fragment */ ++AX25_P_TEXNET 0xc3 /* TEXTNET datagram protocol */ ++AX25_P_LQ 0xc4 /* Link Quality Protocol */ ++AX25_P_ATALK 0xca /* Appletalk */ ++AX25_P_ATALK_ARP 0xcb /* Appletalk ARP */ ++AX25_P_IP 0xcc /* ARPA Internet Protocol */ ++AX25_P_ARP 0xcd /* ARPA Address Resolution */ ++AX25_P_FLEXNET 0xce /* FlexNet */ ++AX25_P_NETROM 0xcf /* NET/ROM */ ++AX25_P_TEXT 0xf0 /* No layer 3 protocol impl. */ +diff --git a/xlat/sock_ax25_options.in b/xlat/sock_ax25_options.in +new file mode 100644 +index 0000000..4b6bed5 +--- /dev/null ++++ b/xlat/sock_ax25_options.in +@@ -0,0 +1,15 @@ ++/* sorted */ ++AX25_WINDOW 1 ++AX25_T1 2 ++AX25_N2 3 ++AX25_T3 4 ++AX25_T2 5 ++AX25_BACKOFF 6 ++AX25_EXTSEQ 7 ++AX25_PIDINCL 8 ++AX25_IDLE 9 ++AX25_PACLEN 10 ++AX25_IAMDIGI 12 ++ ++/* 13, 25, or 16409, depending on arch */ ++SO_BINDTODEVICE +-- +1.7.12.4 + diff --git a/net-decode-AF_PACKET-protocols-in-socket-syscall.patch b/net-decode-AF_PACKET-protocols-in-socket-syscall.patch new file mode 100644 index 0000000..dc0c2a7 --- /dev/null +++ b/net-decode-AF_PACKET-protocols-in-socket-syscall.patch @@ -0,0 +1,40 @@ +From 38e0f556022f9b38b401c63201b95a95fdefa91d Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 15:20:33 +0200 +Subject: [PATCH 063/293] net: decode AF_PACKET protocols in socket syscall + +* net.c: Include "xlat/ethernet_protocols.h" in XLAT_MACROS_ONLY mode. +(SYS_FUNC(socket)) : Decode using ethernet_protocols xlat. +--- + net.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/net.c b/net.c +index 66dde0f..58296b9 100644 +--- a/net.c ++++ b/net.c +@@ -86,6 +86,7 @@ + + #define XLAT_MACROS_ONLY + # include "xlat/addrfams.h" ++# include "xlat/ethernet_protocols.h" + #undef XLAT_MACROS_ONLY + #include "xlat/irda_protocols.h" + #include "xlat/can_protocols.h" +@@ -148,6 +149,13 @@ SYS_FUNC(socket) + printxval(netlink_protocols, tcp->u_arg[2], "NETLINK_???"); + break; + ++ case AF_PACKET: ++ tprints("htons("); ++ printxval_searchn(ethernet_protocols, ethernet_protocols_size, ++ ntohs(tcp->u_arg[2]), "ETH_P_???"); ++ tprints(")"); ++ break; ++ + case AF_IRDA: + printxval_index(can_protocols, tcp->u_arg[2], "IRDAPROTO_???"); + break; +-- +1.7.12.4 + diff --git a/net-decode-SOL_XDP-socket-option-names.patch b/net-decode-SOL_XDP-socket-option-names.patch new file mode 100644 index 0000000..9bd05a8 --- /dev/null +++ b/net-decode-SOL_XDP-socket-option-names.patch @@ -0,0 +1,54 @@ +From 1d7b8edda9837572e9ef53cac88d928f07cefacc Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 21:53:14 +0200 +Subject: [PATCH 045/293] net: decode SOL_XDP socket option names + +* xlat/sock_xdp_options.in: New file. +* net.c: Include "xlat/sock_xdp_options.h". +(print_sockopt_fd_level_name) : Print SOL_XDP socket +option names. +--- + net.c | 4 ++++ + xlat/sock_xdp_options.in | 8 ++++++++ + 2 files changed, 12 insertions(+) + create mode 100644 xlat/sock_xdp_options.in + +diff --git a/net.c b/net.c +index 1c4e8ba..66dde0f 100644 +--- a/net.c ++++ b/net.c +@@ -458,6 +458,7 @@ SYS_FUNC(socketpair) + #include "xlat/sock_nfcllcp_options.h" + #include "xlat/sock_kcm_options.h" + #include "xlat/sock_tls_options.h" ++#include "xlat/sock_xdp_options.h" + + static void + print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level, +@@ -550,6 +551,9 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level, + case SOL_TLS: + printxval(sock_tls_options, name, "TLS_???"); + break; ++ case SOL_XDP: ++ printxval_index(sock_xdp_options, name, "XDP_???"); ++ break; + + /* Other SOL_* protocol levels still need work. */ + +diff --git a/xlat/sock_xdp_options.in b/xlat/sock_xdp_options.in +new file mode 100644 +index 0000000..f2b7a68 +--- /dev/null ++++ b/xlat/sock_xdp_options.in +@@ -0,0 +1,8 @@ ++#value_indexed ++XDP_MMAP_OFFSETS 1 ++XDP_RX_RING 2 ++XDP_TX_RING 3 ++XDP_UMEM_REG 4 ++XDP_UMEM_FILL_RING 5 ++XDP_UMEM_COMPLETION_RING 6 ++XDP_STATISTICS 7 +-- +1.7.12.4 + diff --git a/net-enhance-decoding-of-getsockopt-SO_ERROR.patch b/net-enhance-decoding-of-getsockopt-SO_ERROR.patch new file mode 100644 index 0000000..baa4614 --- /dev/null +++ b/net-enhance-decoding-of-getsockopt-SO_ERROR.patch @@ -0,0 +1,60 @@ +From 692dbd2c3d2052025e3d4b121d94689f24458651 Mon Sep 17 00:00:00 2001 +From: Masatake YAMATO +Date: Tue, 18 Dec 2018 04:16:11 +0900 +Subject: [PATCH 146/293] net: enhance decoding of getsockopt(SO_ERROR) + +* net.c (print_get_error): New function decoding error +number returned as option value for SO_ERROR option. +(print_getsockopt) : Call print_get_error. + +* tests/so_error.c: New test. +* tests/gen_tests.in (so_error): Likewise. +* tests/pure_executables.list: Add so_error. + +Signed-off-by: Masatake YAMATO +Signed-off-by: Dmitry V. Levin +--- + net.c | 20 +++++++++ + 1 files changed, 20 insertions(+) + +diff --git a/net.c b/net.c +index 3058e2d..bcab329 100644 +--- a/net.c ++++ b/net.c +@@ -651,6 +651,23 @@ print_get_ucred(struct tcb *const tcp, const kernel_ulong_t addr, + tprints("}"); + } + ++static void ++print_get_error(struct tcb *const tcp, const kernel_ulong_t addr, ++ unsigned int len) ++{ ++ unsigned int err; ++ ++ if (len > sizeof(err)) ++ err = sizeof(err); ++ ++ if (umoven_or_printaddr(tcp, addr, len, &err)) ++ return; ++ ++ tprints("["); ++ print_xlat_ex(err, err_name(err), XLAT_STYLE_FMT_U); ++ tprints("]"); ++} ++ + #ifdef PACKET_STATISTICS + static void + print_tpacket_stats(struct tcb *const tcp, const kernel_ulong_t addr, +@@ -766,6 +783,9 @@ print_getsockopt(struct tcb *const tcp, const unsigned int level, + else + printaddr(addr); + return; ++ case SO_ERROR: ++ print_get_error(tcp, addr, rlen); ++ return; + } + break; + +-- +1.7.12.4 + diff --git a/netlink_packet_diag-assorted-decoding-fixes.patch b/netlink_packet_diag-assorted-decoding-fixes.patch new file mode 100644 index 0000000..b623361 --- /dev/null +++ b/netlink_packet_diag-assorted-decoding-fixes.patch @@ -0,0 +1,175 @@ +From ac2f6695cd896d9b33f9b39efb167db7fb893d2d Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 21:34:06 +0200 +Subject: [PATCH 070/293] netlink_packet_diag: assorted decoding fixes + +* xlat/af_packet_versions.in: New file. +* netlink_packet_diag.c: Include "xlat/af_packet_versions.h". +(decode_packet_diag_req): sdiag_protocol shouldn't be decoded as a protocol, +currently it should be set to 0. +(decode_packet_diag_info): Decode pdi_version field using af_packet_versions +xlat; decode pdi_index field as an interface index. +(packet_diag_msg_nla_decoders) : Decode using +decode_nla_uid. +(decode_packet_diag_msg): Decode pdiag_num as an low-level protocol. +* tests/netlink_sock_diag.c: Update expected output. +* tests/nlattr_packet_diag_msg.c: Likewise. +--- + netlink_packet_diag.c | 22 ++++++++++++++-------- + tests/netlink_sock_diag.c | 6 +++--- + tests/nlattr_packet_diag_msg.c | 15 ++++++++------- + xlat/af_packet_versions.in | 3 +++ + 4 files changed, 28 insertions(+), 18 deletions(-) + create mode 100644 xlat/af_packet_versions.in + +diff --git a/netlink_packet_diag.c b/netlink_packet_diag.c +index 18b7091..9794f56 100644 +--- a/netlink_packet_diag.c ++++ b/netlink_packet_diag.c +@@ -37,6 +37,7 @@ + #include + #include + ++#include "xlat/af_packet_versions.h" + #include "xlat/packet_diag_attrs.h" + #include "xlat/packet_diag_info_flags.h" + #include "xlat/packet_diag_show.h" +@@ -52,10 +53,11 @@ DECL_NETLINK_DIAG_DECODER(decode_packet_diag_req) + if (!umoven_or_printaddr(tcp, addr + offset, + sizeof(req) - offset, + (char *) &req + offset)) { +- tprints("sdiag_protocol="); +- printxval_searchn(ethernet_protocols, +- ethernet_protocols_size, +- req.sdiag_protocol, "ETH_P_???"); ++ /* ++ * AF_PACKET currently doesn't support protocol values ++ * other than 0. ++ */ ++ PRINT_FIELD_X("", req, sdiag_protocol); + PRINT_FIELD_U(", ", req, pdiag_ino); + PRINT_FIELD_FLAGS(", ", req, pdiag_show, + packet_diag_show, "PACKET_SHOW_???"); +@@ -79,8 +81,9 @@ decode_packet_diag_info(struct tcb *const tcp, + if (umove_or_printaddr(tcp, addr, &pinfo)) + return true; + +- PRINT_FIELD_U("{", pinfo, pdi_index); +- PRINT_FIELD_U(", ", pinfo, pdi_version); ++ PRINT_FIELD_IFINDEX("{", pinfo, pdi_index); ++ PRINT_FIELD_XVAL(", ", pinfo, pdi_version, af_packet_versions, ++ "TPACKET_???"); + PRINT_FIELD_U(", ", pinfo, pdi_reserve); + PRINT_FIELD_U(", ", pinfo, pdi_copy_thresh); + PRINT_FIELD_U(", ", pinfo, pdi_tstamp); +@@ -172,7 +175,7 @@ static const nla_decoder_t packet_diag_msg_nla_decoders[] = { + [PACKET_DIAG_RX_RING] = decode_packet_diag_ring, + [PACKET_DIAG_TX_RING] = decode_packet_diag_ring, + [PACKET_DIAG_FANOUT] = decode_nla_u32, +- [PACKET_DIAG_UID] = decode_nla_u32, ++ [PACKET_DIAG_UID] = decode_nla_uid, + [PACKET_DIAG_MEMINFO] = decode_nla_meminfo, + [PACKET_DIAG_FILTER] = decode_packet_diag_filter + }; +@@ -191,7 +194,10 @@ DECL_NETLINK_DIAG_DECODER(decode_packet_diag_msg) + (char *) &msg + offset)) { + PRINT_FIELD_XVAL("", msg, pdiag_type, + socktypes, "SOCK_???"); +- PRINT_FIELD_U(", ", msg, pdiag_num); ++ PRINT_FIELD_XVAL_SORTED_SIZED(", ", msg, pdiag_num, ++ ethernet_protocols, ++ ethernet_protocols_size, ++ "ETH_P_???"); + PRINT_FIELD_U(", ", msg, pdiag_ino); + PRINT_FIELD_COOKIE(", ", msg, pdiag_cookie); + decode_nla = true; +diff --git a/tests/netlink_sock_diag.c b/tests/netlink_sock_diag.c +index dfe3526..6049253 100644 +--- a/tests/netlink_sock_diag.c ++++ b/tests/netlink_sock_diag.c +@@ -338,7 +338,7 @@ test_packet_diag_req(const int fd) + TEST_SOCK_DIAG(fd, nlh0, AF_PACKET, + SOCK_DIAG_BY_FAMILY, NLM_F_REQUEST, req, + printf("{sdiag_family=AF_PACKET"), +- printf(", sdiag_protocol=ETH_P_LOOP"); ++ printf(", sdiag_protocol=%#x", req.sdiag_protocol); + PRINT_FIELD_U(", ", req, pdiag_ino); + printf(", pdiag_show=PACKET_SHOW_INFO"); + PRINT_FIELD_COOKIE(", ", req, pdiag_cookie); +@@ -351,7 +351,7 @@ test_packet_diag_msg(const int fd) + static const struct packet_diag_msg msg = { + .pdiag_family = AF_PACKET, + .pdiag_type = SOCK_STREAM, +- .pdiag_num = 0xbadc, ++ .pdiag_num = 0x9100, + .pdiag_ino = 0xfacefeed, + .pdiag_cookie = { 0xdeadbeef, 0xbadc0ded } + }; +@@ -360,7 +360,7 @@ test_packet_diag_msg(const int fd) + SOCK_DIAG_BY_FAMILY, NLM_F_DUMP, msg, + printf("{pdiag_family=AF_PACKET"), + printf(", pdiag_type=SOCK_STREAM"); +- PRINT_FIELD_U(", ", msg, pdiag_num); ++ printf(", pdiag_num=ETH_P_QINQ1"); + PRINT_FIELD_U(", ", msg, pdiag_ino); + PRINT_FIELD_COOKIE(", ", msg, pdiag_cookie); + printf("}")); +diff --git a/tests/nlattr_packet_diag_msg.c b/tests/nlattr_packet_diag_msg.c +index 016d052..6ac9907 100644 +--- a/tests/nlattr_packet_diag_msg.c ++++ b/tests/nlattr_packet_diag_msg.c +@@ -51,7 +51,8 @@ init_packet_diag_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) + struct packet_diag_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct packet_diag_msg, msg, + .pdiag_family = AF_PACKET, +- .pdiag_type = SOCK_STREAM ++ .pdiag_type = SOCK_STREAM, ++ .pdiag_num = 3, + ); + } + +@@ -61,7 +62,7 @@ print_packet_diag_msg(const unsigned int msg_len) + printf("{len=%u, type=SOCK_DIAG_BY_FAMILY" + ", flags=NLM_F_DUMP, seq=0, pid=0}" + ", {pdiag_family=AF_PACKET" +- ", pdiag_type=SOCK_STREAM, pdiag_num=0" ++ ", pdiag_type=SOCK_STREAM, pdiag_num=ETH_P_ALL" + ", pdiag_ino=0, pdiag_cookie=[0, 0]}", + msg_len); + } +@@ -98,9 +99,9 @@ main(void) + { + skip_if_unavailable("/proc/self/fd/"); + +- static const struct packet_diag_info pinfo = { +- .pdi_index = 0xabcddafa, +- .pdi_version = 0xbabcdafb, ++ struct packet_diag_info pinfo = { ++ .pdi_index = ifindex_lo(), ++ .pdi_version = 2, + .pdi_reserve = 0xcfaacdaf, + .pdi_copy_thresh = 0xdabacdaf, + .pdi_tstamp = 0xeafbaadf, +@@ -143,8 +144,8 @@ main(void) + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_packet_diag_msg, print_packet_diag_msg, + PACKET_DIAG_INFO, pattern, pinfo, +- PRINT_FIELD_U("{", pinfo, pdi_index); +- PRINT_FIELD_U(", ", pinfo, pdi_version); ++ printf("{pdi_index=%s", IFINDEX_LO_STR); ++ printf(", pdi_version=TPACKET_V3"); + PRINT_FIELD_U(", ", pinfo, pdi_reserve); + PRINT_FIELD_U(", ", pinfo, pdi_copy_thresh); + PRINT_FIELD_U(", ", pinfo, pdi_tstamp); +diff --git a/xlat/af_packet_versions.in b/xlat/af_packet_versions.in +new file mode 100644 +index 0000000..399cdf4 +--- /dev/null ++++ b/xlat/af_packet_versions.in +@@ -0,0 +1,3 @@ ++TPACKET_V1 0 ++TPACKET_V2 1 ++TPACKET_V3 2 +-- +1.7.12.4 + diff --git a/netlink_smc_diag-add-SMC_DIAG_FALLBACK-attribute-sup.patch b/netlink_smc_diag-add-SMC_DIAG_FALLBACK-attribute-sup.patch new file mode 100644 index 0000000..e5925da --- /dev/null +++ b/netlink_smc_diag-add-SMC_DIAG_FALLBACK-attribute-sup.patch @@ -0,0 +1,137 @@ +From df7dd5aa664e499058039f7526a51adc376e9756 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:20:33 +0200 +Subject: [PATCH 032/293] netlink_smc_diag: add SMC_DIAG_FALLBACK attribute + support + +Introduced by Linux commit v4.19-rc1~140^2~253^2~1. + +* linux/smc_diag.h (SMC_DIAG_FALLBACK): New enumeration item. +(struct smc_diag_fallback): New type definition. +* netlink_smc_diag.c: Include "xlat/smc_decl_codes.h". +(decode_smc_diag_fallback): New function. +(smc_diag_msg_nla_decoders) <[SMC_DIAG_FALLBACK]>: New decoder, calls +decode_smc_diag_fallback. +* tests/nlattr_smc_diag_msg.c: Add checks for SMC_DIAG_FALLBACK +attribute decoding. +* xlat/smc_decl_codes.in: New file. +* xlat/smc_diag_attrs.in (SMC_DIAG_FALLBACK): New constant. +--- + linux/smc_diag.h | 7 +++++++ + netlink_smc_diag.c | 29 +++++++++++++++++++++++++++++ + xlat/smc_decl_codes.in | 17 +++++++++++++++++ + xlat/smc_diag_attrs.in | 1 + + 4 files changed, 54 insertions(+) + create mode 100644 xlat/smc_decl_codes.in + +diff --git a/linux/smc_diag.h b/linux/smc_diag.h +index 287cb55..ebdbe8c 100644 +--- a/linux/smc_diag.h ++++ b/linux/smc_diag.h +@@ -31,6 +31,7 @@ enum { + SMC_DIAG_LGRINFO, + SMC_DIAG_SHUTDOWN, + SMC_DIAG_DMBINFO, ++ SMC_DIAG_FALLBACK, + }; + + /* SMC_DIAG_CONNINFO */ +@@ -82,4 +83,10 @@ struct smcd_diag_dmbinfo { + uint64_t ATTRIBUTE_ALIGNED(8) peer_token; + }; + ++/* SMC_DIAG_FALLBACK */ ++struct smc_diag_fallback { ++ uint32_t reason; ++ uint32_t peer_diagnosis; ++}; ++ + #endif /* !STRACE_LINUX_SMC_DIAG_H */ +diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c +index c2e2c66..b9293a9 100644 +--- a/netlink_smc_diag.c ++++ b/netlink_smc_diag.c +@@ -43,6 +43,7 @@ + # include + # include + ++# include "xlat/smc_decl_codes.h" + # include "xlat/smc_diag_attrs.h" + # include "xlat/smc_diag_extended_flags.h" + # include "xlat/smc_diag_mode.h" +@@ -169,12 +170,40 @@ decode_smc_diag_dmbinfo(struct tcb *const tcp, + + return true; + } ++static bool ++decode_smc_diag_fallback(struct tcb *const tcp, ++ const kernel_ulong_t addr, ++ const unsigned int len, ++ const void *const opaque_data) ++{ ++ struct smc_diag_fallback fb; ++ ++ if (len < sizeof(fb)) ++ return false; ++ if (umove_or_printaddr(tcp, addr, &fb)) ++ return true; ++ ++ /* ++ * We print them verbose since they are defined in a non-UAPI header, ++ * net/smc/smc_clc.h ++ */ ++ tprints("{reason="); ++ printxval_search_ex(smc_decl_codes, fb.reason, ++ "SMC_CLC_DECL_???"); ++ tprints(", peer_diagnosis="); ++ printxval_search_ex(smc_decl_codes, fb.peer_diagnosis, ++ "SMC_CLC_DECL_???"); ++ tprints("}"); ++ ++ return true; ++} + + static const nla_decoder_t smc_diag_msg_nla_decoders[] = { + [SMC_DIAG_CONNINFO] = decode_smc_diag_conninfo, + [SMC_DIAG_LGRINFO] = decode_smc_diag_lgrinfo, + [SMC_DIAG_SHUTDOWN] = decode_nla_u8, + [SMC_DIAG_DMBINFO] = decode_smc_diag_dmbinfo, ++ [SMC_DIAG_FALLBACK] = decode_smc_diag_fallback, + }; + + DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg) +diff --git a/xlat/smc_decl_codes.in b/xlat/smc_decl_codes.in +new file mode 100644 +index 0000000..d7810f8 +--- /dev/null ++++ b/xlat/smc_decl_codes.in +@@ -0,0 +1,17 @@ ++/* sorted */ ++SMC_CLC_DECL_MEM 0x01010000 ++SMC_CLC_DECL_TIMEOUT_CL 0x02010000 ++SMC_CLC_DECL_TIMEOUT_AL 0x02020000 ++SMC_CLC_DECL_CNFERR 0x03000000 ++SMC_CLC_DECL_PEERNOSMC 0x03010000 ++SMC_CLC_DECL_IPSEC 0x03020000 ++SMC_CLC_DECL_NOSMCDEV 0x03030000 ++SMC_CLC_DECL_MODEUNSUPP 0x03040000 ++SMC_CLC_DECL_RMBE_EC 0x03050000 ++SMC_CLC_DECL_OPTUNSUPP 0x03060000 ++SMC_CLC_DECL_SYNCERR 0x04000000 ++SMC_CLC_DECL_PEERDECL 0x05000000 ++SMC_CLC_DECL_INTERR 0x99990000 ++SMC_CLC_DECL_ERR_RTOK 0x99990001 ++SMC_CLC_DECL_ERR_RDYLNK 0x99990002 ++SMC_CLC_DECL_ERR_REGRMB 0x99990003 +diff --git a/xlat/smc_diag_attrs.in b/xlat/smc_diag_attrs.in +index 023f398..8d0ebeb 100644 +--- a/xlat/smc_diag_attrs.in ++++ b/xlat/smc_diag_attrs.in +@@ -4,3 +4,4 @@ SMC_DIAG_CONNINFO + SMC_DIAG_LGRINFO + SMC_DIAG_SHUTDOWN + SMC_DIAG_DMBINFO ++SMC_DIAG_FALLBACK +-- +1.7.12.4 + diff --git a/netlink_smc_diag-decode-SMC_DIAG_SHUTDOWN-attribute-.patch b/netlink_smc_diag-decode-SMC_DIAG_SHUTDOWN-attribute-.patch new file mode 100644 index 0000000..8919a04 --- /dev/null +++ b/netlink_smc_diag-decode-SMC_DIAG_SHUTDOWN-attribute-.patch @@ -0,0 +1,71 @@ +From 587d1d56630bd7e193ffe50834e57431454d1003 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 21:33:26 +0200 +Subject: [PATCH 042/293] netlink_smc_diag: decode SMC_DIAG_SHUTDOWN attribute + value + +* xlat/sock_shutdown_flags.in: New file. +* netlink_smc_diag.c: Include "xlat/sock_shutdown_flags.h". +(decode_smc_diag_shutdown): New function. +(smc_diag_msg_nla_decoders) <[SMC_DIAG_SHUTDOWN]>: Use +decode_smc_diag_shutdown. +* tests/nlattr_smc_diag_msg.c: Add checks for SMC_DIAG_SHUTDOWN. +--- + netlink_smc_diag.c | 17 ++++++++++++++++- + xlat/sock_shutdown_flags.in | 2 ++ + 2 files changed, 18 insertions(+), 1 deletion(-) + create mode 100644 xlat/sock_shutdown_flags.in + +diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c +index b9293a9..0248712 100644 +--- a/netlink_smc_diag.c ++++ b/netlink_smc_diag.c +@@ -49,6 +49,7 @@ + # include "xlat/smc_diag_mode.h" + # include "xlat/smc_link_group_roles.h" + # include "xlat/smc_states.h" ++# include "xlat/sock_shutdown_flags.h" + + DECL_NETLINK_DIAG_DECODER(decode_smc_diag_req) + { +@@ -149,6 +150,20 @@ decode_smc_diag_lgrinfo(struct tcb *const tcp, + } + + static bool ++decode_smc_diag_shutdown(struct tcb *const tcp, ++ const kernel_ulong_t addr, ++ const unsigned int len, ++ const void *const opaque_data) ++{ ++ const struct decode_nla_xlat_opts opts = { ++ ARRSZ_PAIR(sock_shutdown_flags), "???_SHUTDOWN", ++ .size = 1, ++ }; ++ ++ return decode_nla_flags(tcp, addr, len, &opts); ++} ++ ++static bool + decode_smc_diag_dmbinfo(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, +@@ -201,7 +216,7 @@ decode_smc_diag_fallback(struct tcb *const tcp, + static const nla_decoder_t smc_diag_msg_nla_decoders[] = { + [SMC_DIAG_CONNINFO] = decode_smc_diag_conninfo, + [SMC_DIAG_LGRINFO] = decode_smc_diag_lgrinfo, +- [SMC_DIAG_SHUTDOWN] = decode_nla_u8, ++ [SMC_DIAG_SHUTDOWN] = decode_smc_diag_shutdown, + [SMC_DIAG_DMBINFO] = decode_smc_diag_dmbinfo, + [SMC_DIAG_FALLBACK] = decode_smc_diag_fallback, + }; +diff --git a/xlat/sock_shutdown_flags.in b/xlat/sock_shutdown_flags.in +new file mode 100644 +index 0000000..ff7d432 +--- /dev/null ++++ b/xlat/sock_shutdown_flags.in +@@ -0,0 +1,2 @@ ++RCV_SHUTDOWN 1 ++SEND_SHUTDOWN 2 +-- +1.7.12.4 + diff --git a/netlink_smc_diag-decode-smc_diag_msg.diag_fallback-c.patch b/netlink_smc_diag-decode-smc_diag_msg.diag_fallback-c.patch new file mode 100644 index 0000000..34f1908 --- /dev/null +++ b/netlink_smc_diag-decode-smc_diag_msg.diag_fallback-c.patch @@ -0,0 +1,93 @@ +From f7d175b562bda6c36f5d7303e497d0fd7cbf4cdd Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:56:21 +0200 +Subject: [PATCH 029/293] netlink_smc_diag: decode smc_diag_msg.diag_fallback + constant names + +Introduced by Linux commit v4.19-rc1~140^2~285^2~4. + +* xlat/smc_diag_mode.in: New file. +* netlink_smc_diag.c: Include "xlat/smc_diag_mode.h". +(decode_smc_diag_msg): Print diag_fallback field using smc_diag_mode +xlat. +* tests/netlink_sock_diag.c (test_smc_diag_msg): Update expected output. +* tests/nlattr_smc_diag_msg.c (print_smc_diag_msg): Likewise. +--- + netlink_smc_diag.c | 5 ++++- + tests/netlink_sock_diag.c | 4 ++-- + tests/nlattr_smc_diag_msg.c | 2 +- + xlat/smc_diag_mode.in | 4 ++++ + 4 files changed, 11 insertions(+), 4 deletions(-) + create mode 100644 xlat/smc_diag_mode.in + +diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c +index 42369ad..c2e2c66 100644 +--- a/netlink_smc_diag.c ++++ b/netlink_smc_diag.c +@@ -45,6 +45,7 @@ + + # include "xlat/smc_diag_attrs.h" + # include "xlat/smc_diag_extended_flags.h" ++# include "xlat/smc_diag_mode.h" + # include "xlat/smc_link_group_roles.h" + # include "xlat/smc_states.h" + +@@ -190,7 +191,9 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg) + (void *) &msg + offset)) { + PRINT_FIELD_XVAL("", msg, diag_state, + smc_states, "SMC_???"); +- PRINT_FIELD_U(", ", msg, diag_fallback); ++ PRINT_FIELD_XVAL_INDEX(", ", msg, diag_fallback, ++ smc_diag_mode, ++ "SMC_DIAG_MODE_???"); + PRINT_FIELD_U(", ", msg, diag_shutdown); + /* + * AF_SMC protocol family socket handler +diff --git a/tests/netlink_sock_diag.c b/tests/netlink_sock_diag.c +index 880069f..dfe3526 100644 +--- a/tests/netlink_sock_diag.c ++++ b/tests/netlink_sock_diag.c +@@ -609,7 +609,7 @@ test_smc_diag_msg(const int fd) + struct smc_diag_msg msg = { + .diag_family = AF_SMC, + .diag_state = SMC_ACTIVE, +- .diag_fallback = 0xde, ++ .diag_fallback = 0x1, + .diag_shutdown = 0xba, + .id = { + .idiag_sport = 0xdead, +@@ -630,7 +630,7 @@ test_smc_diag_msg(const int fd) + SOCK_DIAG_BY_FAMILY, NLM_F_DUMP, msg, + printf("{diag_family=AF_SMC"), + printf(", diag_state=SMC_ACTIVE"); +- PRINT_FIELD_U(", ", msg, diag_fallback); ++ printf(", diag_fallback=SMC_DIAG_MODE_FALLBACK_TCP"); + PRINT_FIELD_U(", ", msg, diag_shutdown); + printf(", id={idiag_sport=htons(%u)" + ", idiag_dport=htons(%u)" +diff --git a/tests/nlattr_smc_diag_msg.c b/tests/nlattr_smc_diag_msg.c +index 227ade0..1389027 100644 +--- a/tests/nlattr_smc_diag_msg.c ++++ b/tests/nlattr_smc_diag_msg.c +@@ -77,7 +77,7 @@ print_smc_diag_msg(const unsigned int msg_len) + printf("{len=%u, type=SOCK_DIAG_BY_FAMILY" + ", flags=NLM_F_DUMP, seq=0, pid=0}" + ", {diag_family=AF_SMC, diag_state=SMC_ACTIVE" +- ", diag_fallback=0, diag_shutdown=0" ++ ", diag_fallback=SMC_DIAG_MODE_SMCR, diag_shutdown=0" + ", id={idiag_sport=htons(0), idiag_dport=htons(0)" + ", idiag_src=inet_addr(\"%s\")" + ", idiag_dst=inet_addr(\"%s\")" +diff --git a/xlat/smc_diag_mode.in b/xlat/smc_diag_mode.in +new file mode 100644 +index 0000000..4ac3963 +--- /dev/null ++++ b/xlat/smc_diag_mode.in +@@ -0,0 +1,4 @@ ++#value_indexed ++SMC_DIAG_MODE_SMCR 0 ++SMC_DIAG_MODE_FALLBACK_TCP 1 ++SMC_DIAG_MODE_SMCD 2 +-- +1.7.12.4 + diff --git a/netlink_smc_diag-implement-SMC_DIAG_DMBINFO-decoding.patch b/netlink_smc_diag-implement-SMC_DIAG_DMBINFO-decoding.patch new file mode 100644 index 0000000..6a4d545 --- /dev/null +++ b/netlink_smc_diag-implement-SMC_DIAG_DMBINFO-decoding.patch @@ -0,0 +1,115 @@ +From cf174ac87a04d386513b5af9bf5cc08dc333febf Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 10:48:06 +0200 +Subject: [PATCH 021/293] netlink_smc_diag: implement SMC_DIAG_DMBINFO + decoding + +The message has been added by Linux commit v4.19-rc1~140^2~507^2~1. + +* linux/smc_diag.h: Include "gcc_compat.h". +(enum): Add SMC_DIAG_DMBINFO. +(struct smcd_diag_dmbinfo): New type definition. +* xlat/smc_diag_attrs.in (SMC_DIAG_DMBINFO): New constant. +* netlink_smc_diag.c (decode_smc_diag_dmbinfo): New function. +(smc_diag_msg_nla_decoders) [SMC_DIAG_DMBINFO]: New decoder, calls +decode_smc_diag_dmbinfo. +* tests/nlattr_smc_diag_msg.c: Add SMC_DIAG_DMBINFO check. +--- + linux/smc_diag.h | 13 +++++++++++++ + netlink_smc_diag.c | 26 +++++++++++++++++++++++++- + xlat/smc_diag_attrs.in | 1 + + 3 files changed, 39 insertions(+), 1 deletion(-) + +diff --git a/linux/smc_diag.h b/linux/smc_diag.h +index a9d4a51..287cb55 100644 +--- a/linux/smc_diag.h ++++ b/linux/smc_diag.h +@@ -3,6 +3,8 @@ + + #include + ++#include "gcc_compat.h" ++ + /* Request structure */ + struct smc_diag_req { + uint8_t diag_family; +@@ -28,6 +30,7 @@ enum { + SMC_DIAG_CONNINFO, + SMC_DIAG_LGRINFO, + SMC_DIAG_SHUTDOWN, ++ SMC_DIAG_DMBINFO, + }; + + /* SMC_DIAG_CONNINFO */ +@@ -64,9 +67,19 @@ struct smc_diag_linkinfo { + uint8_t peer_gid[40]; + }; + ++/* SMC_DIAG_LGRINFO */ + struct smc_diag_lgrinfo { + struct smc_diag_linkinfo lnk[1]; + uint8_t role; + }; + ++/* SMC_DIAG_DMBINFO */ ++struct smcd_diag_dmbinfo { ++ uint32_t linkid; ++ uint64_t ATTRIBUTE_ALIGNED(8) peer_gid; ++ uint64_t ATTRIBUTE_ALIGNED(8) my_gid; ++ uint64_t ATTRIBUTE_ALIGNED(8) token; ++ uint64_t ATTRIBUTE_ALIGNED(8) peer_token; ++}; ++ + #endif /* !STRACE_LINUX_SMC_DIAG_H */ +diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c +index 4ce31e7..42369ad 100644 +--- a/netlink_smc_diag.c ++++ b/netlink_smc_diag.c +@@ -146,10 +146,34 @@ decode_smc_diag_lgrinfo(struct tcb *const tcp, + return true; + } + ++static bool ++decode_smc_diag_dmbinfo(struct tcb *const tcp, ++ const kernel_ulong_t addr, ++ const unsigned int len, ++ const void *const opaque_data) ++{ ++ struct smcd_diag_dmbinfo dinfo; ++ ++ if (len < sizeof(dinfo)) ++ return false; ++ if (umove_or_printaddr(tcp, addr, &dinfo)) ++ return true; ++ ++ PRINT_FIELD_U("{", dinfo, linkid); ++ PRINT_FIELD_X(", ", dinfo, peer_gid); ++ PRINT_FIELD_X(", ", dinfo, my_gid); ++ PRINT_FIELD_X(", ", dinfo, token); ++ PRINT_FIELD_X(", ", dinfo, peer_token); ++ tprints("}"); ++ ++ return true; ++} ++ + static const nla_decoder_t smc_diag_msg_nla_decoders[] = { + [SMC_DIAG_CONNINFO] = decode_smc_diag_conninfo, + [SMC_DIAG_LGRINFO] = decode_smc_diag_lgrinfo, +- [SMC_DIAG_SHUTDOWN] = decode_nla_u8 ++ [SMC_DIAG_SHUTDOWN] = decode_nla_u8, ++ [SMC_DIAG_DMBINFO] = decode_smc_diag_dmbinfo, + }; + + DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg) +diff --git a/xlat/smc_diag_attrs.in b/xlat/smc_diag_attrs.in +index cd6179b..023f398 100644 +--- a/xlat/smc_diag_attrs.in ++++ b/xlat/smc_diag_attrs.in +@@ -3,3 +3,4 @@ SMC_DIAG_NONE + SMC_DIAG_CONNINFO + SMC_DIAG_LGRINFO + SMC_DIAG_SHUTDOWN ++SMC_DIAG_DMBINFO +-- +1.7.12.4 + diff --git a/ptrace_restart-do-not-print-diagnostics-when-ptrace-.patch b/ptrace_restart-do-not-print-diagnostics-when-ptrace-.patch new file mode 100644 index 0000000..49c3c82 --- /dev/null +++ b/ptrace_restart-do-not-print-diagnostics-when-ptrace-.patch @@ -0,0 +1,41 @@ +From e0632590bdc041ef937ecf0491d6cd1504dec36f Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 11 Feb 2019 00:57:38 +0100 +Subject: [PATCH 227/293] ptrace_restart: do not print diagnostics when ptrace + returns ESRCH + +After some discussion, it was decided that the situation +when the tracee is gone does not worth reporting. + +* strace.c (ptrace_restart): Return early if ptrace returned ESRCH. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1662936 +--- + strace.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/strace.c b/strace.c +index e083cc3..ce89d5c 100644 +--- a/strace.c ++++ b/strace.c +@@ -366,7 +366,7 @@ ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + errno = 0; + ptrace(op, tcp->pid, 0L, (unsigned long) sig); + err = errno; +- if (!err) ++ if (!err || err == ESRCH) + return 0; + + /* +@@ -383,8 +383,6 @@ ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + tcp->pid, ptrace_op_str(op), strerror(err)); + line_ended(); + } +- if (err == ESRCH) +- return 0; + errno = err; + perror_msg("ptrace(%s,pid:%d,sig:%u)", + ptrace_op_str(op), tcp->pid, sig); +-- +1.7.12.4 + diff --git a/ptrace_restart-use-xlat-based-approach-for-printing-.patch b/ptrace_restart-use-xlat-based-approach-for-printing-.patch new file mode 100644 index 0000000..42663a9 --- /dev/null +++ b/ptrace_restart-use-xlat-based-approach-for-printing-.patch @@ -0,0 +1,98 @@ +From 4bdfb2f2f58e90ddde8144c740882f393b341026 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 11 Feb 2019 00:45:37 +0100 +Subject: [PATCH 226/293] ptrace_restart: use xlat-based approach for printing + ptrace requests + +* defs.h (ptrace_cmds): New prototype. +* strace.c (ptrace_op_str): New function. +(ptrace_restart): Use it. +--- + defs.h | 1 + + strace.c | 32 +++++++++++++++----------------- + 2 files changed, 16 insertions(+), 17 deletions(-) + +diff --git a/defs.h b/defs.h +index ca1c39c..53f30f2 100644 +--- a/defs.h ++++ b/defs.h +@@ -329,6 +329,7 @@ extern const struct xlat nl_netfilter_msg_types[]; + extern const struct xlat nl_route_types[]; + extern const struct xlat open_access_modes[]; + extern const struct xlat open_mode_flags[]; ++extern const struct xlat ptrace_cmds[]; + extern const struct xlat resource_flags[]; + extern const struct xlat routing_scopes[]; + extern const struct xlat routing_table_ids[]; +diff --git a/strace.c b/strace.c +index 246eb0c..e083cc3 100644 +--- a/strace.c ++++ b/strace.c +@@ -339,6 +339,18 @@ ptrace_attach_or_seize(int pid) + return ptrace_attach_cmd = "PTRACE_INTERRUPT", r; + } + ++static const char * ++ptrace_op_str(unsigned int op) ++{ ++ const char *str = xlookup(ptrace_cmds, op); ++ if (str) ++ return str; ++ ++ static char buf[sizeof(op) * 3]; ++ xsprintf(buf, "%u", op); ++ return buf; ++} ++ + /* + * Used when we want to unblock stopped traced process. + * Should be only used with PTRACE_CONT, PTRACE_DETACH and PTRACE_SYSCALL. +@@ -350,7 +362,6 @@ static int + ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + { + int err; +- const char *msg; + + errno = 0; + ptrace(op, tcp->pid, 0L, (unsigned long) sig); +@@ -358,20 +369,6 @@ ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + if (!err) + return 0; + +- switch (op) { +- case PTRACE_CONT: +- msg = "CONT"; +- break; +- case PTRACE_DETACH: +- msg = "DETACH"; +- break; +- case PTRACE_LISTEN: +- msg = "LISTEN"; +- break; +- default: +- msg = "SYSCALL"; +- } +- + /* + * Why curcol != 0? Otherwise sometimes we get this: + * +@@ -383,13 +380,14 @@ ptrace_restart(const unsigned int op, struct tcb *const tcp, unsigned int sig) + */ + if (current_tcp && current_tcp->curcol != 0) { + tprintf(" \n", +- tcp->pid, msg, strerror(err)); ++ tcp->pid, ptrace_op_str(op), strerror(err)); + line_ended(); + } + if (err == ESRCH) + return 0; + errno = err; +- perror_msg("ptrace(PTRACE_%s,pid:%d,sig:%u)", msg, tcp->pid, sig); ++ perror_msg("ptrace(%s,pid:%d,sig:%u)", ++ ptrace_op_str(op), tcp->pid, sig); + return -1; + } + +-- +1.7.12.4 + diff --git a/rtnl_link-add-IFLA_BRPORT_BACKUP_PORT-attribute.patch b/rtnl_link-add-IFLA_BRPORT_BACKUP_PORT-attribute.patch new file mode 100644 index 0000000..1d4e5e1 --- /dev/null +++ b/rtnl_link-add-IFLA_BRPORT_BACKUP_PORT-attribute.patch @@ -0,0 +1,42 @@ +From 701fd04d8a992bb9bbdba6ee18c7057c1d5c4674 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:47:11 +0200 +Subject: [PATCH 028/293] rtnl_link: add IFLA_BRPORT_BACKUP_PORT attribute + +Introduced by Linux commit v4.19-rc1~140^2~288^2. + +* xlat/rtnl_ifla_brport_attrs.in (IFLA_BRPORT_BACKUP_PORT): New +constant. +* rtnl_link.c (ifla_brport_nla_decoders) <[IFLA_BRPORT_BACKUP_PORT]>: +New decoder. +--- + rtnl_link.c | 3 ++- + xlat/rtnl_ifla_brport_attrs.in | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/rtnl_link.c b/rtnl_link.c +index 2421088..67ac7d1 100644 +--- a/rtnl_link.c ++++ b/rtnl_link.c +@@ -171,7 +171,8 @@ static const nla_decoder_t ifla_brport_nla_decoders[] = { + [IFLA_BRPORT_BCAST_FLOOD] = decode_nla_u8, + [IFLA_BRPORT_GROUP_FWD_MASK] = decode_nla_u16, + [IFLA_BRPORT_NEIGH_SUPPRESS] = decode_nla_u8, +- [IFLA_BRPORT_ISOLATED] = decode_nla_u8 ++ [IFLA_BRPORT_ISOLATED] = decode_nla_u8, ++ [IFLA_BRPORT_BACKUP_PORT] = decode_nla_ifindex, + }; + + static bool +diff --git a/xlat/rtnl_ifla_brport_attrs.in b/xlat/rtnl_ifla_brport_attrs.in +index 74c8841..7017716 100644 +--- a/xlat/rtnl_ifla_brport_attrs.in ++++ b/xlat/rtnl_ifla_brport_attrs.in +@@ -32,3 +32,4 @@ IFLA_BRPORT_BCAST_FLOOD 30 + IFLA_BRPORT_GROUP_FWD_MASK 31 + IFLA_BRPORT_NEIGH_SUPPRESS 32 + IFLA_BRPORT_ISOLATED 33 ++IFLA_BRPORT_BACKUP_PORT 34 +-- +1.7.12.4 + diff --git a/rtnl_link-add-IFLA_MIN_MTU-and-IFLA_MAX_MTU-attribut.patch b/rtnl_link-add-IFLA_MIN_MTU-and-IFLA_MAX_MTU-attribut.patch new file mode 100644 index 0000000..fa5f811 --- /dev/null +++ b/rtnl_link-add-IFLA_MIN_MTU-and-IFLA_MAX_MTU-attribut.patch @@ -0,0 +1,42 @@ +From 24535be245597cef39e9e26ae963df199f25a45d Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:31:11 +0200 +Subject: [PATCH 035/293] rtnl_link: add IFLA_MIN_MTU and IFLA_MAX_MTU + attributes + +Introduced by Linux commit v4.19-rc1~140^2~205^2~1. + +* rtnl_link.c (ifinfomsg_nla_decoders) <[IFLA_MIN_MTU], [IFLA_MAX_MTU]>: +New decoder, calls decode_nla_u32. +* xlat/rtnl_link_attrs.in (IFLA_MIN_MTU, IFLA_MAX_MTU): New constant. +--- + rtnl_link.c | 2 ++ + xlat/rtnl_link_attrs.in | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/rtnl_link.c b/rtnl_link.c +index 67ac7d1..41c5efb 100644 +--- a/rtnl_link.c ++++ b/rtnl_link.c +@@ -903,6 +903,8 @@ static const nla_decoder_t ifinfomsg_nla_decoders[] = { + [IFLA_CARRIER_UP_COUNT] = decode_nla_u32, + [IFLA_CARRIER_DOWN_COUNT] = decode_nla_u32, + [IFLA_NEW_IFINDEX] = decode_nla_ifindex, ++ [IFLA_MIN_MTU] = decode_nla_u32, ++ [IFLA_MAX_MTU] = decode_nla_u32, + }; + + DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg) +diff --git a/xlat/rtnl_link_attrs.in b/xlat/rtnl_link_attrs.in +index 9ba08ad..1c0fa2d 100644 +--- a/xlat/rtnl_link_attrs.in ++++ b/xlat/rtnl_link_attrs.in +@@ -48,3 +48,5 @@ IFLA_IF_NETNSID 46 + IFLA_CARRIER_UP_COUNT 47 + IFLA_CARRIER_DOWN_COUNT 48 + IFLA_NEW_IFINDEX 49 ++IFLA_MIN_MTU 50 ++IFLA_MAX_MTU 51 +-- +1.7.12.4 + diff --git a/rtnl_link-add-new-IFLA_XDP_-attributes.patch b/rtnl_link-add-new-IFLA_XDP_-attributes.patch new file mode 100644 index 0000000..ea34269 --- /dev/null +++ b/rtnl_link-add-new-IFLA_XDP_-attributes.patch @@ -0,0 +1,101 @@ +From eded21f5c020cb5cdbf10dadf818746ca094a48a Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:14:27 +0200 +Subject: [PATCH 024/293] rtnl_link: add new IFLA_XDP_* attributes + +Introduced by Linux commit v4.19-rc1~140^2~364^2~6^2~6. + +* xlat/rtnl_ifla_xdp_attrs.in (IFLA_XDP_DRV_PROG_ID, +IFLA_XDP_SKB_PROG_ID, IFLA_XDP_HW_PROG_ID): New constants. +* rtnl_link.c (ifla_xdp_nla_decoders): Add decoders for +IFLA_XDP_DRV_PROG_ID, IFLA_XDP_SKB_PROG_ID, and IFLA_XDP_HW_PROG_ID. +* tests/nlattr_ifla_xdp.c: Add checks for new attributes. +--- + rtnl_link.c | 5 ++++- + tests/nlattr_ifla_xdp.c | 35 +++++++++++++++++++++++++++++++++++ + xlat/rtnl_ifla_xdp_attrs.in | 3 +++ + 3 files changed, 42 insertions(+), 1 deletion(-) + +diff --git a/rtnl_link.c b/rtnl_link.c +index 1fbfd26..6f63d7f 100644 +--- a/rtnl_link.c ++++ b/rtnl_link.c +@@ -578,7 +578,10 @@ static const nla_decoder_t ifla_xdp_nla_decoders[] = { + [IFLA_XDP_FD] = decode_nla_fd, + [IFLA_XDP_ATTACHED] = decode_nla_u8, + [IFLA_XDP_FLAGS] = decode_ifla_xdp_flags, +- [IFLA_XDP_PROG_ID] = decode_nla_u32 ++ [IFLA_XDP_PROG_ID] = decode_nla_u32, ++ [IFLA_XDP_DRV_PROG_ID] = decode_nla_u32, ++ [IFLA_XDP_SKB_PROG_ID] = decode_nla_u32, ++ [IFLA_XDP_HW_PROG_ID] = decode_nla_u32, + }; + + static bool +diff --git a/tests/nlattr_ifla_xdp.c b/tests/nlattr_ifla_xdp.c +index 93149fa..c98f8a3 100644 +--- a/tests/nlattr_ifla_xdp.c ++++ b/tests/nlattr_ifla_xdp.c +@@ -44,6 +44,22 @@ enum { IFLA_XDP = 43 }; + # define IFLA_XDP_FD 1 + #endif + ++#ifndef IFLA_XDP_PROG_ID ++# define IFLA_XDP_PROG_ID 4 ++#endif ++ ++#ifndef IFLA_XDP_DRV_PROG_ID ++# define IFLA_XDP_DRV_PROG_ID 5 ++#endif ++ ++#ifndef IFLA_XDP_SKB_PROG_ID ++# define IFLA_XDP_SKB_PROG_ID 6 ++#endif ++ ++#ifndef IFLA_XDP_HW_PROG_ID ++# define IFLA_XDP_HW_PROG_ID 7 ++#endif ++ + #define IFLA_ATTR IFLA_XDP + #include "nlattr_ifla.h" + +@@ -73,6 +89,25 @@ main(void) + printf("XDP_FLAGS_UPDATE_IF_NOEXIST")); + #endif + ++ static const struct { ++ uint32_t val; ++ const char *str; ++ } attrs[] = { ++ { ARG_STR(IFLA_XDP_PROG_ID) }, ++ { ARG_STR(IFLA_XDP_DRV_PROG_ID) }, ++ { ARG_STR(IFLA_XDP_SKB_PROG_ID) }, ++ { ARG_STR(IFLA_XDP_HW_PROG_ID) }, ++ }; ++ ++ for (size_t i = 0; i < ARRAY_SIZE(attrs); i++) { ++ TEST_NESTED_NLATTR_OBJECT_EX_(fd, nlh0, hdrlen, ++ init_ifinfomsg, print_ifinfomsg, ++ attrs[i].val, attrs[i].str, ++ pattern, num, ++ print_quoted_hex, 1, ++ printf("%u", num)); ++ } ++ + puts("+++ exited with 0 +++"); + return 0; + } +diff --git a/xlat/rtnl_ifla_xdp_attrs.in b/xlat/rtnl_ifla_xdp_attrs.in +index ef3f458..b12958f 100644 +--- a/xlat/rtnl_ifla_xdp_attrs.in ++++ b/xlat/rtnl_ifla_xdp_attrs.in +@@ -3,3 +3,6 @@ IFLA_XDP_FD 1 + IFLA_XDP_ATTACHED 2 + IFLA_XDP_FLAGS 3 + IFLA_XDP_PROG_ID 4 ++IFLA_XDP_DRV_PROG_ID 5 ++IFLA_XDP_SKB_PROG_ID 6 ++IFLA_XDP_HW_PROG_ID 7 +-- +1.7.12.4 + diff --git a/rtnl_link-decode-named-constants-for-IFLA_XDP_ATTACH.patch b/rtnl_link-decode-named-constants-for-IFLA_XDP_ATTACH.patch new file mode 100644 index 0000000..8ad7cb8 --- /dev/null +++ b/rtnl_link-decode-named-constants-for-IFLA_XDP_ATTACH.patch @@ -0,0 +1,129 @@ +From d029a5efd1e8bc5273473f0a7991a5d93f10f5cf Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:31:34 +0200 +Subject: [PATCH 025/293] rtnl_link: decode named constants for + IFLA_XDP_ATTACHED attribute value + +* xlat/rtnl_ifla_xdp_attached_mode.in: New file. +* rtnl_link.c: Include "xlat/rtnl_ifla_xdp_attached_mode.h". +(decode_ifla_xdp_attached): New function. +(ifla_xdp_nla_decoders) <[IFLA_XDP_ATTACHED]>: Use +decode_ifla_xdp_attached instead of decode_nla_u8. +* tests/nlattr_ifla_xdp.c: Add checks for IFLA_XDP_ATTACHED decoding. +--- + rtnl_link.c | 20 +++++++++++++++++++- + tests/nlattr_ifla_xdp.c | 30 ++++++++++++++++++++++++++++++ + xlat/rtnl_ifla_xdp_attached_mode.in | 6 ++++++ + 3 files changed, 55 insertions(+), 1 deletion(-) + create mode 100644 xlat/rtnl_ifla_xdp_attached_mode.in + +diff --git a/rtnl_link.c b/rtnl_link.c +index 6f63d7f..2421088 100644 +--- a/rtnl_link.c ++++ b/rtnl_link.c +@@ -54,6 +54,7 @@ + #include "xlat/rtnl_ifla_info_data_tun_attrs.h" + #include "xlat/rtnl_ifla_port_attrs.h" + #include "xlat/rtnl_ifla_vf_port_attrs.h" ++#include "xlat/rtnl_ifla_xdp_attached_mode.h" + #include "xlat/rtnl_ifla_xdp_attrs.h" + #include "xlat/rtnl_link_attrs.h" + #include "xlat/snmp_icmp6_stats.h" +@@ -574,9 +575,26 @@ decode_ifla_xdp_flags(struct tcb *const tcp, + return true; + } + ++bool ++decode_ifla_xdp_attached(struct tcb *const tcp, ++ const kernel_ulong_t addr, ++ const unsigned int len, ++ const void *const opaque_data) ++{ ++ const struct decode_nla_xlat_opts opts = { ++ .xlat = rtnl_ifla_xdp_attached_mode, ++ .xlat_size = ARRAY_SIZE(rtnl_ifla_xdp_attached_mode), ++ .xt = XT_INDEXED, ++ .dflt = "XDP_ATTACHED_???", ++ .size = 1, ++ }; ++ ++ return decode_nla_xval(tcp, addr, len, &opts); ++} ++ + static const nla_decoder_t ifla_xdp_nla_decoders[] = { + [IFLA_XDP_FD] = decode_nla_fd, +- [IFLA_XDP_ATTACHED] = decode_nla_u8, ++ [IFLA_XDP_ATTACHED] = decode_ifla_xdp_attached, + [IFLA_XDP_FLAGS] = decode_ifla_xdp_flags, + [IFLA_XDP_PROG_ID] = decode_nla_u32, + [IFLA_XDP_DRV_PROG_ID] = decode_nla_u32, +diff --git a/tests/nlattr_ifla_xdp.c b/tests/nlattr_ifla_xdp.c +index c98f8a3..a44b798 100644 +--- a/tests/nlattr_ifla_xdp.c ++++ b/tests/nlattr_ifla_xdp.c +@@ -44,6 +44,10 @@ enum { IFLA_XDP = 43 }; + # define IFLA_XDP_FD 1 + #endif + ++#ifndef IFLA_XDP_ATTACHED ++# define IFLA_XDP_ATTACHED 2 ++#endif ++ + #ifndef IFLA_XDP_PROG_ID + # define IFLA_XDP_PROG_ID 4 + #endif +@@ -60,6 +64,14 @@ enum { IFLA_XDP = 43 }; + # define IFLA_XDP_HW_PROG_ID 7 + #endif + ++#ifndef XDP_ATTACHED_NONE ++# define XDP_ATTACHED_NONE 0 ++#endif ++ ++#ifndef XDP_ATTACHED_MULTI ++# define XDP_ATTACHED_MULTI 4 ++#endif ++ + #define IFLA_ATTR IFLA_XDP + #include "nlattr_ifla.h" + +@@ -81,6 +93,24 @@ main(void) + IFLA_XDP_FD, pattern, num, + printf("%d", num)); + ++ static const struct { ++ uint8_t val; ++ const char *str; ++ } attach_types[] = { ++ { ARG_STR(XDP_ATTACHED_NONE) }, ++ { ARG_STR(XDP_ATTACHED_MULTI) }, ++ { ARG_STR(0x5) " /* XDP_ATTACHED_??? */" }, ++ { ARG_STR(0xfe) " /* XDP_ATTACHED_??? */" }, ++ }; ++ ++ for (size_t i = 0; i < ARRAY_SIZE(attach_types); i++) { ++ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, ++ init_ifinfomsg, print_ifinfomsg, ++ IFLA_XDP_ATTACHED, pattern, ++ attach_types[i].val, ++ printf("%s", attach_types[i].str)); ++ } ++ + #ifdef XDP_FLAGS_UPDATE_IF_NOEXIST + const uint32_t flags = XDP_FLAGS_UPDATE_IF_NOEXIST; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, +diff --git a/xlat/rtnl_ifla_xdp_attached_mode.in b/xlat/rtnl_ifla_xdp_attached_mode.in +new file mode 100644 +index 0000000..f374230 +--- /dev/null ++++ b/xlat/rtnl_ifla_xdp_attached_mode.in +@@ -0,0 +1,6 @@ ++#value_indexed ++XDP_ATTACHED_NONE 0 ++XDP_ATTACHED_DRV 1 ++XDP_ATTACHED_SKB 2 ++XDP_ATTACHED_HW 3 ++XDP_ATTACHED_MULTI 4 +-- +1.7.12.4 + diff --git a/rtnl_netconf-add-NETCONFA_BC_FORWARDING-attribute.patch b/rtnl_netconf-add-NETCONFA_BC_FORWARDING-attribute.patch new file mode 100644 index 0000000..9a4827a --- /dev/null +++ b/rtnl_netconf-add-NETCONFA_BC_FORWARDING-attribute.patch @@ -0,0 +1,41 @@ +From fb7c51690e8e62204c25c3ee205bd4dd0f78f1ed Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:29:06 +0200 +Subject: [PATCH 033/293] rtnl_netconf: add NETCONFA_BC_FORWARDING attribute + +Introduced by Linux commit v4.19-rc1~140^2~208^2~1. + +* rtnl_netconf.c (netconfmsg_nla_decoders) <[NETCONFA_BC_FORWARDING]>: +New decoder, calls decode_nla_s32. +* xlat/rtnl_netconf_attrs.in (NETCONFA_BC_FORWARDING): New constant. +--- + rtnl_netconf.c | 3 ++- + xlat/rtnl_netconf_attrs.in | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/rtnl_netconf.c b/rtnl_netconf.c +index f01c543..9c750d4 100644 +--- a/rtnl_netconf.c ++++ b/rtnl_netconf.c +@@ -47,7 +47,8 @@ static const nla_decoder_t netconfmsg_nla_decoders[] = { + [NETCONFA_MC_FORWARDING] = decode_nla_s32, + [NETCONFA_PROXY_NEIGH] = decode_nla_s32, + [NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN] = decode_nla_s32, +- [NETCONFA_INPUT] = decode_nla_s32 ++ [NETCONFA_INPUT] = decode_nla_s32, ++ [NETCONFA_BC_FORWARDING] = decode_nla_s32, + }; + + DECL_NETLINK_ROUTE_DECODER(decode_netconfmsg) +diff --git a/xlat/rtnl_netconf_attrs.in b/xlat/rtnl_netconf_attrs.in +index b376b78..285398f 100644 +--- a/xlat/rtnl_netconf_attrs.in ++++ b/xlat/rtnl_netconf_attrs.in +@@ -6,3 +6,4 @@ NETCONFA_MC_FORWARDING 4 + NETCONFA_PROXY_NEIGH 5 + NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN 6 + NETCONFA_INPUT 7 ++NETCONFA_BC_FORWARDING 8 +-- +1.7.12.4 + diff --git a/sockaddr-add-X.25-socket-address-decoding-support.patch b/sockaddr-add-X.25-socket-address-decoding-support.patch new file mode 100644 index 0000000..d800782 --- /dev/null +++ b/sockaddr-add-X.25-socket-address-decoding-support.patch @@ -0,0 +1,93 @@ +From da048e91a1d81fd609cee5422c3dc7440625c3f6 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 06:26:56 +0200 +Subject: [PATCH 069/293] sockaddr: add X.25 socket address decoding support + +* sockaddr.c: Include . +(print_sockaddr_data_x25): New function. +(sa_printers) <[AF_X25]>: New socket address handler. +* tests/net-sockaddr.c (check_x25): New function. +(main): Use it to check X.25 socket address decoding. +--- + defs.h | 1 + + print_fields.h | 6 ++++++ + sockaddr.c | 20 ++++++++++++++++++++ + 3 files changed, 27 insertions(+) + +diff --git a/defs.h b/defs.h +index c4d271a..7f1e64d 100644 +--- a/defs.h ++++ b/defs.h +@@ -892,6 +892,7 @@ extern bool + decode_inet_addr(struct tcb *, kernel_ulong_t addr, + unsigned int len, int family, const char *var_name); + extern void print_ax25_addr(const void /* ax25_address */ *addr); ++extern void print_x25_addr(const void /* struct x25_address */ *addr); + extern const char *get_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); + extern bool print_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); + extern void print_dirfd(struct tcb *, int); +diff --git a/print_fields.h b/print_fields.h +index c52d0ac..eccd7ae 100644 +--- a/print_fields.h ++++ b/print_fields.h +@@ -189,6 +189,12 @@ + print_ax25_addr(&(where_).field_); \ + } while (0) + ++#define PRINT_FIELD_X25_ADDR(prefix_, where_, field_) \ ++ do { \ ++ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ ++ print_x25_addr(&(where_).field_); \ ++ } while (0) ++ + #define PRINT_FIELD_NET_PORT(prefix_, where_, field_) \ + STRACE_PRINTF("%s%s=htons(%u)", (prefix_), #field_, \ + ntohs((where_).field_)) +diff --git a/sockaddr.c b/sockaddr.c +index 970991b..cf60c32 100644 +--- a/sockaddr.c ++++ b/sockaddr.c +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_NETIPX_IPX_H + # include +@@ -365,6 +366,24 @@ print_sockaddr_data_ipx(const void *const buf, const int addrlen) + PRINT_FIELD_0X("], ", *sa_ipx, sipx_type); + } + ++void ++print_x25_addr(const void /* struct x25_address */ *addr_void) ++{ ++ const struct x25_address *addr = addr_void; ++ ++ tprints("{x25_addr="); ++ print_quoted_cstring(addr->x25_addr, sizeof(addr->x25_addr)); ++ tprints("}"); ++} ++ ++static void ++print_sockaddr_data_x25(const void *const buf, const int addrlen) ++{ ++ const struct sockaddr_x25 *const sa_x25 = buf; ++ ++ PRINT_FIELD_X25_ADDR("", *sa_x25, sx25_addr); ++} ++ + static void + print_sockaddr_data_nl(const void *const buf, const int addrlen) + { +@@ -587,6 +606,7 @@ static const struct { + [AF_INET] = { print_sockaddr_data_in, sizeof(struct sockaddr_in) }, + [AF_AX25] = { print_sockaddr_data_ax25, sizeof(struct sockaddr_ax25) }, + [AF_IPX] = { print_sockaddr_data_ipx, sizeof(struct sockaddr_ipx) }, ++ [AF_X25] = { print_sockaddr_data_x25, sizeof(struct sockaddr_x25) }, + [AF_INET6] = { print_sockaddr_data_in6, SIN6_MIN_LEN }, + [AF_NETLINK] = { print_sockaddr_data_nl, SIZEOF_SA_FAMILY + 1 }, + [AF_PACKET] = { print_sockaddr_data_ll, sizeof(struct sockaddr_ll) }, +-- +1.7.12.4 + diff --git a/sockaddr-decode-AX.25-socket-addresses.patch b/sockaddr-decode-AX.25-socket-addresses.patch new file mode 100644 index 0000000..45c2fc3 --- /dev/null +++ b/sockaddr-decode-AX.25-socket-addresses.patch @@ -0,0 +1,237 @@ +From 92d020787fd5d55b3314b7ca54b0c5437c66d6c4 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 03:13:04 +0200 +Subject: [PATCH 067/293] sockaddr: decode AX.25 socket addresses + +* defs.h (print_ax25_addr): New prototype. +* print_fields.h (PRINT_FIELD_AX25_ADDR): New macro. +* sockaddr.c: Include . +(check_ax25_address, ax25_addr2str, print_ax25_addr_raw, +print_ax25_addr, print_sockaddr_data_ax25): New functions. +(sa_printers) <[AF_AX25]>: New printer. +* tests/net-sockaddr.c (AX25_ADDR): New macro. +(check_ax25): New function. +(main): Use it to check AX.25 socket address decoding. +--- + defs.h | 1 + + print_fields.h | 6 ++ + sockaddr.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 167 insertions(+) + +diff --git a/defs.h b/defs.h +index ec96bf6..c4d271a 100644 +--- a/defs.h ++++ b/defs.h +@@ -891,6 +891,7 @@ print_inet_addr(int af, const void *addr, unsigned int len, const char *var_name + extern bool + decode_inet_addr(struct tcb *, kernel_ulong_t addr, + unsigned int len, int family, const char *var_name); ++extern void print_ax25_addr(const void /* ax25_address */ *addr); + extern const char *get_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); + extern bool print_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); + extern void print_dirfd(struct tcb *, int); +diff --git a/print_fields.h b/print_fields.h +index 936db02..c52d0ac 100644 +--- a/print_fields.h ++++ b/print_fields.h +@@ -183,6 +183,12 @@ + STRACE_PRINTF("%s%s=inet_addr(\"%s\")", (prefix_), #field_, \ + inet_ntoa((where_).field_)) + ++#define PRINT_FIELD_AX25_ADDR(prefix_, where_, field_) \ ++ do { \ ++ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ ++ print_ax25_addr(&(where_).field_); \ ++ } while (0) ++ + #define PRINT_FIELD_NET_PORT(prefix_, where_, field_) \ + STRACE_PRINTF("%s%s=htons(%u)", (prefix_), #field_, \ + ntohs((where_).field_)) +diff --git a/sockaddr.c b/sockaddr.c +index 2cf149f..970991b 100644 +--- a/sockaddr.c ++++ b/sockaddr.c +@@ -39,6 +39,7 @@ + #include + + #include "netlink.h" ++#include + #include + #include + #include +@@ -189,6 +190,164 @@ print_sockaddr_data_in6(const void *const buf, const int addrlen) + PRINT_FIELD_U(", ", *sa_in6, sin6_scope_id); + } + ++/** ++ * Check that we can print an AX.25 address in its native form, otherwise it ++ * makes sense to print it in raw also (or in raw only). ++ */ ++enum xlat_style ++check_ax25_address(const ax25_address *addr) ++{ ++ enum xlat_style ret = XLAT_STYLE_DEFAULT; ++ bool space_seen = false; ++ bool char_seen = false; ++ ++ for (size_t i = 0; i < ARRAY_SIZE(addr->ax25_call) - 1; i++) { ++ unsigned char c = addr->ax25_call[i]; ++ ++ /* The lowest bit should be zero */ ++ if (c & 1) ++ ret = XLAT_STYLE_VERBOSE; ++ ++ c >>= 1; ++ ++ if (c == ' ') ++ space_seen = true; ++ else ++ char_seen = true; ++ ++ /* Sane address contains only numbers and uppercase letters */ ++ if ((c < '0' || c > '9') && (c < 'A' || c > 'Z') && c != ' ') ++ ret = XLAT_STYLE_VERBOSE; ++ if (c != ' ' && space_seen) ++ ret = XLAT_STYLE_VERBOSE; ++ ++ /* non-printable chars */ ++ if (c < ' ' || c > 0x7e ++ /* characters used for printing comments */ ++ || c == '*' || c == '/') ++ return XLAT_STYLE_RAW; ++ } ++ ++ if (addr->ax25_call[ARRAY_SIZE(addr->ax25_call) - 1] & ~0x1e) ++ ret = XLAT_STYLE_VERBOSE; ++ ++ if (!char_seen && addr->ax25_call[ARRAY_SIZE(addr->ax25_call) - 1]) ++ ret = XLAT_STYLE_VERBOSE; ++ ++ return ret; ++} ++ ++/** Convert a (presumably) valid AX.25 to a string */ ++static const char * ++ax25_addr2str(const ax25_address *addr) ++{ ++ static char buf[ARRAY_SIZE(addr->ax25_call) + sizeof("-15")]; ++ char *p = buf; ++ size_t end; ++ ++ for (end = ARRAY_SIZE(addr->ax25_call) - 1; end; end--) ++ if ((addr->ax25_call[end - 1] >> 1) != ' ') ++ break; ++ ++ for (size_t i = 0; i < end; i++) ++ *p++ = ((unsigned char) addr->ax25_call[i]) >> 1; ++ ++ *p++ = '-'; ++ ++ unsigned char ssid = (addr->ax25_call[ARRAY_SIZE(addr->ax25_call) - 1] ++ >> 1) & 0xf; ++ ++ if (ssid > 9) { ++ *p++ = '1'; ++ ssid -= 10; ++ } ++ ++ *p++ = ssid + '0'; ++ *p = '\0'; ++ ++ if (buf[0] == '-' && buf[1] == '0') ++ return "*"; ++ ++ return buf; ++} ++ ++static void ++print_ax25_addr_raw(const ax25_address *addr) ++{ ++ PRINT_FIELD_HEX_ARRAY("{", *addr, ax25_call); ++ tprints("}"); ++} ++ ++void ++print_ax25_addr(const void /* ax25_address */ *addr_void) ++{ ++ const ax25_address *addr = addr_void; ++ enum xlat_style xs = check_ax25_address(addr); ++ ++ if (xs == XLAT_STYLE_DEFAULT) ++ xs = xlat_verbose(xlat_verbosity); ++ ++ if (xs != XLAT_STYLE_ABBREV) ++ print_ax25_addr_raw(addr); ++ ++ if (xs == XLAT_STYLE_RAW) ++ return; ++ ++ const char *addr_str = ax25_addr2str(addr); ++ ++ (xs == XLAT_STYLE_VERBOSE ? tprints_comment : tprints)(addr_str); ++} ++ ++static void ++print_sockaddr_data_ax25(const void *const buf, const int addrlen) ++{ ++ const struct full_sockaddr_ax25 *const sax25 = buf; ++ size_t addrlen_us = MAX(addrlen, 0); ++ bool full = sax25->fsa_ax25.sax25_ndigis || ++ (addrlen_us > sizeof(struct sockaddr_ax25)); ++ ++ if (full) ++ tprints("fsa_ax25={"); ++ ++ tprints("sax25_call="); ++ print_ax25_addr(&sax25->fsa_ax25.sax25_call); ++ PRINT_FIELD_D(", ", sax25->fsa_ax25, sax25_ndigis); ++ ++ if (!full) ++ return; ++ ++ tprints("}"); ++ ++ size_t has_digis = MIN((addrlen_us - sizeof(sax25->fsa_ax25)) ++ / sizeof(sax25->fsa_digipeater[0]), ++ ARRAY_SIZE(sax25->fsa_digipeater)); ++ size_t want_digis = MIN( ++ (unsigned int) MAX(sax25->fsa_ax25.sax25_ndigis, 0), ++ ARRAY_SIZE(sax25->fsa_digipeater)); ++ size_t digis = MIN(has_digis, want_digis); ++ ++ if (want_digis == 0) ++ goto digis_end; ++ ++ tprints(", fsa_digipeater=["); ++ for (size_t i = 0; i < digis; i++) { ++ if (i) ++ tprints(", "); ++ ++ print_ax25_addr(sax25->fsa_digipeater + i); ++ } ++ ++ if (want_digis > has_digis) ++ tprintf("%s/* ??? */", digis ? ", " : ""); ++ ++ tprints("]"); ++ ++digis_end: ++ if (addrlen_us > (has_digis * sizeof(sax25->fsa_digipeater[0]) ++ + sizeof(sax25->fsa_ax25))) ++ tprints(", ..."); ++} ++ + static void + print_sockaddr_data_ipx(const void *const buf, const int addrlen) + { +@@ -426,6 +585,7 @@ static const struct { + } sa_printers[] = { + [AF_UNIX] = { print_sockaddr_data_un, SIZEOF_SA_FAMILY + 1 }, + [AF_INET] = { print_sockaddr_data_in, sizeof(struct sockaddr_in) }, ++ [AF_AX25] = { print_sockaddr_data_ax25, sizeof(struct sockaddr_ax25) }, + [AF_IPX] = { print_sockaddr_data_ipx, sizeof(struct sockaddr_ipx) }, + [AF_INET6] = { print_sockaddr_data_in6, SIN6_MIN_LEN }, + [AF_NETLINK] = { print_sockaddr_data_nl, SIZEOF_SA_FAMILY + 1 }, +-- +1.7.12.4 + diff --git a/socketutils-add-more-IP-IPv6-transport-protocols.patch b/socketutils-add-more-IP-IPv6-transport-protocols.patch new file mode 100644 index 0000000..27045a6 --- /dev/null +++ b/socketutils-add-more-IP-IPv6-transport-protocols.patch @@ -0,0 +1,106 @@ +From 54fc755c56db517e911717fe40e995de5467adbb Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 12:46:34 +0200 +Subject: [PATCH 060/293] socketutils: add more IP/IPv6 transport protocols + +* defs.h (sock_proto): Add SOCK_PROTO_UDPLITE, SOCK_PROTO_DCCP, +SOCK_PROTO_SCTP, SOCK_PROTO_L2TP_IP, SOCK_PROTO_PING, SOCK_PROTO_RAW, +SOCK_PROTO_UDPLITEv6, SOCK_PROTO_DCCPv6, SOCK_PROTO_L2TP_IPv6, +SOCK_PROTO_SCTPv6, SOCK_PROTO_PINGv6, and SOCK_PROTO_RAWv6. +* socketutils.c: Include "xlat/inet_protocols.h" in XLAT_MACROS_ONLY +mode. +(protocols): Add protocol descriptions for them. +--- + defs.h | 14 +++++++++++++- + socketutils.c | 33 +++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 1 deletion(-) + +diff --git a/defs.h b/defs.h +index 78e2d9a..22ab197 100644 +--- a/defs.h ++++ b/defs.h +@@ -379,9 +379,21 @@ enum sock_proto { + SOCK_PROTO_UNIX, + SOCK_PROTO_TCP, + SOCK_PROTO_UDP, ++ SOCK_PROTO_UDPLITE, ++ SOCK_PROTO_DCCP, ++ SOCK_PROTO_SCTP, ++ SOCK_PROTO_L2TP_IP, ++ SOCK_PROTO_PING, ++ SOCK_PROTO_RAW, + SOCK_PROTO_TCPv6, + SOCK_PROTO_UDPv6, +- SOCK_PROTO_NETLINK ++ SOCK_PROTO_UDPLITEv6, ++ SOCK_PROTO_DCCPv6, ++ SOCK_PROTO_L2TP_IPv6, ++ SOCK_PROTO_SCTPv6, ++ SOCK_PROTO_PINGv6, ++ SOCK_PROTO_RAWv6, ++ SOCK_PROTO_NETLINK, + }; + extern enum sock_proto get_proto_by_name(const char *); + +diff --git a/socketutils.c b/socketutils.c +index ff02c2f..dd8451e 100644 +--- a/socketutils.c ++++ b/socketutils.c +@@ -48,6 +48,10 @@ + + #include "xstring.h" + ++#define XLAT_MACROS_ONLY ++# include "xlat/inet_protocols.h" ++#undef XLAT_MACROS_ONLY ++ + typedef struct { + unsigned long inode; + char *details; +@@ -451,14 +455,43 @@ static const struct { + int proto; + } protocols[] = { + [SOCK_PROTO_UNIX] = { "UNIX", unix_get, AF_UNIX}, ++ /* ++ * inet_diag handlers are currently implemented only for TCP, ++ * UDP(lite), SCTP, RAW, and DCCP, but we try to resolve it for all ++ * protocols anyway, just in case. ++ */ + [SOCK_PROTO_TCP] = + { "TCP", inet_get, AF_INET, IPPROTO_TCP }, + [SOCK_PROTO_UDP] = + { "UDP", inet_get, AF_INET, IPPROTO_UDP }, ++ [SOCK_PROTO_UDPLITE] = ++ { "UDPLITE", inet_get, AF_INET, IPPROTO_UDPLITE }, ++ [SOCK_PROTO_DCCP] = ++ { "DCCP", inet_get, AF_INET, IPPROTO_DCCP }, ++ [SOCK_PROTO_SCTP] = ++ { "SCTP", inet_get, AF_INET, IPPROTO_SCTP }, ++ [SOCK_PROTO_L2TP_IP] = ++ { "L2TP/IP", inet_get, AF_INET, IPPROTO_L2TP }, ++ [SOCK_PROTO_PING] = ++ { "PING", inet_get, AF_INET, IPPROTO_ICMP }, ++ [SOCK_PROTO_RAW] = ++ { "RAW", inet_get, AF_INET, IPPROTO_RAW }, + [SOCK_PROTO_TCPv6] = + { "TCPv6", inet_get, AF_INET6, IPPROTO_TCP }, + [SOCK_PROTO_UDPv6] = + { "UDPv6", inet_get, AF_INET6, IPPROTO_UDP }, ++ [SOCK_PROTO_UDPLITEv6] = ++ { "UDPLITEv6", inet_get, AF_INET6, IPPROTO_UDPLITE }, ++ [SOCK_PROTO_DCCPv6] = ++ { "DCCPv6", inet_get, AF_INET6, IPPROTO_DCCP }, ++ [SOCK_PROTO_SCTPv6] = ++ { "SCTPv6", inet_get, AF_INET6, IPPROTO_SCTP }, ++ [SOCK_PROTO_L2TP_IPv6] = ++ { "L2TP/IPv6", inet_get, AF_INET6, IPPROTO_L2TP }, ++ [SOCK_PROTO_PINGv6] = ++ { "PINGv6", inet_get, AF_INET6, IPPROTO_ICMP }, ++ [SOCK_PROTO_RAWv6] = ++ { "RAWv6", inet_get, AF_INET6, IPPROTO_RAW }, + [SOCK_PROTO_NETLINK] = { "NETLINK", netlink_get, AF_NETLINK }, + }; + +-- +1.7.12.4 + diff --git a/socketutils-store-more-information-in-protocols-tabl.patch b/socketutils-store-more-information-in-protocols-tabl.patch new file mode 100644 index 0000000..cca9a33 --- /dev/null +++ b/socketutils-store-more-information-in-protocols-tabl.patch @@ -0,0 +1,131 @@ +From 7c08fe37a1144fa9ee00e44e3a0b4c0084e5924b Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 12:41:48 +0200 +Subject: [PATCH 059/293] socketutils: store more information in protocols + table + +This also allows getting rid of all these *_v[46]_get calls. + +* socketutils.c (unix_get, inet_get, netlink_gen): Add family, protocol, +and proto_name paramteres, use them where appropriate. +(tcp_v4_get, udp_v4_get, tcp_v6_get, udp_v6_get): Remove. +(protocols): Add family and proto fields to the structure, call inet_get +for IP/IPv6 protocols. +(get_sockaddr_by_inode_uncached): Update protocols->get calls. +--- + socketutils.c | 67 ++++++++++++++++++++++++++--------------------------------- + 1 file changed, 30 insertions(+), 37 deletions(-) + +diff --git a/socketutils.c b/socketutils.c +index a646b5b..ff02c2f 100644 +--- a/socketutils.c ++++ b/socketutils.c +@@ -412,11 +412,12 @@ netlink_parse_response(const void *data, const int data_len, + } + + static const char * +-unix_get(struct tcb *tcp, const int fd, const unsigned long inode) ++unix_get(struct tcb *tcp, const int fd, const int family, const int proto, ++ const unsigned long inode, const char *name) + { + return unix_send_query(tcp, fd, inode) + && receive_responses(tcp, fd, inode, SOCK_DIAG_BY_FAMILY, +- unix_parse_response, (void *) "UNIX") ++ unix_parse_response, (void *) name) + ? get_sockaddr_by_inode_cached(inode) : NULL; + } + +@@ -431,48 +432,34 @@ inet_get(struct tcb *tcp, const int fd, const int family, const int protocol, + } + + static const char * +-tcp_v4_get(struct tcb *tcp, const int fd, const unsigned long inode) +-{ +- return inet_get(tcp, fd, AF_INET, IPPROTO_TCP, inode, "TCP"); +-} +- +-static const char * +-udp_v4_get(struct tcb *tcp, const int fd, const unsigned long inode) +-{ +- return inet_get(tcp, fd, AF_INET, IPPROTO_UDP, inode, "UDP"); +-} +- +-static const char * +-tcp_v6_get(struct tcb *tcp, const int fd, const unsigned long inode) +-{ +- return inet_get(tcp, fd, AF_INET6, IPPROTO_TCP, inode, "TCPv6"); +-} +- +-static const char * +-udp_v6_get(struct tcb *tcp, const int fd, const unsigned long inode) +-{ +- return inet_get(tcp, fd, AF_INET6, IPPROTO_UDP, inode, "UDPv6"); +-} +- +-static const char * +-netlink_get(struct tcb *tcp, const int fd, const unsigned long inode) ++netlink_get(struct tcb *tcp, const int fd, const int family, const int protocol, ++ const unsigned long inode, const char *proto_name) + { + return netlink_send_query(tcp, fd, inode) + && receive_responses(tcp, fd, inode, SOCK_DIAG_BY_FAMILY, +- netlink_parse_response, (void *) "NETLINK") ++ netlink_parse_response, ++ (void *) proto_name) + ? get_sockaddr_by_inode_cached(inode) : NULL; + } + + static const struct { + const char *const name; +- const char * (*const get)(struct tcb *, int, unsigned long); ++ const char * (*const get)(struct tcb *, int fd, int family, ++ int protocol, unsigned long inode, ++ const char *proto_name); ++ int family; ++ int proto; + } protocols[] = { +- [SOCK_PROTO_UNIX] = { "UNIX", unix_get }, +- [SOCK_PROTO_TCP] = { "TCP", tcp_v4_get }, +- [SOCK_PROTO_UDP] = { "UDP", udp_v4_get }, +- [SOCK_PROTO_TCPv6] = { "TCPv6", tcp_v6_get }, +- [SOCK_PROTO_UDPv6] = { "UDPv6", udp_v6_get }, +- [SOCK_PROTO_NETLINK] = { "NETLINK", netlink_get } ++ [SOCK_PROTO_UNIX] = { "UNIX", unix_get, AF_UNIX}, ++ [SOCK_PROTO_TCP] = ++ { "TCP", inet_get, AF_INET, IPPROTO_TCP }, ++ [SOCK_PROTO_UDP] = ++ { "UDP", inet_get, AF_INET, IPPROTO_UDP }, ++ [SOCK_PROTO_TCPv6] = ++ { "TCPv6", inet_get, AF_INET6, IPPROTO_TCP }, ++ [SOCK_PROTO_UDPv6] = ++ { "UDPv6", inet_get, AF_INET6, IPPROTO_UDP }, ++ [SOCK_PROTO_NETLINK] = { "NETLINK", netlink_get, AF_NETLINK }, + }; + + enum sock_proto +@@ -501,14 +488,20 @@ get_sockaddr_by_inode_uncached(struct tcb *tcp, const unsigned long inode, + const char *details = NULL; + + if (proto != SOCK_PROTO_UNKNOWN) { +- details = protocols[proto].get(tcp, fd, inode); ++ details = protocols[proto].get(tcp, fd, protocols[proto].family, ++ protocols[proto].proto, inode, ++ protocols[proto].name); + } else { + unsigned int i; + for (i = (unsigned int) SOCK_PROTO_UNKNOWN + 1; + i < ARRAY_SIZE(protocols); ++i) { + if (!protocols[i].get) + continue; +- details = protocols[i].get(tcp, fd, inode); ++ details = protocols[i].get(tcp, fd, ++ protocols[proto].family, ++ protocols[proto].proto, ++ inode, ++ protocols[proto].name); + if (details) + break; + } +-- +1.7.12.4 + diff --git a/strace-4.24.tar.xz b/strace-4.24.tar.xz new file mode 100644 index 0000000..a9b2cf9 Binary files /dev/null and b/strace-4.24.tar.xz differ diff --git a/strace.patches b/strace.patches new file mode 100644 index 0000000..580005c --- /dev/null +++ b/strace.patches @@ -0,0 +1,78 @@ +Patch6000: xlat-workaround-V4L2_CID_USER_IMX_BASE-Linux-kernel-.patch +Patch6001: xlat-update-V4L2_CID_USER_-_BASE-constants.patch +Patch6002: kvm-decode-the-argument-of-KVM_CHECK_EXTENSION.patch +Patch6003: evdev-fix-decoding-of-bit-sets.patch +Patch6004: evdev-fix-decoding-of-EVIOCGBIT-0.patch +Patch6005: tests-check-decoding-of-successful-evdev-ioctl.patch +Patch6006: tests-enhance-test-coverage-of-evdev-ioctl.patch +Patch6007: xlat-fix-typo-in-smc_protocols.in.patch +Patch6008: xlat-add-IN_MASK_CREATE-to-inotify_flags.in.patch +Patch6009: xlat-add-SCTP_REUSE_PORT-to-sock_sctp_options.in.patch +Patch6010: netlink_smc_diag-implement-SMC_DIAG_DMBINFO-decoding.patch +Patch6011: xlat-add-SO_TXTIME-to-sock_options.in.patch +Patch6012: xlat-update-v4l2_control_ids.in.patch +Patch6013: rtnl_link-add-new-IFLA_XDP_-attributes.patch +Patch6014: rtnl_link-decode-named-constants-for-IFLA_XDP_ATTACH.patch +Patch6015: xlat-add-AUDIT_INTEGRITY_POLICY_RULE-to-nl_audit_typ.patch +Patch6016: xlat-update-nt_descriptor_types.in.patch +Patch6017: rtnl_link-add-IFLA_BRPORT_BACKUP_PORT-attribute.patch +Patch6018: netlink_smc_diag-decode-smc_diag_msg.diag_fallback-c.patch +Patch6019: xlat-update-v4l2_pix_fmts.in.patch +Patch6020: netlink_smc_diag-add-SMC_DIAG_FALLBACK-attribute-sup.patch +Patch6021: rtnl_netconf-add-NETCONFA_BC_FORWARDING-attribute.patch +Patch6022: xlat-add-IPV4_DEVCONF_BC_FORWARDING-1-to-inet_devcon.patch +Patch6023: rtnl_link-add-IFLA_MIN_MTU-and-IFLA_MAX_MTU-attribut.patch +Patch6024: xlat-update-bpf_map_types.in.patch +Patch6025: xlat-add-IPSTATS_MIB_REASM_OVERLAPS-to-snmp_ip_stats.patch +Patch6026: xlat-add-BPF_PROG_TYPE_SK_REUSEPORT-to-bpf_prog_type.patch +Patch6027: netlink_smc_diag-decode-SMC_DIAG_SHUTDOWN-attribute-.patch +Patch6028: xlat-add-AF_XDP-to-addrfams.in.patch +Patch6029: xlat-add-SOL_XDP-to-socketlayers.in.patch +Patch6030: net-decode-SOL_XDP-socket-option-names.patch +Patch6031: xlat-provide-fallback-values-to-route_nexthop_flags.patch +Patch6032: xlat-provide-fallback-values-for-socktypes.patch +Patch6033: xlat-provide-fallback-definitions-to-pollflags.patch +Patch6034: xlat-provide-fallback-definitions-for-epollevents.patch +Patch6035: socketutils-store-more-information-in-protocols-tabl.patch +Patch6036: socketutils-add-more-IP-IPv6-transport-protocols.patch +Patch6037: net-decode-AF_PACKET-protocols-in-socket-syscall.patch +Patch6038: ioprio-move-constant-definitions-to-xlat.patch +Patch6039: futex-recognise-FUTEX_BITSET_MATCH_ANY-bitmask.patch +Patch6040: sockaddr-decode-AX.25-socket-addresses.patch +Patch6041: net-add-support-for-AX.25-protocols-and-socket-optio.patch +Patch6042: sockaddr-add-X.25-socket-address-decoding-support.patch +Patch6043: netlink_packet_diag-assorted-decoding-fixes.patch +Patch6044: xlat-update-resources.patch +Patch6045: xlat-provide-fallback-definitions-for-open_access_mo.patch +Patch6046: Print-stack-traces-on-signals.patch +Patch6047: xlat-print-_IOC_NONE-in-symbolic-form-even-if-it-is-.patch +Patch6048: Remove-redundant-VIDIOC_SUBDEV_-constants.patch +Patch6049: Update-ioctl-entries-from-linux-v4.19.patch +Patch6050: arm-sparc-sparc64-wire-up-io_pgetevents.patch +Patch6051: tests-fix-build-with-recent-kernel-headers.patch +Patch6052: Implement-decoding-of-NBD_-ioctl-commands.patch +Patch6053: Add-support-for-dev-u-random-ioctls.patch +Patch6054: net-enhance-decoding-of-getsockopt-SO_ERROR.patch +Patch6055: xlat-update-siginfo_codes.patch +Patch6056: xlat-add-FAN_ENABLE_AUDIT-and-FAN_REPORT_TID-to-fan_.patch +Patch6057: xlat-add-SOL_CAN_-to-socketlayers.patch +Patch6058: xlat-add-fallback-definitions-to-setsock_ipv6_option.patch +Patch6059: xlat-add-TCP_CLOSE-to-netlink_states.patch +Patch6060: xlat-update-neighbor_cache_entry_flags.patch +Patch6061: xlat-update-kvm_cap.patch +Patch6062: xlat-add-ABS_RESERVED-to-evdev_abs.patch +Patch6063: xlat-add-PR_SPEC_INDIRECT_BRANCH-to-pr_spec_cmds.patch +Patch6064: xlat-update-KERN_-constants.patch +Patch6065: Make-inline-message-on-failed-restart-attempt-more-v.patch +Patch6066: ptrace_restart-use-xlat-based-approach-for-printing-.patch +Patch6067: ptrace_restart-do-not-print-diagnostics-when-ptrace-.patch +Patch6068: tests-robustify-preadv2-pwritev2-test-against-odd-ke.patch +Patch6069: Wire-up-rseq-syscall-on-architectures-that-use-gener.patch +Patch6070: bpf-print-struct-bpf_prog_info.gpl_compatible.patch +Patch6071: bpf-add-support-for-btf_-fields-in-BPF_MAP_CREATE.patch +Patch6072: bpf-add-support-for-jited_ksyms-and-jited_func_lens-.patch +Patch6073: bpf-implement-decoding-of-BPF_BTF_LOAD-command.patch +Patch6074: bpf-implement-decoding-of-BPF_BTF_GET_FD_BY_ID-comma.patch +Patch6075: bpf-implement-decoding-of-BPF_TASK_FD_QUERY-command.patch +Patch6076: adapt-for-backport-patch.patch +Patch6077: xlat_idx-do-not-issue-warnings-for-holes-in-indices.patch diff --git a/strace.spec b/strace.spec new file mode 100644 index 0000000..16bb61d --- /dev/null +++ b/strace.spec @@ -0,0 +1,60 @@ +Name: strace +Version: 4.24 +Release: 2 +Summary: The linux syscall tracer +License: LGPLv2.1+ +URL: https://strace.io +Source0: https://strace.io/files/%{version}/%{name}-%{version}.tar.xz +Source1: strace.patches + +%include %{SOURCE1} + +#Dependency +BuildRequires: gcc gzip pkgconfig(bluez) +BuildRequires: elfutils-devel binutils-devel + +%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. + +%package_help + +#Build sections +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD +%configure --enable-mpers=check +%make_build + +%install +%make_install + +%check +make %{?_smp_mflags} check + +#Install and uninstall scripts +%pre + +%preun + +%post + +%postun + +%files +%defattr(-,root,root) +%doc COPYING CREDITS ChangeLog ChangeLog-CVS NEWS README +%{_bindir}/strace +%{_bindir}/strace-log-merge +%exclude %{_bindir}/strace-graph + +%files help +%{_mandir}/man1/* + +%changelog +* Wed Jul 18 2018 openEuler Buildteam - 4.24-2 +- Package init diff --git a/tests-check-decoding-of-successful-evdev-ioctl.patch b/tests-check-decoding-of-successful-evdev-ioctl.patch new file mode 100644 index 0000000..0da166a --- /dev/null +++ b/tests-check-decoding-of-successful-evdev-ioctl.patch @@ -0,0 +1,333 @@ +From e286b9cbc0bd542bb441c5acb65fef5f58b71aef Mon Sep 17 00:00:00 2001 +From: Zhibin Li <08826794brmt@gmail.com> +Date: Wed, 1 Aug 2018 17:54:35 +0800 +Subject: [PATCH 007/293] tests: check decoding of successful evdev ioctl + +* tests/ioctl_evdev-success.c: New file. +* tests/ioctl_evdev-success-v.c: Likewise. +* tests/ioctl_evdev-success.test: New test. +* tests/ioctl_evdev-success-v.test: Likewise. +* tests/.gitignore: Add ioctl_evdev-success and ioctl_evdev-success-v. +* tests/Makefile.am (check_PROGRAMS): Likewise. +(DECODER_TESTS): Add the two tests mentioned above. +--- + tests/Makefile.am | 4 + + tests/ioctl_evdev-success-v.c | 2 + + tests/ioctl_evdev-success-v.test | 13 +++ + tests/ioctl_evdev-success.c | 232 +++++++++++++++++++++++++++++++++++++++ + tests/ioctl_evdev-success.test | 13 +++ + 6 files changed, 266 insertions(+) + create mode 100644 tests/ioctl_evdev-success-v.c + create mode 100755 tests/ioctl_evdev-success-v.test + create mode 100644 tests/ioctl_evdev-success.c + create mode 100755 tests/ioctl_evdev-success.test + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index a2f3950..5bb580a 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -118,6 +118,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ + int_0x80 \ + ioctl_dm-v \ + ioctl_evdev-v \ ++ ioctl_evdev-success \ ++ ioctl_evdev-success-v \ + ioctl_loop-nv \ + ioctl_loop-v \ + ioctl_nsfs \ +@@ -247,6 +249,8 @@ DECODER_TESTS = \ + futex.test \ + getuid.test \ + ioctl.test \ ++ ioctl_evdev-success.test \ ++ ioctl_evdev-success-v.test \ + ioctl_perf-success.test \ + ipc_msgbuf.test \ + kern_features-fault.test \ +diff --git a/tests/ioctl_evdev-success-v.c b/tests/ioctl_evdev-success-v.c +new file mode 100644 +index 0000000..6fc3547 +--- /dev/null ++++ b/tests/ioctl_evdev-success-v.c +@@ -0,0 +1,2 @@ ++#define VERBOSE 1 ++#include "ioctl_evdev-success.c" +diff --git a/tests/ioctl_evdev-success-v.test b/tests/ioctl_evdev-success-v.test +new file mode 100755 +index 0000000..358d9a3 +--- /dev/null ++++ b/tests/ioctl_evdev-success-v.test +@@ -0,0 +1,13 @@ ++#!/bin/sh -efu ++ ++. "${srcdir=.}/scno_tampering.sh" ++ ++: ${IOCTL_INJECT_START=256} ++: ${IOCTL_INJECT_RETVAL=8} ++ ++run_prog ++run_strace -a16 -v -e trace=ioctl \ ++ -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \ ++ ../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP" ++grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT" ++match_diff "$OUT" "$EXP" +diff --git a/tests/ioctl_evdev-success.c b/tests/ioctl_evdev-success.c +new file mode 100644 +index 0000000..8c3f8f0 +--- /dev/null ++++ b/tests/ioctl_evdev-success.c +@@ -0,0 +1,232 @@ ++#include "tests.h" ++ ++#ifdef HAVE_LINUX_INPUT_H ++ ++# include ++# include ++# include ++# include ++# include ++# include "print_fields.h" ++ ++static const char *errstr; ++ ++struct evdev_check { ++ unsigned long cmd; ++ const char *cmd_str; ++ void *arg_ptr; ++ void (*print_arg)(long rc, void *ptr, void *arg); ++}; ++ ++static long ++invoke_test_syscall(unsigned long cmd, void *p) ++{ ++ long rc = ioctl(-1, cmd, p); ++ errstr = sprintrc(rc); ++ static char inj_errstr[4096]; ++ ++ snprintf(inj_errstr, sizeof(inj_errstr), "%s (INJECTED)", errstr); ++ errstr = inj_errstr; ++ return rc; ++} ++ ++static void ++test_evdev(struct evdev_check *check, void *arg) ++{ ++ long rc = invoke_test_syscall(check->cmd, check->arg_ptr); ++ printf("ioctl(-1, %s, ", check->cmd_str); ++ if (check->print_arg) ++ check->print_arg(rc, check->arg_ptr, arg); ++ else ++ printf("%p", check->arg_ptr); ++ printf(") = %s\n", errstr); ++} ++ ++static void ++print_input_absinfo(long rc, void *ptr, void *arg) ++{ ++ struct input_absinfo *absinfo = ptr; ++ ++ if (rc < 0) { ++ printf("%p", absinfo); ++ return; ++ } ++ PRINT_FIELD_U("{", *absinfo, value); ++ PRINT_FIELD_U(", ", *absinfo, minimum); ++# if VERBOSE ++ PRINT_FIELD_U(", ", *absinfo, maximum); ++ PRINT_FIELD_U(", ", *absinfo, fuzz); ++ PRINT_FIELD_U(", ", *absinfo, flat); ++# ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION ++ PRINT_FIELD_U(", ", *absinfo, resolution); ++# endif ++# else ++ printf(", ..."); ++# endif ++ printf("}"); ++} ++ ++static void ++print_input_id(long rc, void *ptr, void *arg) ++{ ++ struct input_id *id = ptr; ++ ++ if (rc < 0) { ++ printf("%p", id); ++ return; ++ } ++ printf("{ID_BUS=%" PRIu16 ++ ", ID_VENDOR=%" PRIu16 ++ ", ID_PRODUCT=%" PRIu16 ++ ", ID_VERSION=%" PRIu16 "}", ++ id->bustype, id->vendor, id->product, id->version); ++} ++ ++# ifdef EVIOCGMTSLOTS ++static void ++print_mtslots(long rc, void *ptr, void *arg) ++{ ++ int *buffer = ptr; ++ const char **str = arg; ++ int num = atoi(*(str + 1)); ++ ++ if (rc < 0) { ++ printf("%p", buffer); ++ return; ++ } ++ ++ printf("{code=%s", *str); ++ printf(", values=["); ++ for (unsigned int i = 1; i <= (unsigned) num; i++) ++ printf("%s%s", i > 1 ? ", " : "", *(str + i + 1)); ++ printf("]}"); ++} ++# endif ++ ++static void ++print_getbit(long rc, void *ptr, void *arg) ++{ ++ const char **str = arg; ++ int num = atoi(*str); ++ ++ if (rc < 0) { ++ printf("%p", ptr); ++ return; ++ } ++ ++ printf("["); ++ printf("%s", *(str + 1)); ++ for (unsigned int i = 2; i <= (unsigned) num; i++) { ++# if ! VERBOSE ++ if (i > 4) { ++ printf(", ..."); ++ break; ++ } ++# endif ++ printf(", "); ++ printf("%s", *(str + i)); ++ } ++ printf("]"); ++} ++ ++int ++main(int argc, char **argv) ++{ ++ unsigned long num_skip; ++ long inject_retval; ++ bool locked = false; ++ ++ if (argc == 1) ++ return 0; ++ ++ if (argc < 3) ++ error_msg_and_fail("Usage: %s NUM_SKIP INJECT_RETVAL", argv[0]); ++ ++ num_skip = strtoul(argv[1], NULL, 0); ++ inject_retval = strtol(argv[2], NULL, 0); ++ ++ if (inject_retval < 0) ++ error_msg_and_fail("Expected non-negative INJECT_RETVAL, " ++ "but got %ld", inject_retval); ++ ++ for (unsigned int i = 0; i < num_skip; i++) { ++ long rc = ioctl(-1, EVIOCGID, NULL); ++ printf("ioctl(-1, EVIOCGID, NULL) = %s%s\n", ++ sprintrc(rc), ++ rc == inject_retval ? " (INJECTED)" : ""); ++ ++ if (rc != inject_retval) ++ continue; ++ ++ locked = true; ++ break; ++ } ++ ++ if (!locked) ++ error_msg_and_fail("Hasn't locked on ioctl(-1" ++ ", EVIOCGID, NULL) returning %lu", ++ inject_retval); ++ ++ TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id); ++ TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo); ++ TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot); ++# ifdef EVIOCGMTSLOTS ++ int mtslots[] = { ABS_MT_SLOT, 1, 3 }; ++ /* we use the second element to indicate the number of values */ ++ /* mtslots_str[1] is "2" so the number of values is 2 */ ++ const char *mtslots_str[] = { "ABS_MT_SLOT", "2", "1", "3" }; ++ ++ /* invalid flag */ ++ int invalid_mtslot[] = { -1, 1 }; ++ char invalid_str[4096]; ++ snprintf(invalid_str, sizeof(invalid_str), "%#x /* ABS_MT_??? */", invalid_mtslot[0]); ++ const char *invalid_mtslot_str[] = { invalid_str, "1", "1" }; ++# endif ++ ++ /* set more than 4 bits */ ++ unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR }; ++ /* we use the first element to indicate the number of set bits */ ++ /* ev_more_str[0] is "5" so the number of set bits is 5 */ ++ const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" }; ++ ++ /* set less than 4 bits */ ++ unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED }; ++ const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" }; ++ ++ /* set zero bit */ ++ unsigned long ev_zero[] = { 0x0 }; ++ const char *ev_zero_str[] = { "0", " 0 " }; ++ ++ /* KEY_MAX is 0x2ff which is greater than retval * 8 */ ++ unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 }; ++ const char *key_str[] = { "2", "KEY_1", "KEY_2" }; ++ ++ struct { ++ struct evdev_check check; ++ void *ptr; ++ } a[] = { ++ { { ARG_STR(EVIOCGID), id, print_input_id }, NULL }, ++ { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL }, ++ { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL }, ++ { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL }, ++ { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str }, ++ { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str }, ++ { { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str }, ++ { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str}, ++# ifdef EVIOCGMTSLOTS ++ { { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str }, ++ { { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str } ++# endif ++ }; ++ for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) { ++ test_evdev(&a[i].check, a[i].ptr); ++ } ++ ++ puts("+++ exited with 0 +++"); ++ return 0; ++} ++#else ++ ++SKIP_MAIN_UNDEFINED("HAVE_LINUX_INPUT_H") ++ ++#endif +diff --git a/tests/ioctl_evdev-success.test b/tests/ioctl_evdev-success.test +new file mode 100755 +index 0000000..e735af9 +--- /dev/null ++++ b/tests/ioctl_evdev-success.test +@@ -0,0 +1,13 @@ ++#!/bin/sh -efu ++ ++. "${srcdir=.}/scno_tampering.sh" ++ ++: ${IOCTL_INJECT_START=256} ++: ${IOCTL_INJECT_RETVAL=8} ++ ++run_prog ++run_strace -a16 -e trace=ioctl \ ++ -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \ ++ ../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP" ++grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT" ++match_diff "$OUT" "$EXP" +-- +1.7.12.4 + diff --git a/tests-enhance-test-coverage-of-evdev-ioctl.patch b/tests-enhance-test-coverage-of-evdev-ioctl.patch new file mode 100644 index 0000000..fac3d44 --- /dev/null +++ b/tests-enhance-test-coverage-of-evdev-ioctl.patch @@ -0,0 +1,25 @@ +From ed29ac33bbe541cc10c51bef57cd76011df39e5d Mon Sep 17 00:00:00 2001 +From: Zhibin Li <08826794brmt@gmail.com> +Date: Fri, 10 Aug 2018 20:17:38 +0800 +Subject: [PATCH 008/293] tests: enhance test coverage of evdev ioctl + +* tests/ioctl_evdev.c (main): Test EVIOCGMTSLOTS(8) command. +--- + tests/ioctl_evdev.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/ioctl_evdev.c b/tests/ioctl_evdev.c +index 071b6b0..d6f50ac 100644 +--- a/tests/ioctl_evdev.c ++++ b/tests/ioctl_evdev.c +@@ -114,6 +114,7 @@ main(void) + TEST_NULL_ARG(EVIOCGLED(0)); + # ifdef EVIOCGMTSLOTS + TEST_NULL_ARG(EVIOCGMTSLOTS(0)); ++ TEST_NULL_ARG(EVIOCGMTSLOTS(8)); + # endif + # ifdef EVIOCGPROP + TEST_NULL_ARG(EVIOCGPROP(0)); +-- +1.7.12.4 + diff --git a/tests-fix-build-with-recent-kernel-headers.patch b/tests-fix-build-with-recent-kernel-headers.patch new file mode 100644 index 0000000..207c46a --- /dev/null +++ b/tests-fix-build-with-recent-kernel-headers.patch @@ -0,0 +1,34 @@ +From 6d6d5bc4807a2c09784dfa3290aa0b4128a5183b Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Thu, 25 Oct 2018 13:36:54 +0000 +Subject: [PATCH 092/293] tests: fix build with recent kernel headers + +Linux commit v4.19-rc2-5-g2ecefa0a15fd0ef88b9cd5d15ceb813008136431 +changed the definition of struct keyctl_dh_params in an incompatible +way again. Workaround this issue by using designated initializers. + +* tests/keyctl.c (main): Use designated initializers for +struct keyctl_dh_params. +--- + tests/keyctl.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tests/keyctl.c b/tests/keyctl.c +index 881f24b..e53cdc4 100644 +--- a/tests/keyctl.c ++++ b/tests/keyctl.c +@@ -312,7 +312,10 @@ main(void) + static const char *bogus_key3_str = "-557785390"; + + static const struct keyctl_dh_params kcdhp_data = { +- KEY_SPEC_GROUP_KEYRING, 1234567890, 3141592653U }; ++ .private = KEY_SPEC_GROUP_KEYRING, ++ .prime = 1234567890, ++ .base = 3141592653U ++ }; + static const char *kcdhp_str = "{private=" + #if XLAT_RAW || XLAT_VERBOSE + "-6" +-- +1.7.12.4 + diff --git a/tests-robustify-preadv2-pwritev2-test-against-odd-ke.patch b/tests-robustify-preadv2-pwritev2-test-against-odd-ke.patch new file mode 100644 index 0000000..05ff7c0 --- /dev/null +++ b/tests-robustify-preadv2-pwritev2-test-against-odd-ke.patch @@ -0,0 +1,81 @@ +From 28030d2b51951be018d063b49e19972b45c81daf Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Mon, 11 Feb 2019 21:00:05 +0000 +Subject: [PATCH 228/293] tests: robustify preadv2-pwritev2 test against odd + kernels + +The test used to assume that either both preadv2 and pwritev2 syscalls +are implemented or both are not implemented, but, apparently, there are +kernels in the wild that implement just preadv2 syscall without +pwritev2. + +* tests/preadv2-pwritev2.c (main): Skip the dumpio part of the test +if either preadv2 or pwritev2 syscall is not implemented. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1668750 +--- + tests/preadv2-pwritev2.c | 31 ++++++++++++++++++++++++------- + 1 file changed, 24 insertions(+), 7 deletions(-) + +diff --git a/tests/preadv2-pwritev2.c b/tests/preadv2-pwritev2.c +index f0e6987..1dfd674 100644 +--- a/tests/preadv2-pwritev2.c ++++ b/tests/preadv2-pwritev2.c +@@ -186,7 +186,7 @@ main(void) + const unsigned long long pos = 0x7ac5fed6dad7bef8; + const kernel_ulong_t pos_l = (kernel_ulong_t) pos; + long rc; +- int test_dumpio; ++ bool skip_dumpio_test = false; + + tprintf("%s", ""); + +@@ -203,9 +203,17 @@ main(void) + (kernel_ulong_t) (pos >> 32); + rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1); + #endif +- if (rc != -1 || (ENOSYS != errno && EBADF != errno)) +- perror_msg_and_fail("preadv2"); +- test_dumpio = EBADF == errno; ++ if (rc != -1) ++ error_msg_and_fail("preadv2: expected -1, returned %ld", rc); ++ switch (errno) { ++ case ENOSYS: ++ skip_dumpio_test = true; ++ break; ++ case EBADF: ++ break; ++ default: ++ perror_msg_and_fail("preadv2"); ++ } + tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n", + (unsigned long) vlen, pos, sprintrc(rc)); + +@@ -218,12 +226,21 @@ main(void) + #else + rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1); + #endif +- if (rc != -1 || (ENOSYS != errno && EBADF != errno)) +- perror_msg_and_fail("pwritev2"); ++ if (rc != -1) ++ error_msg_and_fail("pwritev2: expected -1, returned %ld", rc); ++ switch (errno) { ++ case ENOSYS: ++ skip_dumpio_test = true; ++ break; ++ case EBADF: ++ break; ++ default: ++ perror_msg_and_fail("pwritev2"); ++ } + tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n", + (unsigned long) vlen, pos, sprintrc(rc)); + +- if (test_dumpio) ++ if (!skip_dumpio_test) + dumpio(); + + tprintf("%s\n", "+++ exited with 0 +++"); +-- +1.7.12.4 + diff --git a/xlat-add-ABS_RESERVED-to-evdev_abs.patch b/xlat-add-ABS_RESERVED-to-evdev_abs.patch new file mode 100644 index 0000000..6274eb4 --- /dev/null +++ b/xlat-add-ABS_RESERVED-to-evdev_abs.patch @@ -0,0 +1,28 @@ +From 0954bf0ec84c356d95dac302d1e1922e5847b4f3 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Thu, 1 Nov 2018 18:10:06 +0100 +Subject: [PATCH 184/293] xlat: add ABS_RESERVED to evdev_abs + +* xlat/evdev_abs.in (ABS_RESERVED): New constant, introduced by Linux +commit v4.20-rc1~133^2~2^2. + +Co-Authored-by: Dmitry V. Levin +--- + xlat/evdev_abs.in | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/xlat/evdev_abs.in b/xlat/evdev_abs.in +index d65b846..e2d6900 100644 +--- a/xlat/evdev_abs.in ++++ b/xlat/evdev_abs.in +@@ -25,6 +25,7 @@ ABS_TILT_Y 0x1b + ABS_TOOL_WIDTH 0x1c + ABS_VOLUME 0x20 + ABS_MISC 0x28 ++ABS_RESERVED 0x2e + ABS_MT_SLOT 0x2f + ABS_MT_TOUCH_MAJOR 0x30 + ABS_MT_TOUCH_MINOR 0x31 +-- +1.7.12.4 + diff --git a/xlat-add-AF_XDP-to-addrfams.in.patch b/xlat-add-AF_XDP-to-addrfams.in.patch new file mode 100644 index 0000000..ed144f9 --- /dev/null +++ b/xlat-add-AF_XDP-to-addrfams.in.patch @@ -0,0 +1,23 @@ +From dac524ad9802f0fd55236ea36d153b62b4a96123 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 21:44:10 +0200 +Subject: [PATCH 043/293] xlat: add AF_XDP to addrfams.in + +* xlat/addrfams.in (AF_XDP): New constant, introduced by Linux commit +v4.18-rc1~114^2~304^2~4^2~14. +--- + xlat/addrfams.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/addrfams.in b/xlat/addrfams.in +index 5824c3b..e6a6232 100644 +--- a/xlat/addrfams.in ++++ b/xlat/addrfams.in +@@ -43,3 +43,4 @@ AF_VSOCK 40 + AF_KCM 41 + AF_QIPCRTR 42 + AF_SMC 43 ++AF_XDP 44 +-- +1.7.12.4 + diff --git a/xlat-add-AUDIT_INTEGRITY_POLICY_RULE-to-nl_audit_typ.patch b/xlat-add-AUDIT_INTEGRITY_POLICY_RULE-to-nl_audit_typ.patch new file mode 100644 index 0000000..d76edb0 --- /dev/null +++ b/xlat-add-AUDIT_INTEGRITY_POLICY_RULE-to-nl_audit_typ.patch @@ -0,0 +1,27 @@ +From 6b141f643aa60fb9bd8ba1ad551a0e020c04555e Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:38:51 +0200 +Subject: [PATCH 026/293] xlat: add AUDIT_INTEGRITY_POLICY_RULE to + nl_audit_types.in + +* xlat/nl_audit_types.in (AUDIT_INTEGRITY_POLICY_RULE): New constant, +introduced by Linux commit v4.19-rc1~124^2~5. +--- + xlat/nl_audit_types.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/nl_audit_types.in b/xlat/nl_audit_types.in +index a9d7622..afba5cd 100644 +--- a/xlat/nl_audit_types.in ++++ b/xlat/nl_audit_types.in +@@ -109,6 +109,7 @@ AUDIT_INTEGRITY_HASH 1803 + AUDIT_INTEGRITY_PCR 1804 + AUDIT_INTEGRITY_RULE 1805 + AUDIT_INTEGRITY_EVM_XATTR 1806 ++AUDIT_INTEGRITY_POLICY_RULE 1807 + + AUDIT_KERNEL 2000 + +-- +1.7.12.4 + diff --git a/xlat-add-BPF_PROG_TYPE_SK_REUSEPORT-to-bpf_prog_type.patch b/xlat-add-BPF_PROG_TYPE_SK_REUSEPORT-to-bpf_prog_type.patch new file mode 100644 index 0000000..48d4aaf --- /dev/null +++ b/xlat-add-BPF_PROG_TYPE_SK_REUSEPORT-to-bpf_prog_type.patch @@ -0,0 +1,25 @@ +From 6e7da522869a7ff5f4f2880390723f996a526300 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:46:26 +0200 +Subject: [PATCH 038/293] xlat: add BPF_PROG_TYPE_SK_REUSEPORT to + bpf_prog_types.in + +* xlat/bpf_prog_types.in (BPF_PROG_TYPE_SK_REUSEPORT): New constant, +introduced by Linux commit v4.19-rc1~140^2~24^2~2^2~5. +* tests/bpf.c: Update expected output. +--- + xlat/bpf_prog_types.in | 1 + + 1 files changed, 1 insertions(+) + +diff --git a/xlat/bpf_prog_types.in b/xlat/bpf_prog_types.in +index 77b864e..d32ca7f 100644 +--- a/xlat/bpf_prog_types.in ++++ b/xlat/bpf_prog_types.in +@@ -19,3 +19,4 @@ BPF_PROG_TYPE_SK_MSG 16 + BPF_PROG_TYPE_RAW_TRACEPOINT 17 + BPF_PROG_TYPE_LWT_SEG6LOCAL 18 + BPF_PROG_TYPE_LIRC_MODE2 19 ++BPF_PROG_TYPE_SK_REUSEPORT 20 +-- +1.7.12.4 + diff --git a/xlat-add-FAN_ENABLE_AUDIT-and-FAN_REPORT_TID-to-fan_.patch b/xlat-add-FAN_ENABLE_AUDIT-and-FAN_REPORT_TID-to-fan_.patch new file mode 100644 index 0000000..aea97c9 --- /dev/null +++ b/xlat-add-FAN_ENABLE_AUDIT-and-FAN_REPORT_TID-to-fan_.patch @@ -0,0 +1,31 @@ +From 5be335ceaac0390ecf6bf72c933cecc1e78c546d Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 11 Sep 2018 01:45:30 +0200 +Subject: [PATCH 172/293] xlat: add FAN_ENABLE_AUDIT and FAN_REPORT_TID to + fan_init_flags + +* xlat/fan_init_flags.in (FAN_ENABLE_AUDIT): New constant, introduced +by Linux commit v4.15-rc1~130^2^2~11. +(FAN_REPORT_TID): New constant, introduced by Linux commit +v4.20-rc1~75^2~2. +* NEWS: Mention this. +* tests/fanotify_init.c (main): Update expected output. + +Co-Authored-by: Dmitry V. Levin +--- + xlat/fan_init_flags.in | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/xlat/fan_init_flags.in b/xlat/fan_init_flags.in +index ca33039..54d681f 100644 +--- a/xlat/fan_init_flags.in ++++ b/xlat/fan_init_flags.in +@@ -2,3 +2,5 @@ FAN_CLOEXEC 0x00000001 + FAN_NONBLOCK 0x00000002 + FAN_UNLIMITED_QUEUE 0x00000010 + FAN_UNLIMITED_MARKS 0x00000020 ++FAN_ENABLE_AUDIT 0x00000040 ++FAN_REPORT_TID 0x00000100 +-- +1.7.12.4 + diff --git a/xlat-add-IN_MASK_CREATE-to-inotify_flags.in.patch b/xlat-add-IN_MASK_CREATE-to-inotify_flags.in.patch new file mode 100644 index 0000000..5a3d7b0 --- /dev/null +++ b/xlat-add-IN_MASK_CREATE-to-inotify_flags.in.patch @@ -0,0 +1,27 @@ +From 9aa1efde5818008f9110bc6a282809a7799c9d91 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 09:57:04 +0200 +Subject: [PATCH 019/293] xlat: add IN_MASK_CREATE to inotify_flags.in + +* xlat/inotify_flags.in (IN_MASK_CREATE): New constant, introduced by +Linux commit v4.19-rc1~115^2. +* tests/inotify.c (main): Update expected output. +--- + xlat/inotify_flags.in | 1 + + 1 files changed, 1 insertions(+) + +diff --git a/xlat/inotify_flags.in b/xlat/inotify_flags.in +index db1d839..671bd0e 100644 +--- a/xlat/inotify_flags.in ++++ b/xlat/inotify_flags.in +@@ -16,6 +16,7 @@ IN_IGNORED 0x00008000 + IN_ONLYDIR 0x01000000 + IN_DONT_FOLLOW 0x02000000 + IN_EXCL_UNLINK 0x04000000 ++IN_MASK_CREATE 0x10000000 + IN_MASK_ADD 0x20000000 + IN_ISDIR 0x40000000 + IN_ONESHOT 0x80000000 +-- +1.7.12.4 + diff --git a/xlat-add-IPSTATS_MIB_REASM_OVERLAPS-to-snmp_ip_stats.patch b/xlat-add-IPSTATS_MIB_REASM_OVERLAPS-to-snmp_ip_stats.patch new file mode 100644 index 0000000..b6e9849 --- /dev/null +++ b/xlat-add-IPSTATS_MIB_REASM_OVERLAPS-to-snmp_ip_stats.patch @@ -0,0 +1,24 @@ +From 930864b0834e400ace10337a2a6dfd8ee71f7f20 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:42:13 +0200 +Subject: [PATCH 037/293] xlat: add IPSTATS_MIB_REASM_OVERLAPS to + snmp_ip_stats_mib.in + +* xlat/snmp_ip_stats.in (IPSTATS_MIB_REASM_OVERLAPS): New constant, +introduced by Linux commit v4.19-rc1~140^2~128^2~2. +--- + xlat/snmp_ip_stats.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/snmp_ip_stats.in b/xlat/snmp_ip_stats.in +index 4bfb7ee..7de755d 100644 +--- a/xlat/snmp_ip_stats.in ++++ b/xlat/snmp_ip_stats.in +@@ -35,3 +35,4 @@ IPSTATS_MIB_NOECTPKTS 32 + IPSTATS_MIB_ECT1PKTS 33 + IPSTATS_MIB_ECT0PKTS 34 + IPSTATS_MIB_CEPKTS 35 ++IPSTATS_MIB_REASM_OVERLAPS 36 +-- +1.7.12.4 + diff --git a/xlat-add-IPV4_DEVCONF_BC_FORWARDING-1-to-inet_devcon.patch b/xlat-add-IPV4_DEVCONF_BC_FORWARDING-1-to-inet_devcon.patch new file mode 100644 index 0000000..1373407 --- /dev/null +++ b/xlat-add-IPV4_DEVCONF_BC_FORWARDING-1-to-inet_devcon.patch @@ -0,0 +1,24 @@ +From 4fa680e63ff1b4f35404d108408521adf30a6197 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:30:27 +0200 +Subject: [PATCH 034/293] xlat: add IPV4_DEVCONF_BC_FORWARDING-1 to + inet_devconf_indices.in + +* xlat/inet_devconf_indices.in (IPV4_DEVCONF_BC_FORWARDING-1): New +constant, introduced by Linux commit v4.19-rc1~140^2~208^2~1. +--- + xlat/inet_devconf_indices.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/inet_devconf_indices.in b/xlat/inet_devconf_indices.in +index eabcfc5..dd26237 100644 +--- a/xlat/inet_devconf_indices.in ++++ b/xlat/inet_devconf_indices.in +@@ -31,3 +31,4 @@ IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1 28 + IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1 29 + IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1 30 + IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1 31 ++IPV4_DEVCONF_BC_FORWARDING-1 32 +-- +1.7.12.4 + diff --git a/xlat-add-PR_SPEC_INDIRECT_BRANCH-to-pr_spec_cmds.patch b/xlat-add-PR_SPEC_INDIRECT_BRANCH-to-pr_spec_cmds.patch new file mode 100644 index 0000000..5afc832 --- /dev/null +++ b/xlat-add-PR_SPEC_INDIRECT_BRANCH-to-pr_spec_cmds.patch @@ -0,0 +1,140 @@ +From 38ea49ad111f8a622756e62bc99cab6ce515dc27 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Fri, 14 Dec 2018 17:25:24 +0100 +Subject: [PATCH 186/293] xlat: add PR_SPEC_INDIRECT_BRANCH to pr_spec_cmds + +* xlat/pr_spec_cmds.in (PR_SPEC_INDIRECT_BRANCH): New constant, +introduced by Linux commit v4.20-rc5~4^2~3. +* prctl.c (SYS_FUNC(prctl)) : Add PR_SPEC_INDIRECT_BRANCH handling. +* tests/prctl-spec-inject.c (main): Add PR_SPEC_INDIRECT_BRANCH decoding +checks, update expected output. +* NEWS: Mention this. + +Co-Authored-by: Dmitry V. Levin +--- + prctl.c | 2 ++ + tests/prctl-spec-inject.c | 51 +++++++++++++++++++++++++++++------------------ + xlat/pr_spec_cmds.in | 2 ++ + 4 files changed, 37 insertions(+), 20 deletions(-) + +diff --git a/prctl.c b/prctl.c +index 669f263..7516510 100644 +--- a/prctl.c ++++ b/prctl.c +@@ -221,6 +221,7 @@ SYS_FUNC(prctl) + + switch (arg2) { + case PR_SPEC_STORE_BYPASS: ++ case PR_SPEC_INDIRECT_BRANCH: + tcp->auxstr = sprintflags("", + pr_spec_get_store_bypass_flags, + (kernel_ulong_t) tcp->u_rval); +@@ -393,6 +394,7 @@ SYS_FUNC(prctl) + + switch (arg2) { + case PR_SPEC_STORE_BYPASS: ++ case PR_SPEC_INDIRECT_BRANCH: + printxval64(pr_spec_set_store_bypass_flags, arg3, + "PR_SPEC_???"); + break; +diff --git a/tests/prctl-spec-inject.c b/tests/prctl-spec-inject.c +index 1247c3c..04403b4 100644 +--- a/tests/prctl-spec-inject.c ++++ b/tests/prctl-spec-inject.c +@@ -40,6 +40,15 @@ main(int argc, char **argv) + (kernel_ulong_t) 0xdeadfacebadc0dedULL; + static const kernel_ulong_t bogus_arg3 = + (kernel_ulong_t) 0xdecafeedbeefda7eULL; ++ ++ static const struct { ++ long arg; ++ const char *str; ++ } spec_strs[] = { ++ { 0, "PR_SPEC_STORE_BYPASS" }, ++ { 1, "PR_SPEC_INDIRECT_BRANCH" }, ++ }; ++ + static const struct { + long arg; + const char *str; +@@ -78,8 +87,8 @@ main(int argc, char **argv) + injected_val = strtol(argv[1], NULL, 0); + + /* PR_GET_SPECULATION_CTRL */ +- rc = do_prctl(52, 1, bogus_arg3); +- printf("prctl(PR_GET_SPECULATION_CTRL, 0x1 /* PR_SPEC_??? */) " ++ rc = do_prctl(52, 2, bogus_arg3); ++ printf("prctl(PR_GET_SPECULATION_CTRL, 0x2 /* PR_SPEC_??? */) " + "= %s (INJECTED)\n", sprintrc(rc)); + + rc = do_prctl(52, bogus_arg2, bogus_arg3); +@@ -87,24 +96,26 @@ main(int argc, char **argv) + "= %s (INJECTED)\n", + (unsigned long long) bogus_arg2, sprintrc(rc)); + +- rc = do_prctl(52, 0, bogus_arg3); ++ for (unsigned c = 0; c < ARRAY_SIZE(spec_strs); c++) { ++ rc = do_prctl(52, spec_strs[c].arg, bogus_arg3); + +- for (unsigned i = 0; i < ARRAY_SIZE(get_strs); i++) { +- if (get_strs[i].arg == rc) { +- str = get_strs[i].str; +- break; ++ for (unsigned i = 0; i < ARRAY_SIZE(get_strs); i++) { ++ if (get_strs[i].arg == rc) { ++ str = get_strs[i].str; ++ break; ++ } + } +- } +- if (!str) +- error_msg_and_fail("Unknown return value: %ld", rc); ++ if (!str) ++ error_msg_and_fail("Unknown return value: %ld", rc); + +- printf("prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS) " +- "= %s%s (INJECTED)\n", sprintrc(rc), str); ++ printf("prctl(PR_GET_SPECULATION_CTRL, %s) = %s%s (INJECTED)\n", ++ spec_strs[c].str, sprintrc(rc), str); ++ } + + + /* PR_SET_SPECULATION_CTRL*/ +- rc = do_prctl(53, 1, bogus_arg3); +- printf("prctl(PR_SET_SPECULATION_CTRL, 0x1 /* PR_SPEC_??? */, %#llx) " ++ rc = do_prctl(53, 2, bogus_arg3); ++ printf("prctl(PR_SET_SPECULATION_CTRL, 0x2 /* PR_SPEC_??? */, %#llx) " + "= %s (INJECTED)\n", + (unsigned long long) bogus_arg3, sprintrc(rc)); + +@@ -115,11 +126,13 @@ main(int argc, char **argv) + (unsigned long long) bogus_arg3, + sprintrc(rc)); + +- for (unsigned i = 0; i < ARRAY_SIZE(set_strs); i++) { +- rc = do_prctl(53, 0, set_strs[i].arg); +- printf("prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS" +- ", %s) = %s (INJECTED)\n", +- set_strs[i].str, sprintrc(rc)); ++ for (unsigned c = 0; c < ARRAY_SIZE(spec_strs); c++) { ++ for (unsigned i = 0; i < ARRAY_SIZE(set_strs); i++) { ++ rc = do_prctl(53, spec_strs[c].arg, set_strs[i].arg); ++ printf("prctl(PR_SET_SPECULATION_CTRL, %s" ++ ", %s) = %s (INJECTED)\n", ++ spec_strs[c].str, set_strs[i].str, sprintrc(rc)); ++ } + } + + puts("+++ exited with 0 +++"); +diff --git a/xlat/pr_spec_cmds.in b/xlat/pr_spec_cmds.in +index e006923..8e5ded0 100644 +--- a/xlat/pr_spec_cmds.in ++++ b/xlat/pr_spec_cmds.in +@@ -1 +1,3 @@ ++#value_indexed + PR_SPEC_STORE_BYPASS 0 ++PR_SPEC_INDIRECT_BRANCH 1 +-- +1.7.12.4 + diff --git a/xlat-add-SCTP_REUSE_PORT-to-sock_sctp_options.in.patch b/xlat-add-SCTP_REUSE_PORT-to-sock_sctp_options.in.patch new file mode 100644 index 0000000..737968a --- /dev/null +++ b/xlat-add-SCTP_REUSE_PORT-to-sock_sctp_options.in.patch @@ -0,0 +1,26 @@ +From f9578731fcabf329c1d5deb05afd12d2b8c61974 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 09:59:01 +0200 +Subject: [PATCH 020/293] xlat: add SCTP_REUSE_PORT to sock_sctp_options.in + +* xlat/sock_sctp_options.in (SCTP_REUSE_PORT): New constant, introduced +by Linux commit v4.19-rc1~140^2~518. +--- + xlat/sock_sctp_options.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/sock_sctp_options.in b/xlat/sock_sctp_options.in +index bbb914e..db13680 100644 +--- a/xlat/sock_sctp_options.in ++++ b/xlat/sock_sctp_options.in +@@ -34,6 +34,7 @@ SCTP_RECVRCVINFO 32 + SCTP_RECVNXTINFO 33 + SCTP_DEFAULT_SNDINFO 34 + SCTP_AUTH_DEACTIVATE_KEY 35 ++SCTP_REUSE_PORT 36 + /* linux specific things */ + SCTP_SOCKOPT_BINDX_ADD 100 + SCTP_SOCKOPT_BINDX_REM 101 +-- +1.7.12.4 + diff --git a/xlat-add-SOL_CAN_-to-socketlayers.patch b/xlat-add-SOL_CAN_-to-socketlayers.patch new file mode 100644 index 0000000..4c2aa8b --- /dev/null +++ b/xlat-add-SOL_CAN_-to-socketlayers.patch @@ -0,0 +1,31 @@ +From 88863bf3edd7ab1e1a7ccfd64569f44bb15f1b86 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 15 Oct 2018 17:32:01 +0200 +Subject: [PATCH 173/293] xlat: add SOL_CAN_* to socketlayers + +* xlat/socketlayers.in (SOL_CAN_BASE): New constant, introduced by Linux +commit v2.6.25-rc1~1162^2~1414. +(SOL_CAN_RAW): New constant, introduced by Linux commit +v2.6.25-rc1~1162^2~1413. + +Co-Authored-by: Dmitry V. Levin +--- + xlat/socketlayers.in | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/xlat/socketlayers.in b/xlat/socketlayers.in +index 0ff09d8..fd44dd1 100644 +--- a/xlat/socketlayers.in ++++ b/xlat/socketlayers.in +@@ -7,6 +7,8 @@ SOL_TCP 6 + SOL_UDP 17 + SOL_IPV6 41 + SOL_ICMPV6 58 ++SOL_CAN_BASE 100 ++SOL_CAN_RAW 101 + SOL_SCTP 132 + SOL_UDPLITE 136 + SOL_RAW 255 +-- +1.7.12.4 + diff --git a/xlat-add-SOL_XDP-to-socketlayers.in.patch b/xlat-add-SOL_XDP-to-socketlayers.in.patch new file mode 100644 index 0000000..db3ff59 --- /dev/null +++ b/xlat-add-SOL_XDP-to-socketlayers.in.patch @@ -0,0 +1,26 @@ +From 45afd0c7a36a4edf486f0001507871d39c76560b Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 21:44:51 +0200 +Subject: [PATCH 044/293] xlat: add SOL_XDP to socketlayers.in + +* xlat/socketlayers.in (SOL_XDP): New constant, introduced by Linux +commit v4.18-rc1~114^2~304^2~4^2~14. +--- + xlat/socketlayers.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xlat/socketlayers.in b/xlat/socketlayers.in +index 0dfa446..0ff09d8 100644 +--- a/xlat/socketlayers.in ++++ b/xlat/socketlayers.in +@@ -37,6 +37,7 @@ SOL_ALG 279 + SOL_NFC 280 + SOL_KCM 281 + SOL_TLS 282 ++SOL_XDP 283 + #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__ + SOL_SOCKET 0xffff + #endif +-- +1.7.12.4 + diff --git a/xlat-add-SO_TXTIME-to-sock_options.in.patch b/xlat-add-SO_TXTIME-to-sock_options.in.patch new file mode 100644 index 0000000..b529bb9 --- /dev/null +++ b/xlat-add-SO_TXTIME-to-sock_options.in.patch @@ -0,0 +1,30 @@ +From db5235d0e930ac959cd62e3b022f94f3db7eae2a Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 10:54:51 +0200 +Subject: [PATCH 022/293] xlat: add SO_TXTIME to sock_options.in + +* xlat/sock_options.in (SO_TXTIME): New constant, introduced by Linux +commit v4.19-rc1~140^2~465^2~12. +--- + xlat/sock_options.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/xlat/sock_options.in b/xlat/sock_options.in +index 2d2d439..9f96d2d 100644 +--- a/xlat/sock_options.in ++++ b/xlat/sock_options.in +@@ -445,3 +445,11 @@ SO_ZEROCOPY 16437 + #else + SO_ZEROCOPY 60 + #endif ++ ++#if defined __sparc__ ++SO_TXTIME 63 ++#elif defined __hppa__ ++SO_TXTIME 16438 ++#else ++SO_TXTIME 61 ++#endif +-- +1.7.12.4 + diff --git a/xlat-add-TCP_CLOSE-to-netlink_states.patch b/xlat-add-TCP_CLOSE-to-netlink_states.patch new file mode 100644 index 0000000..6328197 --- /dev/null +++ b/xlat-add-TCP_CLOSE-to-netlink_states.patch @@ -0,0 +1,23 @@ +From cd933c16c968f6209c198ca14ceedce18c6e3ca3 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sat, 20 Oct 2018 06:16:05 +0200 +Subject: [PATCH 175/293] xlat: add TCP_CLOSE to netlink_states + +* xlat/netlink_states.in: Decode state 7 as TCP_CLOSE, since that's what +net core sets socket's initial state to. +--- + xlat/netlink_states.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xlat/netlink_states.in b/xlat/netlink_states.in +index 4d4aee7..d2ffb7b 100644 +--- a/xlat/netlink_states.in ++++ b/xlat/netlink_states.in +@@ -1,2 +1,4 @@ + NETLINK_UNCONNECTED 0 + NETLINK_CONNECTED 1 ++/* The initial socket state, as set by net/code/sock.c:sock_init_data */ ++TCP_CLOSE 7 +-- +1.7.12.4 + diff --git a/xlat-add-fallback-definitions-to-setsock_ipv6_option.patch b/xlat-add-fallback-definitions-to-setsock_ipv6_option.patch new file mode 100644 index 0000000..a6c6dfe --- /dev/null +++ b/xlat-add-fallback-definitions-to-setsock_ipv6_option.patch @@ -0,0 +1,26 @@ +From 6c9cfeaaa44dc524263572f535be7d011318c5f8 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 15 Oct 2018 17:56:42 +0200 +Subject: [PATCH 174/293] xlat: add fallback definitions to + setsock_ipv6_options + +* xlat/setsock_ipv6_options.in: Add fallback definitions. +--- + xlat/setsock_ipv6_options.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xlat/setsock_ipv6_options.in b/xlat/setsock_ipv6_options.in +index 087a176..5a42cdf 100644 +--- a/xlat/setsock_ipv6_options.in ++++ b/xlat/setsock_ipv6_options.in +@@ -4,5 +4,5 @@ + * should be in sock_ipv6_options.in instead. + */ + +-IP6T_SO_SET_REPLACE +-IP6T_SO_SET_ADD_COUNTERS ++IP6T_SO_SET_REPLACE 64 ++IP6T_SO_SET_ADD_COUNTERS 65 +-- +1.7.12.4 + diff --git a/xlat-fix-typo-in-smc_protocols.in.patch b/xlat-fix-typo-in-smc_protocols.in.patch new file mode 100644 index 0000000..8170e62 --- /dev/null +++ b/xlat-fix-typo-in-smc_protocols.in.patch @@ -0,0 +1,22 @@ +From 2d88ec9e392edc2652ad5617498765f21af2b611 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 21:51:15 +0200 +Subject: [PATCH 013/293] xlat: fix typo in smc_protocols.in + +* xlat/smc_protocols.in: s/^MCPROTO_SMC/SMCPROTO_SMC/. +--- + xlat/smc_protocols.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xlat/smc_protocols.in b/xlat/smc_protocols.in +index 3a65a39..b8c1aae 100644 +--- a/xlat/smc_protocols.in ++++ b/xlat/smc_protocols.in +@@ -1,3 +1,3 @@ + #value_indexed +-MCPROTO_SMC 0 ++SMCPROTO_SMC 0 + SMCPROTO_SMC6 1 +-- +1.7.12.4 + diff --git a/xlat-print-_IOC_NONE-in-symbolic-form-even-if-it-is-.patch b/xlat-print-_IOC_NONE-in-symbolic-form-even-if-it-is-.patch new file mode 100644 index 0000000..2222099 --- /dev/null +++ b/xlat-print-_IOC_NONE-in-symbolic-form-even-if-it-is-.patch @@ -0,0 +1,31 @@ +From e78becf8b93d7cc7649864a1344ed1db0b86e50e Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Sun, 23 Sep 2018 09:54:55 +0000 +Subject: [PATCH 086/293] xlat: print _IOC_NONE in symbolic form even if it is + equal to 0 + +On some architectures _IOC_NONE equals to 1, on others it is 0. +Change the way how ioctl direction flags are printed so that +_IOC_NONE is printed in symbolic form even if it is equal to 0. + +* xlat/ioctl_dirs.in (_IOC_NONE): Move to the head of the list. +* tests/ioctl_inotify.c (main): Update expected output. +* tests/ioctl_loop. (main): Likewise.c +* tests/ioctl_perf.c (main): Likewise. +* tests/ioctl_scsi.c (main): Likewise. +--- + xlat/ioctl_dirs.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/xlat/ioctl_dirs.in b/xlat/ioctl_dirs.in +index 4c97a86..c069dd7 100644 +--- a/xlat/ioctl_dirs.in ++++ b/xlat/ioctl_dirs.in +@@ -1,3 +1,3 @@ ++_IOC_NONE + _IOC_READ + _IOC_WRITE +-_IOC_NONE +-- +1.7.12.4 + diff --git a/xlat-provide-fallback-definitions-for-epollevents.patch b/xlat-provide-fallback-definitions-for-epollevents.patch new file mode 100644 index 0000000..e83372c --- /dev/null +++ b/xlat-provide-fallback-definitions-for-epollevents.patch @@ -0,0 +1,50 @@ +From 6177e74134042008d5a41ae3df9726988e96f886 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 21:23:47 +0200 +Subject: [PATCH 053/293] xlat: provide fallback definitions for epollevents + +* xlat/epollevents.in: Provide fallback definitions, add EPOLLNVAL +constant (introduced by Linux commit v4.16-rc1~3^2~3). +--- + xlat/epollevents.in | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +diff --git a/xlat/epollevents.in b/xlat/epollevents.in +index 6fa6707..2dced00 100644 +--- a/xlat/epollevents.in ++++ b/xlat/epollevents.in +@@ -1,15 +1,16 @@ +-EPOLLIN +-EPOLLPRI +-EPOLLOUT +-EPOLLRDNORM +-EPOLLRDBAND +-EPOLLWRNORM +-EPOLLWRBAND +-EPOLLMSG +-EPOLLERR +-EPOLLHUP +-EPOLLRDHUP +-EPOLLEXCLUSIVE +-EPOLLWAKEUP +-EPOLLONESHOT +-EPOLLET ++EPOLLIN 0x00000001 ++EPOLLPRI 0x00000002 ++EPOLLOUT 0x00000004 ++EPOLLERR 0x00000008 ++EPOLLHUP 0x00000010 ++EPOLLNVAL 0x00000020 ++EPOLLRDNORM 0x00000040 ++EPOLLRDBAND 0x00000080 ++EPOLLWRNORM 0x00000100 ++EPOLLWRBAND 0x00000200 ++EPOLLMSG 0x00000400 ++EPOLLRDHUP 0x00002000 ++EPOLLEXCLUSIVE 0x10000000 ++EPOLLWAKEUP 0x20000000 ++EPOLLONESHOT 0x40000000 ++EPOLLET 0x80000000 +-- +1.7.12.4 + diff --git a/xlat-provide-fallback-definitions-for-open_access_mo.patch b/xlat-provide-fallback-definitions-for-open_access_mo.patch new file mode 100644 index 0000000..81a212e --- /dev/null +++ b/xlat-provide-fallback-definitions-for-open_access_mo.patch @@ -0,0 +1,28 @@ +From a5918bf7e6b1ff8283f78814216ce29177205dbb Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Fri, 31 Aug 2018 09:08:08 +0200 +Subject: [PATCH 073/293] xlat: provide fallback definitions for + open_access_modes constants + +* xlat/open_access_modes.in: Add fallback values. +--- + xlat/open_access_modes.in | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/xlat/open_access_modes.in b/xlat/open_access_modes.in +index 423a29b..45dcd73 100644 +--- a/xlat/open_access_modes.in ++++ b/xlat/open_access_modes.in +@@ -1,4 +1,5 @@ +-O_RDONLY +-O_WRONLY +-O_RDWR +-O_ACCMODE ++#value_indexed ++O_RDONLY 0 ++O_WRONLY 1 ++O_RDWR 2 ++O_ACCMODE 3 +-- +1.7.12.4 + diff --git a/xlat-provide-fallback-definitions-to-pollflags.patch b/xlat-provide-fallback-definitions-to-pollflags.patch new file mode 100644 index 0000000..e2d92b5 --- /dev/null +++ b/xlat-provide-fallback-definitions-to-pollflags.patch @@ -0,0 +1,68 @@ +From b05d2667e96718416997d2f39828647e677211d9 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 21:20:51 +0200 +Subject: [PATCH 052/293] xlat: provide fallback definitions to pollflags + +* xlat/pollflags.in: Add fallback definitions for POLLWRNORM, +POLLWRBAND, POLLMSG, POLLREMOVE, and POLLRDHUP. +--- + xlat/pollflags.in | 42 +++++++++++++++++++++++++++++++++++------- + 1 file changed, 35 insertions(+), 7 deletions(-) + +diff --git a/xlat/pollflags.in b/xlat/pollflags.in +index 3140011..8081e78 100644 +--- a/xlat/pollflags.in ++++ b/xlat/pollflags.in +@@ -1,14 +1,42 @@ + POLLIN 0x0001 + POLLPRI 0x0002 + POLLOUT 0x0004 +-POLLRDNORM 0x0040 +-POLLWRNORM +-POLLRDBAND 0x0080 +-POLLWRBAND + POLLERR 0x0008 + POLLHUP 0x0010 + POLLNVAL 0x0020 +-POLLMSG +-POLLREMOVE +-POLLRDHUP ++POLLRDNORM 0x0040 ++POLLRDBAND 0x0080 ++ ++#if defined(__m68k__) || defined(__mips__) || defined(__sparc__) || defined(__xtensa__) ++/* POLLWRNORM POLLOUT */ ++#else ++POLLWRNORM 0x0100 ++#endif ++ ++#if defined(__m68k__) || defined(__mips__) || defined(__sparc__) || defined(__xtensa__) ++POLLWRBAND 0x0100 ++#else ++POLLWRBAND 0x0200 ++#endif ++ ++#if defined(__sparc__) ++POLLMSG 0x0200 ++#else ++POLLMSG 0x0400 ++#endif ++ ++#if defined(__sparc__) ++POLLREMOVE 0x0400 ++#elif defined(__xtensa__) ++POLLREMOVE 0x0800 ++#else ++POLLREMOVE 0x1000 ++#endif ++ ++#if defined(__sparc__) ++POLLRDHUP 0x0800 ++#else ++POLLRDHUP 0x2000 ++#endif ++ + POLL_BUSY_LOOP 0x8000 +-- +1.7.12.4 + diff --git a/xlat-provide-fallback-values-for-socktypes.patch b/xlat-provide-fallback-values-for-socktypes.patch new file mode 100644 index 0000000..365e016 --- /dev/null +++ b/xlat-provide-fallback-values-for-socktypes.patch @@ -0,0 +1,37 @@ +From fdfc68a98460114755e95b9a3a9a66ef083f9a2f Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 15:15:20 +0200 +Subject: [PATCH 051/293] xlat: provide fallback values for socktypes + +* xlat/socktypes.in: Provide fallback values. +--- + xlat/socktypes.in | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/xlat/socktypes.in b/xlat/socktypes.in +index 4b3eadc..678c2da 100644 +--- a/xlat/socktypes.in ++++ b/xlat/socktypes.in +@@ -1,7 +1,12 @@ +-SOCK_STREAM +-SOCK_DGRAM +-SOCK_RAW +-SOCK_RDM +-SOCK_SEQPACKET +-SOCK_DCCP +-SOCK_PACKET ++#ifdef __mips__ ++SOCK_DGRAM 1 ++SOCK_STREAM 2 ++#else ++SOCK_STREAM 1 ++SOCK_DGRAM 2 ++#endif ++SOCK_RAW 3 ++SOCK_RDM 4 ++SOCK_SEQPACKET 5 ++SOCK_DCCP 6 ++SOCK_PACKET 10 +-- +1.7.12.4 + diff --git a/xlat-provide-fallback-values-to-route_nexthop_flags.patch b/xlat-provide-fallback-values-to-route_nexthop_flags.patch new file mode 100644 index 0000000..a3c039d --- /dev/null +++ b/xlat-provide-fallback-values-to-route_nexthop_flags.patch @@ -0,0 +1,30 @@ +From 3f10639284bf60b939a3b7cc8cb54d0f57937d9b Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 27 Aug 2018 12:32:42 +0200 +Subject: [PATCH 050/293] xlat: provide fallback values to route_nexthop_flags + +* xlat/route_nexthop_flags.in: Add fallback values. +--- + xlat/route_nexthop_flags.in | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/xlat/route_nexthop_flags.in b/xlat/route_nexthop_flags.in +index 907515e..a64a988 100644 +--- a/xlat/route_nexthop_flags.in ++++ b/xlat/route_nexthop_flags.in +@@ -1,6 +1,6 @@ +-RTNH_F_DEAD +-RTNH_F_PERVASIVE +-RTNH_F_ONLINK +-RTNH_F_OFFLOAD +-RTNH_F_LINKDOWN +-RTNH_F_UNRESOLVED ++RTNH_F_DEAD 1 ++RTNH_F_PERVASIVE 2 ++RTNH_F_ONLINK 4 ++RTNH_F_OFFLOAD 8 ++RTNH_F_LINKDOWN 16 ++RTNH_F_UNRESOLVED 32 +-- +1.7.12.4 + diff --git a/xlat-update-KERN_-constants.patch b/xlat-update-KERN_-constants.patch new file mode 100644 index 0000000..a877495 --- /dev/null +++ b/xlat-update-KERN_-constants.patch @@ -0,0 +1,41 @@ +From 25a73fb12f5693b4382a8405c297faf9ecd0a9cb Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Sat, 5 Jan 2019 21:14:42 +0000 +Subject: [PATCH 199/293] xlat: update KERN_* constants + +* xlat/sysctl_kern.in (KERN_PANIC_ON_WARN, KERN_PANIC_PRINT): New +constants introduced by Linux kernel commits v3.19-rc1~135^2~91 +and v5.0-rc1~38^2~16, respectively. +* configure.ac (AC_CHECK_DECLS): Add them. +* NEWS: Mention this. +--- + configure.ac | 2 ++ + xlat/sysctl_kern.in | 2 ++ + 3 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8045ebd..9bf64c3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -645,6 +645,8 @@ AC_CHECK_DECLS(m4_normalize([ + KERN_MAX_LOCK_DEPTH, + KERN_NMI_WATCHDOG, + KERN_PANIC_ON_NMI, ++ KERN_PANIC_ON_WARN, ++ KERN_PANIC_PRINT, + NET_LLC, + NET_NETFILTER, + NET_DCCP, +diff --git a/xlat/sysctl_kern.in b/xlat/sysctl_kern.in +index b0568ce..f920f1f 100644 +--- a/xlat/sysctl_kern.in ++++ b/xlat/sysctl_kern.in +@@ -66,3 +66,5 @@ KERN_COMPAT_LOG + KERN_MAX_LOCK_DEPTH + KERN_NMI_WATCHDOG + KERN_PANIC_ON_NMI ++KERN_PANIC_ON_WARN ++KERN_PANIC_PRINT +-- +1.7.12.4 + diff --git a/xlat-update-V4L2_CID_USER_-_BASE-constants.patch b/xlat-update-V4L2_CID_USER_-_BASE-constants.patch new file mode 100644 index 0000000..4c0b1d6 --- /dev/null +++ b/xlat-update-V4L2_CID_USER_-_BASE-constants.patch @@ -0,0 +1,46 @@ +From 0f09267db00468b9204395c6990fc8816fd3c0e5 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Sat, 18 Aug 2018 07:22:47 +0000 +Subject: [PATCH 003/293] xlat: update V4L2_CID_USER_*_BASE constants + +* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_S2255_BASE, +V4L2_CID_USER_SI476X_BASE, V4L2_CID_USER_SAA7134_BASE, +V4L2_CID_USER_ADV7180_BASE, V4L2_CID_USER_TC358743_BASE, +V4L2_CID_USER_MAX217X_BASE): New constants. +--- + xlat/v4l2_control_id_bases.in | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/xlat/v4l2_control_id_bases.in b/xlat/v4l2_control_id_bases.in +index f3fd925..a0f9cca 100644 +--- a/xlat/v4l2_control_id_bases.in ++++ b/xlat/v4l2_control_id_bases.in +@@ -1,7 +1,13 @@ + V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900) +-V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE + 0x1000) +-V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE + 0x1010) +-V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050) ++V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE | 0x1000) ++V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE | 0x1010) ++V4L2_CID_USER_S2255_BASE (V4L2_CID_BASE | 0x1030) ++V4L2_CID_USER_SI476X_BASE (V4L2_CID_BASE | 0x1040) ++V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE | 0x1050) ++V4L2_CID_USER_SAA7134_BASE (V4L2_CID_BASE | 0x1060) ++V4L2_CID_USER_ADV7180_BASE (V4L2_CID_BASE | 0x1070) ++V4L2_CID_USER_TC358743_BASE (V4L2_CID_BASE | 0x1080) ++V4L2_CID_USER_MAX217X_BASE (V4L2_CID_BASE | 0x1090) + #ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE + # define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE + /* +@@ -17,7 +23,7 @@ V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050) + */ + # undef V4L2_CID_USER_IMX_BASE + #endif +-V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0) ++V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE | 0x10b0) + V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) + V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) + V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100) +-- +1.7.12.4 + diff --git a/xlat-update-bpf_map_types.in.patch b/xlat-update-bpf_map_types.in.patch new file mode 100644 index 0000000..e56df14 --- /dev/null +++ b/xlat-update-bpf_map_types.in.patch @@ -0,0 +1,27 @@ +From 3926f4a07da13ef0adcd330b2d8d8b21eac2fa19 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 15:39:54 +0200 +Subject: [PATCH 036/293] xlat: update bpf_map_types.in + +* xlat/bpf_map_types.in (BPF_MAP_TYPE_CGROUP_STORAGE): New constant, +introduced by Linux commit v4.19-rc1~140^2~108^2~3^2~12. +(BPF_MAP_TYPE_REUSEPORT_SOCKARRAY): New constant, introduced by Linux +commit v4.19-rc1~140^2~24^2~2^2~6. +* tests/bpf.c: Update expected output. +--- + xlat/bpf_map_types.in | 2 ++ + 1 files changed, 2 insertions(+) + +diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in +index 24c2fe9..e227382 100644 +--- a/xlat/bpf_map_types.in ++++ b/xlat/bpf_map_types.in +@@ -18,3 +18,5 @@ BPF_MAP_TYPE_SOCKMAP 15 + BPF_MAP_TYPE_CPUMAP 16 + BPF_MAP_TYPE_XSKMAP 17 + BPF_MAP_TYPE_SOCKHASH 18 ++BPF_MAP_TYPE_CGROUP_STORAGE 19 ++BPF_MAP_TYPE_REUSEPORT_SOCKARRAY 20 +-- +1.7.12.4 + diff --git a/xlat-update-kvm_cap.patch b/xlat-update-kvm_cap.patch new file mode 100644 index 0000000..6fffbfa --- /dev/null +++ b/xlat-update-kvm_cap.patch @@ -0,0 +1,53 @@ +From a55f5485c65ffe1c7812b3722eaa36c15bc63385 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 24 Sep 2018 00:43:52 +0200 +Subject: [PATCH 182/293] xlat: update kvm_cap + +* xlat/kvm_cap.in (KVM_CAP_NESTED_STATE): New constant, introduced +by Linux commit v4.19-rc1~87^2~62. +(KVM_CAP_ARM_INJECT_SERROR_ESR): New constant, introduced by Linux +commit v4.19-rc1~55^2~12^2~14, merged with its final value +in v4.19-rc1~55^2~12. +(KVM_CAP_MSR_PLATFORM_INFO): New constant, introduced by Linux commit +v4.19-rc5~8^2~2. +(KVM_CAP_PPC_NESTED_HV): New constant, introduced by Linux commit +v4.20-rc1~113^2~107^2~1. +(KVM_CAP_HYPERV_SEND_IPI): New constant, introduced by Linux commit +v4.20-rc1~113^2~72. +KVM_CAP_COALESCED_PIO): New constant, introduced by Linux commit +v4.20-rc1~113^2~31. +(KVM_CAP_HYPERV_ENLIGHTENED_VMCS): New constant, introduced by Linux +commit v4.20-rc1~113^2~25. +(KVM_CAP_EXCEPTION_PAYLOAD): New constant, introduced by Linux commit +v4.20-rc1~113^2~8. +(KVM_CAP_ARM_VM_IPA_SIZE): New constant, introduced by Linux commit +v4.20-rc1~113^2~5^2~8 and updated by Linux commit +v4.20-rc1~113^2~5. +* NEWS: Mention this. + +Co-Authored-by: Dmitry V. Levin +--- + xlat/kvm_cap.in | 9 +++++++++ + 2 files changed, 11 insertions(+), 2 deletions(-) + + * Bug fixes +diff --git a/xlat/kvm_cap.in b/xlat/kvm_cap.in +index a3819e7..6d229e0 100644 +--- a/xlat/kvm_cap.in ++++ b/xlat/kvm_cap.in +@@ -150,3 +150,12 @@ KVM_CAP_GET_MSR_FEATURES 153 + KVM_CAP_HYPERV_EVENTFD 154 + KVM_CAP_HYPERV_TLBFLUSH 155 + KVM_CAP_S390_HPAGE_1M 156 ++KVM_CAP_NESTED_STATE 157 ++KVM_CAP_ARM_INJECT_SERROR_ESR 158 ++KVM_CAP_MSR_PLATFORM_INFO 159 ++KVM_CAP_PPC_NESTED_HV 160 ++KVM_CAP_HYPERV_SEND_IPI 161 ++KVM_CAP_COALESCED_PIO 162 ++KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163 ++KVM_CAP_EXCEPTION_PAYLOAD 164 ++KVM_CAP_ARM_VM_IPA_SIZE 165 +-- +1.7.12.4 + diff --git a/xlat-update-neighbor_cache_entry_flags.patch b/xlat-update-neighbor_cache_entry_flags.patch new file mode 100644 index 0000000..2bac470 --- /dev/null +++ b/xlat-update-neighbor_cache_entry_flags.patch @@ -0,0 +1,40 @@ +From e3d913d5fb9ffbd7a229c4c2d7b392f419e97dc8 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Thu, 1 Nov 2018 17:29:29 +0100 +Subject: [PATCH 180/293] xlat: update neighbor_cache_entry_flags + +* xlat/neighbor_cache_entry_flags.in (NTF_OFFLOADED): New constant, +introduced by Linux commit v4.13-rc1~157^2~252^2~13. +(NTF_STICKY): New constant, introduced by Linux commit +v4.20-rc1~14^2~392. +(NTF_USE, NTF_SELF, NTF_MASTER, NTF_PROXY, NTF_EXT_LEARNED, NTF_ROUTER): +Add fallback definitions. +* NEWS: Mention this. + +Co-Authored-by: Dmitry V. Levin +--- + xlat/neighbor_cache_entry_flags.in | 14 ++++++++------ + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/xlat/neighbor_cache_entry_flags.in b/xlat/neighbor_cache_entry_flags.in +index 6a210f5..0f0a83e 100644 +--- a/xlat/neighbor_cache_entry_flags.in ++++ b/xlat/neighbor_cache_entry_flags.in +@@ -1,6 +1,8 @@ +-NTF_USE +-NTF_SELF +-NTF_MASTER +-NTF_PROXY +-NTF_EXT_LEARNED +-NTF_ROUTER ++NTF_USE 0x01 ++NTF_SELF 0x02 ++NTF_MASTER 0x04 ++NTF_PROXY 0x08 ++NTF_EXT_LEARNED 0x10 ++NTF_OFFLOADED 0x20 ++NTF_STICKY 0x40 ++NTF_ROUTER 0x80 +-- +1.7.12.4 + diff --git a/xlat-update-nt_descriptor_types.in.patch b/xlat-update-nt_descriptor_types.in.patch new file mode 100644 index 0000000..d71b216 --- /dev/null +++ b/xlat-update-nt_descriptor_types.in.patch @@ -0,0 +1,29 @@ +From cde23ff80c6ffbb89bdeafa74c6926680ddbce54 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 11:41:16 +0200 +Subject: [PATCH 027/293] xlat: update nt_descriptor_types.in + +* xlat/nt_descriptor_types.in (NT_VMCOREDD): New named constant, +introduced by Linux commit v4.18-rc1~114^2~252^2~2. +(NT_MIPS_DSP): New named constant, introduced by Linux commit +v4.19-rc1~42^2~63. +(NT_MIPS_FP_MODE): New named constant, introduced by Linux commit +v4.19-rc1~42^2~62. +--- + xlat/nt_descriptor_types.in | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/xlat/nt_descriptor_types.in b/xlat/nt_descriptor_types.in +index d90b870..34decc0 100644 +--- a/xlat/nt_descriptor_types.in ++++ b/xlat/nt_descriptor_types.in +@@ -61,3 +61,6 @@ NT_METAG_CBUF 0x500 + NT_METAG_RPIPE 0x501 + NT_METAG_TLS 0x502 + NT_ARC_V2 0x600 ++NT_VMCOREDD 0x700 ++NT_MIPS_DSP 0x800 ++NT_MIPS_FP_MODE 0x801 +-- +1.7.12.4 + diff --git a/xlat-update-resources.patch b/xlat-update-resources.patch new file mode 100644 index 0000000..b6060aa --- /dev/null +++ b/xlat-update-resources.patch @@ -0,0 +1,75 @@ +From 4499e109ecfbace80362aab185095bdfb1038ecf Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Fri, 31 Aug 2018 05:22:29 +0200 +Subject: [PATCH 072/293] xlat: update resources + +* xlat/resources.in: Declare as #value indexed, provide fallback values. +(RLIMIT_VMEM): Remove. +--- + xlat/resources.in | 56 ++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 39 insertions(+), 17 deletions(-) + +diff --git a/xlat/resources.in b/xlat/resources.in +index 8c45b7f..f12cb85 100644 +--- a/xlat/resources.in ++++ b/xlat/resources.in +@@ -1,17 +1,39 @@ +-RLIMIT_AS +-RLIMIT_CORE +-RLIMIT_CPU +-RLIMIT_DATA +-RLIMIT_FSIZE +-RLIMIT_LOCKS +-RLIMIT_MEMLOCK +-RLIMIT_MSGQUEUE +-RLIMIT_NICE +-RLIMIT_NOFILE +-RLIMIT_NPROC +-RLIMIT_RSS +-RLIMIT_RTPRIO +-RLIMIT_RTTIME +-RLIMIT_SIGPENDING +-RLIMIT_STACK +-RLIMIT_VMEM ++#value_indexed ++RLIMIT_CPU 0 ++RLIMIT_FSIZE 1 ++RLIMIT_DATA 2 ++RLIMIT_STACK 3 ++RLIMIT_CORE 4 ++ ++#if defined(__alpha__) ++RLIMIT_RSS 5 ++RLIMIT_NOFILE 6 ++RLIMIT_AS 7 ++RLIMIT_NPROC 8 ++RLIMIT_MEMLOCK 9 ++#elif defined(__mips__) ++RLIMIT_NOFILE 5 ++RLIMIT_AS 6 ++RLIMIT_RSS 7 ++RLIMIT_NPROC 8 ++RLIMIT_MEMLOCK 9 ++#elif defined(__sparc__) ++RLIMIT_RSS 5 ++RLIMIT_NOFILE 6 ++RLIMIT_NPROC 7 ++RLIMIT_MEMLOCK 8 ++RLIMIT_AS 9 ++#else ++RLIMIT_RSS 5 ++RLIMIT_NPROC 6 ++RLIMIT_NOFILE 7 ++RLIMIT_MEMLOCK 8 ++RLIMIT_AS 9 ++#endif ++ ++RLIMIT_LOCKS 10 ++RLIMIT_SIGPENDING 11 ++RLIMIT_MSGQUEUE 12 ++RLIMIT_NICE 13 ++RLIMIT_RTPRIO 14 ++RLIMIT_RTTIME 15 +-- +1.7.12.4 + diff --git a/xlat-update-siginfo_codes.patch b/xlat-update-siginfo_codes.patch new file mode 100644 index 0000000..68aec24 --- /dev/null +++ b/xlat-update-siginfo_codes.patch @@ -0,0 +1,28 @@ +From 7e15b04b20e9149e7f732c2b56c61d3c386d7972 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Mon, 15 Oct 2018 17:47:01 +0200 +Subject: [PATCH 171/293] xlat: update siginfo_codes + +* xlat/siginfo_codes.in (SI_LWP): Remove, as it is not present on Linux. +(SI_NOINFO): Define only on SPARC, provide fallback value. +--- + xlat/siginfo_codes.in | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/xlat/siginfo_codes.in b/xlat/siginfo_codes.in +index 968c660..b3e0888 100644 +--- a/xlat/siginfo_codes.in ++++ b/xlat/siginfo_codes.in +@@ -16,5 +16,7 @@ SI_SIGIO -5 + SI_TKILL -6 + SI_DETHREAD -7 + SI_ASYNCNL -60 +-SI_NOINFO +-SI_LWP ++ ++#ifdef __sparc__ ++SI_NOINFO 32767 ++#endif +-- +1.7.12.4 + diff --git a/xlat-update-v4l2_control_ids.in.patch b/xlat-update-v4l2_control_ids.in.patch new file mode 100644 index 0000000..f54db8e --- /dev/null +++ b/xlat-update-v4l2_control_ids.in.patch @@ -0,0 +1,31 @@ +From 9624d9f09d92a6f6ec3c144ef12d476f82426205 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 10:58:11 +0200 +Subject: [PATCH 023/293] xlat: update v4l2_control_ids.in + +* xlat/v4l2_control_ids.in (V4L2_CID_MPEG_VIDEO_VP8_PROFILE): Renamed +from V4L2_CID_MPEG_VIDEO_VPX_PROFILE (the latter is now a synonym), +by Linux commit v4.19-rc1~137^2~270. +(V4L2_CID_MPEG_VIDEO_VP9_PROFILE): New constant, introduced by Linux +commit v4.19-rc1~137^2~269. +--- + xlat/v4l2_control_ids.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xlat/v4l2_control_ids.in b/xlat/v4l2_control_ids.in +index 0885944..1cdda75 100644 +--- a/xlat/v4l2_control_ids.in ++++ b/xlat/v4l2_control_ids.in +@@ -155,7 +155,8 @@ V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE+507) + V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE+508) + V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE+509) + V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510) +-V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE+511) ++V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_MPEG_BASE+511) ++V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_MPEG_BASE+512) + /* CIDs for HEVC encoding. */ + V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600) + V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601) +-- +1.7.12.4 + diff --git a/xlat-update-v4l2_pix_fmts.in.patch b/xlat-update-v4l2_pix_fmts.in.patch new file mode 100644 index 0000000..99091b3 --- /dev/null +++ b/xlat-update-v4l2_pix_fmts.in.patch @@ -0,0 +1,50 @@ +From fe8861f6b42c8fe4e4a08d38da6668253fe745f7 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Sun, 19 Aug 2018 14:52:58 +0200 +Subject: [PATCH 030/293] xlat: update v4l2_pix_fmts.in + +* xlat/v4l2_pix_fmts.in (V4L2_PIX_FMT_FWHT): New constant, introduced by +Linux commit v4.19-rc1~137^2~221. +(V4L2_PIX_FMT_SBGGR14P, V4L2_PIX_FMT_SGBRG14P, V4L2_PIX_FMT_SGRBG14P, +V4L2_PIX_FMT_SRGGB14P): New constants, introduced by Linux commit +v4.19-rc1~137^2~97. +(V4L2_PIX_FMT_Y10P): New constant, introduced by Linux commit +v4.19-rc1~137^2~95. +--- + xlat/v4l2_pix_fmts.in | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/xlat/v4l2_pix_fmts.in b/xlat/v4l2_pix_fmts.in +index c595d57..445ca7a 100644 +--- a/xlat/v4l2_pix_fmts.in ++++ b/xlat/v4l2_pix_fmts.in +@@ -114,6 +114,10 @@ V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') + V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') + V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') + V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ ++V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E') ++V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E') ++V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E') ++V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E') + V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ + V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ + V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ +@@ -131,6 +135,7 @@ V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L c + V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ + V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ + V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ ++V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale, MIPI RAW10 packed */ + V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12 YVU411 planar */ + V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ + V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ +@@ -138,6 +143,7 @@ V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ + V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ + V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ + V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ ++V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */ + V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ + V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ + V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ +-- +1.7.12.4 + diff --git a/xlat-workaround-V4L2_CID_USER_IMX_BASE-Linux-kernel-.patch b/xlat-workaround-V4L2_CID_USER_IMX_BASE-Linux-kernel-.patch new file mode 100644 index 0000000..e50fed1 --- /dev/null +++ b/xlat-workaround-V4L2_CID_USER_IMX_BASE-Linux-kernel-.patch @@ -0,0 +1,56 @@ +From b89a69dec27cf638df0e17db80ed937c3e1abf77 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Sat, 18 Aug 2018 07:22:47 +0000 +Subject: [PATCH 002/293] xlat: workaround V4L2_CID_USER_IMX_BASE Linux kernel + ABI breakage + +Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48 +has changed the value of V4L2_CID_USER_IMX_BASE constant introduced +by commit v4.13-rc1~141^2~121 because the old value was already used +by V4L2_CID_USER_MAX217X_BASE. + +This is of course an ABI breakage that affects Linux kernels starting +with 4.13 and up to 4.18, as well as their LTS derivatives. + +Since the imx driver didn't provide any public control ID definitions, +it looks like the best way to handle this situation is to pretend that +the old value of V4L2_CID_USER_IMX_BASE didn't exist. + +* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_IMX_BASE): Redefine. + +Co-Authored-by: Eugene Syromyatnikov +--- + xlat/v4l2_control_id_bases.in | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/xlat/v4l2_control_id_bases.in b/xlat/v4l2_control_id_bases.in +index a0359be..f3fd925 100644 +--- a/xlat/v4l2_control_id_bases.in ++++ b/xlat/v4l2_control_id_bases.in +@@ -2,7 +2,22 @@ V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900) + V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE + 0x1000) + V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE + 0x1010) + V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE + 0x1050) +-V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x1090) ++#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE ++/* ++ * Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48 ++ * has changed the value of V4L2_CID_USER_IMX_BASE constant introduced ++ * by commit v4.13-rc1~141^2~121 because the old value was already used ++ * by V4L2_CID_USER_MAX217X_BASE. ++ * This is of course an ABI breakage that affects Linux kernels starting ++ * with 4.13 and up to 4.18, as well as their LTS derivatives. ++ * Since the imx driver didn't provide any public control ID definitions, ++ * it looks like the best way to handle this situation is to pretend that ++ * the old value of V4L2_CID_USER_IMX_BASE didn't exist. ++ */ ++# undef V4L2_CID_USER_IMX_BASE ++#endif ++V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE + 0x10b0) + V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) + V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) + V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100) +-- +1.7.12.4 + diff --git a/xlat_idx-do-not-issue-warnings-for-holes-in-indices.patch b/xlat_idx-do-not-issue-warnings-for-holes-in-indices.patch new file mode 100644 index 0000000..f42902b --- /dev/null +++ b/xlat_idx-do-not-issue-warnings-for-holes-in-indices.patch @@ -0,0 +1,30 @@ +From b967e34d70895b799d16f5d45a9a5228d7eb73a3 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Mon, 24 Dec 2018 10:19:24 +0000 +Subject: [PATCH 161/294] xlat_idx: do not issue warnings for holes in indices + +Some xlat indices like evdev_abs have holes, avoid issuing warnings +about them. + +* xlat.c (xlat_idx): Do not issue warnings for holes in the index. +--- + xlat.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/xlat.c b/xlat.c +index 16bfb94..62245f9 100644 +--- a/xlat.c ++++ b/xlat.c +@@ -249,6 +249,9 @@ xlat_idx(const struct xlat *xlat, size_t nmemb, uint64_t val) + return NULL; + + if (val != pos[val].val) { ++ if (pos[val].val == 0) ++ return NULL; /* a hole in the index */ ++ + error_func_msg("Unexpected xlat value %" PRIu64 + " at index %" PRIu64, + pos[val].val, val); +-- +1.8.3.1 +