summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-07-16 16:46:52 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-10-09 17:02:06 -0300
commit589260cef8c2090d67d3deaa0a9ffa61c96de951 (patch)
tree2d5d93b03e7a0e69527f06627b91f88315cb506d
parent8ed005daf0ab03e142500324a34087ce179ae78e (diff)
downloadglibc-589260cef8c2090d67d3deaa0a9ffa61c96de951.tar.gz
Remove mknod wrapper functions, move them to symbols
This patch removes the mknod and mknodat static wrapper and add the symbols on the libc with the expected names. Both the prototypes of the internal symbol linked by the static wrappers and the inline redirectors are also removed from the installed sys/stat.h header file. The wrapper implementation license LGPL exception is also removed since it is no longer statically linked to binaries. Internally the _STAT_VER* definitions are moved to the arch-specific xstatver.h file. Checked with a build for all affected ABIs. I also checked on x86_64, i686, powerpc, powerpc64le, sparcv9, sparc64, s390, and s390x. Reviewed-by: Lukasz Majewski <lukma@denx.de>
-rw-r--r--include/sys/stat.h14
-rw-r--r--io/Makefile5
-rw-r--r--io/Versions1
-rw-r--r--io/mknod.c32
-rw-r--r--io/mknodat.c32
-rw-r--r--io/sys/stat.h32
-rw-r--r--sysdeps/generic/xstatver.h1
-rw-r--r--sysdeps/mach/hurd/i386/libc.abilist2
-rw-r--r--sysdeps/posix/mkfifo.c3
-rw-r--r--sysdeps/posix/mkfifoat.c3
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/stat.h4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/xstatver.h5
-rw-r--r--sysdeps/unix/sysv/linux/arc/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/bits/stat.h7
-rw-r--r--sysdeps/unix/sysv/linux/csky/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/generic/bits/stat.h3
-rw-r--r--sysdeps/unix/sysv/linux/generic/xstatver.h5
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/stat.h3
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/ia64/xstatver.h5
-rw-r--r--sysdeps/unix/sysv/linux/m68k/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/xstatver.h6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/bits/stat.h5
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/xstatver.h6
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/stat.h5
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/xstatver.h6
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/stat.h5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/xstatver.h6
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/stat.h10
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/xstatver.h7
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/xstatver.h6
-rw-r--r--sysdeps/unix/sysv/linux/x86/bits/stat.h11
-rw-r--r--sysdeps/unix/sysv/linux/x86/xstatver.h4
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/xstatver.h6
58 files changed, 132 insertions, 172 deletions
diff --git a/include/sys/stat.h b/include/sys/stat.h
index 061204b1fc..1f832f6ce8 100644
--- a/include/sys/stat.h
+++ b/include/sys/stat.h
@@ -29,14 +29,18 @@ libc_hidden_proto (fchmodat)
extern __mode_t __umask (__mode_t __mask);
extern int __mkdir (const char *__path, __mode_t __mode);
libc_hidden_proto (__mkdir)
+
+extern int __mknodat (int fd, const char *path, mode_t mode, dev_t dev);
+libc_hidden_proto (__mknodat);
extern int __mknod (const char *__path,
__mode_t __mode, __dev_t __dev);
+libc_hidden_proto (__mknod);
+
+extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
+ __dev_t *__dev);
libc_hidden_proto (__xmknod)
-extern __inline__ int __mknod (const char *__path, __mode_t __mode,
- __dev_t __dev)
-{
- return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
-}
+extern int __xmknodat (int __ver, int __fd, const char *__path,
+ __mode_t __mode, __dev_t *__dev);
libc_hidden_proto (__xmknodat)
int __fxstat (int __ver, int __fildes, struct stat *__stat_buf);
diff --git a/io/Makefile b/io/Makefile
index 69b2468d64..6dd2c33fcf 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -57,11 +57,6 @@ routines := \
sendfile sendfile64 copy_file_range \
utimensat futimens file_change_detection
-# These routines will be omitted from the libc shared object.
-# Instead the static object files will be included in a special archive
-# linked against when the shared library will be used.
-static-only-routines = mknod mknodat
-
others := pwd
test-srcs := ftwtest
tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \
diff --git a/io/Versions b/io/Versions
index f6db0e84ad..49c4d2d40a 100644
--- a/io/Versions
+++ b/io/Versions
@@ -134,6 +134,7 @@ libc {
}
GLIBC_2.33 {
stat; stat64; fstat; fstat64; lstat; lstat64; fstatat; fstatat64;
+ mknod; mknodat;
}
GLIBC_PRIVATE {
__libc_fcntl64;
diff --git a/io/mknod.c b/io/mknod.c
index ac96829230..9eb4a2af7f 100644
--- a/io/mknod.c
+++ b/io/mknod.c
@@ -6,23 +6,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -32,24 +15,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-
#include <sys/types.h>
#include <sys/stat.h>
-/* This definition is only used if inlining fails for this function; see
- the last page of <sys/stat.h>. The real work is done by the `x'
- function which is passed a version number argument. We arrange in the
- makefile that when not inlined this function is always statically
- linked; that way a dynamically-linked executable always encodes the
- version number corresponding to the data structures it uses, so the `x'
- functions in the shared library can adapt without needing to recompile
- all callers. */
-
int
-attribute_hidden
__mknod (const char *path, mode_t mode, dev_t dev)
{
return __xmknod (_MKNOD_VER, path, mode, &dev);
}
-
-weak_hidden_alias (__mknod, mknod)
+libc_hidden_def (__mknod)
+weak_alias (__mknod, mknod)
diff --git a/io/mknodat.c b/io/mknodat.c
index 65c9f1aa9c..63a8068ad6 100644
--- a/io/mknodat.c
+++ b/io/mknodat.c
@@ -6,23 +6,6 @@
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -32,22 +15,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-
#include <sys/types.h>
#include <sys/stat.h>
-/* This definition is only used if inlining fails for this function; see
- the last page of <sys/stat.h>. The real work is done by the `x'
- function which is passed a version number argument. We arrange in the
- makefile that when not inlined this function is always statically
- linked; that way a dynamically-linked executable always encodes the
- version number corresponding to the data structures it uses, so the `x'
- functions in the shared library can adapt without needing to recompile
- all callers. */
-
int
-attribute_hidden
-mknodat (int fd, const char *path, mode_t mode, dev_t dev)
+__mknodat (int fd, const char *path, mode_t mode, dev_t dev)
{
return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
}
+libc_hidden_def (__mknodat)
+weak_alias (__mknodat, mknodat)
diff --git a/io/sys/stat.h b/io/sys/stat.h
index eb9cf5d5af..58c3770622 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -367,43 +367,11 @@ extern int utimensat (int __fd, const char *__path,
/* Set file access and modification times of the file associated with FD. */
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
#endif
-
-#ifndef _MKNOD_VER
-# define _MKNOD_VER 0
-#endif
-
-extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
- __dev_t *__dev) __THROW __nonnull ((2, 4));
-
-extern int __xmknodat (int __ver, int __fd, const char *__path,
- __mode_t __mode, __dev_t *__dev)
- __THROW __nonnull ((3, 5));
#ifdef __USE_GNU
# include <bits/statx.h>
#endif
-#ifdef __USE_EXTERN_INLINES
-# ifdef __USE_MISC
-__extern_inline int
-__NTH (mknod (const char *__path, __mode_t __mode, __dev_t __dev))
-{
- return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
-}
-# endif
-
-# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-# ifdef __USE_ATFILE
-__extern_inline int
-__NTH (mknodat (int __fd, const char *__path, __mode_t __mode,
- __dev_t __dev))
-{
- return __xmknodat (_MKNOD_VER, __fd, __path, __mode, &__dev);
-}
-# endif
-# endif
-#endif
-
__END_DECLS
diff --git a/sysdeps/generic/xstatver.h b/sysdeps/generic/xstatver.h
index d727c98a16..281013b2f1 100644
--- a/sysdeps/generic/xstatver.h
+++ b/sysdeps/generic/xstatver.h
@@ -1,3 +1,4 @@
/* Versions of the 'struct stat' data structure used in compatibility xstat
functions. */
#define _STAT_VER 0
+#define _MKNOD_VER 0
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index f37ce0e8ae..e2ff0e8b9e 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2198,6 +2198,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/posix/mkfifo.c b/sysdeps/posix/mkfifo.c
index 61f62e2e96..0b89f6c291 100644
--- a/sysdeps/posix/mkfifo.c
+++ b/sysdeps/posix/mkfifo.c
@@ -24,6 +24,5 @@
int
mkfifo (const char *path, mode_t mode)
{
- dev_t dev = 0;
- return __xmknod (_MKNOD_VER, path, mode | S_IFIFO, &dev);
+ return __mknod (path, mode | S_IFIFO, 0);
}
diff --git a/sysdeps/posix/mkfifoat.c b/sysdeps/posix/mkfifoat.c
index 5287fe8782..d1e0977ba1 100644
--- a/sysdeps/posix/mkfifoat.c
+++ b/sysdeps/posix/mkfifoat.c
@@ -23,6 +23,5 @@
int
mkfifoat (int fd, const char *file, mode_t mode)
{
- dev_t dev = 0;
- return __xmknodat (_MKNOD_VER, fd, file, mode | S_IFIFO, &dev);
+ return __mknodat (fd, file, mode | S_IFIFO, 0);
}
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 9666cd11c0..4cc1c6a591 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2167,5 +2167,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/stat.h b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
index 1fc27936b9..d20fb5a4b0 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
@@ -22,10 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 0
-
-
/* Nanosecond resolution timestamps are stored in a format equivalent to
'struct timespec'. This is the type used whenever possible but the
Unix namespace rules do not allow the identifier 'timespec' to appear
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index e2b33b4b31..26ad9845e4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2249,6 +2249,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/xstatver.h b/sysdeps/unix/sysv/linux/alpha/xstatver.h
index bbb9469617..1cb5d26bb1 100644
--- a/sysdeps/unix/sysv/linux/alpha/xstatver.h
+++ b/sysdeps/unix/sysv/linux/alpha/xstatver.h
@@ -7,3 +7,8 @@
#define _STAT_VER_GLIBC2_3_4 3
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 0
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 29351ead80..bb9dfd4daf 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1927,5 +1927,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index ee9786f0dc..9ab3924888 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -148,6 +148,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _Exit F
diff --git a/sysdeps/unix/sysv/linux/bits/stat.h b/sysdeps/unix/sysv/linux/bits/stat.h
index b542623208..0669451f69 100644
--- a/sysdeps/unix/sysv/linux/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/bits/stat.h
@@ -22,13 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `struct stat' data structure. */
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
-
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 290297631f..14a84dac8f 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2111,5 +2111,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/generic/bits/stat.h b/sysdeps/unix/sysv/linux/generic/bits/stat.h
index 35e14a47c6..1b586d72fa 100644
--- a/sysdeps/unix/sysv/linux/generic/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/generic/bits/stat.h
@@ -26,9 +26,6 @@
#include <bits/endian.h>
#include <bits/wordsize.h>
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 0
-
#if defined __USE_FILE_OFFSET64
# define __field64(type, type64, name) type64 name
#elif __WORDSIZE == 64 || defined __INO_T_MATCHES_INO64_T
diff --git a/sysdeps/unix/sysv/linux/generic/xstatver.h b/sysdeps/unix/sysv/linux/generic/xstatver.h
index 8675db494c..d8fd35beb6 100644
--- a/sysdeps/unix/sysv/linux/generic/xstatver.h
+++ b/sysdeps/unix/sysv/linux/generic/xstatver.h
@@ -3,3 +3,8 @@
#define _STAT_VER_KERNEL 0
#define _STAT_VER_LINUX 0
#define _STAT_VER _STAT_VER_KERNEL
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 0
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 5e37056229..5c8502f3d3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2070,6 +2070,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index de9cbc278c..4f0d3c1eb5 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2236,6 +2236,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/stat.h b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
index 8ec2e4c81f..6937f3227a 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
@@ -22,9 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 0
-
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b21a3192dc..e3b345b803 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2102,6 +2102,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/xstatver.h b/sysdeps/unix/sysv/linux/ia64/xstatver.h
index 4f02f697ad..f24ab4a9ee 100644
--- a/sysdeps/unix/sysv/linux/ia64/xstatver.h
+++ b/sysdeps/unix/sysv/linux/ia64/xstatver.h
@@ -3,3 +3,8 @@
#define _STAT_VER_KERNEL 0
#define _STAT_VER_LINUX 1
#define _STAT_VER _STAT_VER_LINUX
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 0
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/m68k/bits/stat.h b/sysdeps/unix/sysv/linux/m68k/bits/stat.h
index bf41776e6c..c6f761fcc0 100644
--- a/sysdeps/unix/sysv/linux/m68k/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/m68k/bits/stat.h
@@ -22,12 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
-
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index e0e01175dc..c4891479d3 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2182,6 +2182,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/xstatver.h b/sysdeps/unix/sysv/linux/m68k/xstatver.h
index 59dba71dd1..8e1801b603 100644
--- a/sysdeps/unix/sysv/linux/m68k/xstatver.h
+++ b/sysdeps/unix/sysv/linux/m68k/xstatver.h
@@ -5,3 +5,9 @@
#define _STAT_VER_SVR4 2
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index eb8b9ce933..143b0163b4 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2162,5 +2162,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
index 51316a8c1b..b3068e5c98 100644
--- a/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
@@ -23,11 +23,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
#ifndef __USE_FILE_OFFSET64
struct stat
{
diff --git a/sysdeps/unix/sysv/linux/microblaze/xstatver.h b/sysdeps/unix/sysv/linux/microblaze/xstatver.h
index bddaa0d5ec..790cc834d2 100644
--- a/sysdeps/unix/sysv/linux/microblaze/xstatver.h
+++ b/sysdeps/unix/sysv/linux/microblaze/xstatver.h
@@ -5,3 +5,9 @@
#define _STAT_VER_SVR4 2
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/mips/bits/stat.h b/sysdeps/unix/sysv/linux/mips/bits/stat.h
index cfeb4ce6a4..f229c58013 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/stat.h
@@ -24,11 +24,6 @@
#include <sgidefs.h>
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
#if _MIPS_SIM == _ABIO32
/* Structure describing file characteristics. */
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 23f77798d0..b2295f1937 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2153,6 +2153,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index abfbe85561..aa9c6a4dca 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2159,6 +2159,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 3d9ad1907f..5939588ad5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2153,6 +2153,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/xstatver.h b/sysdeps/unix/sysv/linux/mips/xstatver.h
index 59dba71dd1..8e1801b603 100644
--- a/sysdeps/unix/sysv/linux/mips/xstatver.h
+++ b/sysdeps/unix/sysv/linux/mips/xstatver.h
@@ -5,3 +5,9 @@
#define _STAT_VER_SVR4 2
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index c1d7438361..92556c4237 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2200,5 +2200,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
index 40ea9a96d4..80c9dc23ac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
@@ -24,11 +24,6 @@
#include <bits/wordsize.h>
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
#if __WORDSIZE == 32
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 18f4f3e91d..26c93dff05 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2209,6 +2209,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 965ef6abc1..c2ca00709e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2072,6 +2072,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 9dbbd43567..0ea50dc851 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2362,5 +2362,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/xstatver.h b/sysdeps/unix/sysv/linux/powerpc/xstatver.h
index 1656e2f7e4..aa61dfd678 100644
--- a/sysdeps/unix/sysv/linux/powerpc/xstatver.h
+++ b/sysdeps/unix/sysv/linux/powerpc/xstatver.h
@@ -9,3 +9,9 @@
#else
# define _STAT_VER _STAT_VER_KERNEL
#endif
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 9e5e1c084c..22169f2c74 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -1213,6 +1213,8 @@ GLIBC_2.33 mkdirat F
GLIBC_2.33 mkdtemp F
GLIBC_2.33 mkfifo F
GLIBC_2.33 mkfifoat F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 mkostemp F
GLIBC_2.33 mkostemp64 F
GLIBC_2.33 mkostemps F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 495d1f5f40..1626c5351f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2129,5 +2129,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/s390/bits/stat.h b/sysdeps/unix/sysv/linux/s390/bits/stat.h
index d12055529a..75fa871a1d 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/stat.h
@@ -25,16 +25,6 @@
#include <bits/wordsize.h>
#if __WORDSIZE == 64
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 0
-#else
-/* Versions of the `xmknod' interface. */
-# define _MKNOD_VER_LINUX 1
-# define _MKNOD_VER_SVR4 2
-# define _MKNOD_VER _MKNOD_VER_LINUX
-#endif
-
-#if __WORDSIZE == 64
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a87fb8676a..a66426eb4d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2207,6 +2207,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 25dfdcb21f..ab351873ae 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2108,6 +2108,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/xstatver.h b/sysdeps/unix/sysv/linux/s390/xstatver.h
index 5ad0db2797..9923199e40 100644
--- a/sysdeps/unix/sysv/linux/s390/xstatver.h
+++ b/sysdeps/unix/sysv/linux/s390/xstatver.h
@@ -6,11 +6,14 @@
#if __WORDSIZE == 64
# define _STAT_VER_KERNEL 0
# define _STAT_VER_LINUX 1
-# define _STAT_VER _STAT_VER_LINUX
+# define _MKNOD_VER_LINUX 0
#else
# define _STAT_VER_LINUX_OLD 1
# define _STAT_VER_KERNEL 1
# define _STAT_VER_SVR4 2
# define _STAT_VER_LINUX 3
-# define _STAT_VER _STAT_VER_LINUX
+# define _MKNOD_VER_LINUX 1
+# define _MKNOD_VER_SVR4 2
#endif
+#define _STAT_VER _STAT_VER_LINUX
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index ac918a324e..d36f228192 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2074,6 +2074,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/stat.h b/sysdeps/unix/sysv/linux/sparc/bits/stat.h
index 7af17b5c40..d10ebb1a9a 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/stat.h
@@ -22,12 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 1
-#define _MKNOD_VER_SVR4 2
-#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
-
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index db1e113727..59b4313280 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2198,6 +2198,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 0d3901e38a..266dcdfa08 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2125,6 +2125,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/xstatver.h b/sysdeps/unix/sysv/linux/sparc/xstatver.h
index ae92b530e7..693b41c3ac 100644
--- a/sysdeps/unix/sysv/linux/sparc/xstatver.h
+++ b/sysdeps/unix/sysv/linux/sparc/xstatver.h
@@ -5,3 +5,9 @@
#define _STAT_VER_SVR4 2
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/x86/bits/stat.h b/sysdeps/unix/sysv/linux/x86/bits/stat.h
index f132569e9d..2c0a3f120b 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/stat.h
@@ -22,17 +22,6 @@
#ifndef _BITS_STAT_H
#define _BITS_STAT_H 1
-/* Versions of the `struct stat' data structure. */
-#ifndef __x86_64__
-/* i386 versions of the `xmknod' interface. */
-# define _MKNOD_VER_LINUX 1
-# define _MKNOD_VER_SVR4 2
-# define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-#else
-/* x86-64 versions of the `xmknod' interface. */
-# define _MKNOD_VER_LINUX 0
-#endif
-
struct stat
{
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/x86/xstatver.h b/sysdeps/unix/sysv/linux/x86/xstatver.h
index 4447212894..678d5bc022 100644
--- a/sysdeps/unix/sysv/linux/x86/xstatver.h
+++ b/sysdeps/unix/sysv/linux/x86/xstatver.h
@@ -5,8 +5,12 @@
# define _STAT_VER_KERNEL 1
# define _STAT_VER_SVR4 2
# define _STAT_VER_LINUX 3
+# define _MKNOD_VER_LINUX 1
+# define _MKNOD_VER_SVR4 2
#else
# define _STAT_VER_KERNEL 0
# define _STAT_VER_LINUX 1
+# define _MKNOD_VER_LINUX 0
#endif
#define _STAT_VER _STAT_VER_LINUX
+#define _MKNOD_VER _MKNOD_VER_LINUX
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index a982db4601..4fff61818b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2083,6 +2083,8 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
GLIBC_2.4 __confstr_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 8662f51c1a..102ed47a9c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2180,5 +2180,7 @@ GLIBC_2.33 fstatat64 F
GLIBC_2.33 lstat F
GLIBC_2.33 lstat64 F
GLIBC_2.33 mallinfo2 F
+GLIBC_2.33 mknod F
+GLIBC_2.33 mknodat F
GLIBC_2.33 stat F
GLIBC_2.33 stat64 F
diff --git a/sysdeps/unix/sysv/linux/xstatver.h b/sysdeps/unix/sysv/linux/xstatver.h
index 59dba71dd1..8e1801b603 100644
--- a/sysdeps/unix/sysv/linux/xstatver.h
+++ b/sysdeps/unix/sysv/linux/xstatver.h
@@ -5,3 +5,9 @@
#define _STAT_VER_SVR4 2
#define _STAT_VER_LINUX 3
#define _STAT_VER _STAT_VER_LINUX
+
+/* Versions of the 'xmknod' interface used in compatibility xmknod
+ functions. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX