Implement userfaultfd syscall decoding
* userfaultfd.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* xlat/uffd_flags.in: New file.
* linux/dummy.h (userfaultfd): Remove.
* tests/userfaultfd.c: New file.
* tests/userfaultfd.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add userfaultfd.
(TESTS): Add userfaultfd.test.
* tests/.gitignore: Add userfaultfd.
diff --git a/tests/userfaultfd.c b/tests/userfaultfd.c
new file mode 100644
index 0000000..2dcf31c
--- /dev/null
+++ b/tests/userfaultfd.c
@@ -0,0 +1,26 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+
+int
+main(void)
+{
+#if defined __NR_userfaultfd && defined O_CLOEXEC
+ if (syscall(__NR_userfaultfd, 1 | O_NONBLOCK | O_CLOEXEC) != -1)
+ return 77;
+ printf("userfaultfd(O_NONBLOCK|O_CLOEXEC|0x1) = -1 %s\n",
+ errno == ENOSYS ?
+ "ENOSYS (Function not implemented)" :
+ "EINVAL (Invalid argument)");
+ puts("+++ exited with 0 +++");
+ return 0;
+#else
+ return 77;
+#endif
+}