summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/tst-mman-consts.py
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-01-02 10:18:10 +0100
committerFlorian Weimer <fweimer@redhat.com>2020-01-02 10:18:10 +0100
commit4cf0d223052dabb9caed29e1e91e1d61933e14fb (patch)
tree67679008431b6bc21bb6f7a5efd5f2071f9a76f1 /sysdeps/unix/sysv/linux/tst-mman-consts.py
parent5f72f9800b250410cad3abfeeb09469ef12b2438 (diff)
downloadglibc-4cf0d223052dabb9caed29e1e91e1d61933e14fb.tar.gz
glibc-4cf0d223052dabb9caed29e1e91e1d61933e14fb.tar.xz
glibc-4cf0d223052dabb9caed29e1e91e1d61933e14fb.zip
Linux: Add tables with system call numbers
The new tables are currently only used for consistency checks
with the installed kernel headers and the architecture-independent
system call names table.  They are based on Linux 5.4.

The goal is to use these architecture-specific tables to ensure
that system call wrappers are available irrespective of the version
of the installed kernel headers.

The tables are formatted in the form of C header files so that they
can be used directly in an #include directive, without external
preprocessing.  (External preprocessing of a plain table file
would introduce cross-subdirectory dependency issues.)  However,
the intent is that they can still be treated as tables and can be
processed by simple tools.

The irregular system call names on 32-bit arm add a complication.
The <fixup-asm-unistd.h> header is introduced to work around that,
and the system calls are listed under regular names in the
<arch-syscall.h> file.

A make target, update-syscalls-list, is added to patch the glibc
sources with data from the current kernel headers.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'sysdeps/unix/sysv/linux/tst-mman-consts.py')
-rw-r--r--sysdeps/unix/sysv/linux/tst-mman-consts.py12
1 files changed, 2 insertions, 10 deletions
diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py
index 422d42a21e..bffad4ec09 100644
--- a/sysdeps/unix/sysv/linux/tst-mman-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py
@@ -21,15 +21,7 @@ import argparse
 import sys
 
 import glibcextract
-
-
-def linux_kernel_version(cc):
-    """Return the (major, minor) version of the Linux kernel headers."""
-    sym_data = ['#include <linux/version.h>', 'START',
-                ('LINUX_VERSION_CODE', 'LINUX_VERSION_CODE')]
-    val = glibcextract.compute_c_consts(sym_data, cc)['LINUX_VERSION_CODE']
-    val = int(val)
-    return ((val & 0xff0000) >> 16, (val & 0xff00) >> 8)
+import glibcsyscalls
 
 
 def main():
@@ -40,7 +32,7 @@ def main():
     parser.add_argument('--cc', metavar='CC',
                         help='C compiler (including options) to use')
     args = parser.parse_args()
-    linux_version_headers = linux_kernel_version(args.cc)
+    linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
     linux_version_glibc = (5, 4)
     sys.exit(glibcextract.compare_macro_consts(
         '#define _GNU_SOURCE 1\n'