about summary refs log tree commit diff
path: root/io
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 /io
parent8ed005daf0ab03e142500324a34087ce179ae78e (diff)
downloadglibc-589260cef8c2090d67d3deaa0a9ffa61c96de951.tar.gz
glibc-589260cef8c2090d67d3deaa0a9ffa61c96de951.tar.xz
glibc-589260cef8c2090d67d3deaa0a9ffa61c96de951.zip
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>
Diffstat (limited to 'io')
-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
5 files changed, 6 insertions, 96 deletions
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