]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
string: Ensure *_chk routines have their hidden builtin definition available
authorFrédéric Bérat <fberat@redhat.com>
Thu, 20 Apr 2023 12:07:52 +0000 (14:07 +0200)
committerFrédéric Bérat <fberat@redhat.com>
Wed, 5 Jul 2023 14:59:48 +0000 (16:59 +0200)
If libc_hidden_builtin_{def,proto} isn't properly set for *_chk routines,
there are unwanted PLT entries in libc.so.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
28 files changed:
debug/memcpy_chk.c
debug/memmove_chk.c
debug/mempcpy_chk.c
debug/memset_chk.c
debug/stpcpy_chk.c
include/string.h
sysdeps/i386/i586/memcpy.S
sysdeps/i386/i586/memset.S
sysdeps/i386/i686/memcpy.S
sysdeps/i386/i686/memmove.S
sysdeps/i386/i686/mempcpy.S
sysdeps/i386/i686/memset.S
sysdeps/i386/i686/multiarch/memcpy_chk.c
sysdeps/i386/i686/multiarch/memmove_chk.c
sysdeps/i386/i686/multiarch/mempcpy_chk.c
sysdeps/i386/i686/multiarch/memset_chk.c
sysdeps/i386/memcpy_chk.S
sysdeps/i386/memmove_chk.S
sysdeps/i386/mempcpy_chk.S
sysdeps/i386/memset_chk.S
sysdeps/x86_64/memcpy_chk.S
sysdeps/x86_64/memmove_chk.S
sysdeps/x86_64/mempcpy_chk.S
sysdeps/x86_64/memset_chk.S
sysdeps/x86_64/multiarch/memcpy_chk.c
sysdeps/x86_64/multiarch/memmove_chk.c
sysdeps/x86_64/multiarch/mempcpy_chk.c
sysdeps/x86_64/multiarch/memset_chk.c

index c6dd94c83f0b5e453d5a30a0dd6238e2d03b24df..1e4a82c063a64e8b959b7e1091a5c6f3ee493cc1 100644 (file)
@@ -28,3 +28,4 @@ __memcpy_chk (void *dstpp, const void *srcpp, size_t len, size_t dstlen)
 
   return memcpy (dstpp, srcpp, len);
 }
+libc_hidden_builtin_def (__memcpy_chk)
index 8922a1ba26425af09b5fdf9d146a878372601bc8..b714aa474c7fb23bedaaf66acaa3338e86cdb7c9 100644 (file)
@@ -32,3 +32,4 @@ MEMMOVE_CHK (void *dest, const void *src, size_t len, size_t destlen)
 
   return memmove (dest, src, len);
 }
+libc_hidden_builtin_def (MEMMOVE_CHK)
index 17a46a3b4df9f36278e835987e2f27a0dc43bdcb..b47b14ee9af8c4035e29b068a709d9440993e2a4 100644 (file)
@@ -29,3 +29,4 @@ __mempcpy_chk (void *dstpp, const void *srcpp, size_t len, size_t dstlen)
 
   return __mempcpy (dstpp, srcpp, len);
 }
+libc_hidden_builtin_def (__mempcpy_chk)
index 4fc0b55d824e11aa0ada1af8c9a1f63e16b4bf8c..93901f5f34336c90078717d5464d3460eab882d3 100644 (file)
@@ -26,3 +26,4 @@ __memset_chk (void *dstpp, int c, size_t len, size_t dstlen)
 
   return memset (dstpp, c, len);
 }
+libc_hidden_builtin_def (__memset_chk)
index 230b52bd01b15866aede667ab5725463ee515255..518dd78dcafde10449c67aa7558470d8189d9d79 100644 (file)
@@ -32,3 +32,4 @@ __stpcpy_chk (char *dest, const char *src, size_t destlen)
 
   return memcpy (dest, src, len + 1) + len;
 }
+libc_hidden_builtin_def (__stpcpy_chk)
index 0c78ad2539c23098808504ac18d81b9c2bf9a5e2..659530d1aa67a3d3ec9ef9d9f5f1840090005323 100644 (file)
@@ -208,6 +208,13 @@ extern char *__strcat_chk (char *__restrict __dest,
 extern char *__strncat_chk (char *__restrict __dest,
                            const char *__restrict __src,
                            size_t __len, size_t __destlen) __THROW;
+
+libc_hidden_builtin_proto (__memcpy_chk)
+libc_hidden_builtin_proto (__memmove_chk)
+libc_hidden_builtin_proto (__mempcpy_chk)
+libc_hidden_builtin_proto (__memset_chk)
+libc_hidden_builtin_proto (__stpcpy_chk)
+
 #endif
 
 #endif
index 58061d5adf1962dfb131ea3facaffdecd1170b50..e3405e577cc6f0853d05c15288daddb1a6f0a9e1 100644 (file)
@@ -32,6 +32,7 @@ ENTRY (__memcpy_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END (__memcpy_chk)
+libc_hidden_builtin_def (__memcpy_chk)
 #endif
 ENTRY (memcpy)
 
index 413e8ec6a9d77613c3001fe730bcaecf1a2b7a2f..f1f0e1a99b90c6a7fe9395b4e55ae3851724e8ed 100644 (file)
@@ -33,6 +33,7 @@ ENTRY (__memset_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END (__memset_chk)
+libc_hidden_builtin_def (__memset_chk)
 #endif
 ENTRY (memset)
 
index 604d3088f62dc918ccd923731f5adbcb691e1298..9b48ec0ea15585d828abe97e5bf39219e3e2e8c8 100644 (file)
@@ -33,6 +33,7 @@ ENTRY_CHK (__memcpy_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END_CHK (__memcpy_chk)
+libc_hidden_builtin_def (__memcpy_chk)
 #endif
 ENTRY (memcpy)
 
index cff06c27e5e2496cfbc2c6bf129c8d0a59ddd1af..06fe2a76681a36da1a96f7dd3860c91ab22b9ad1 100644 (file)
@@ -35,6 +35,7 @@ ENTRY_CHK (__memmove_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END_CHK (__memmove_chk)
+libc_hidden_builtin_def (__memmove_chk)
 #endif
 
 ENTRY (memmove)
index af3f2cca0876e8a7301d2d9208facdb6f3106b8c..26f8501e7dcde6cad5435e32b27a861270376fc9 100644 (file)
@@ -33,6 +33,7 @@ ENTRY_CHK (__mempcpy_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END_CHK (__mempcpy_chk)
+libc_hidden_builtin_def (__mempcpy_chk)
 #endif
 ENTRY (__mempcpy)
 
index d4891880d7418504a0a2993f451519edb8b8ad6f..0b5e671d8375ddb9e4208c60e7f9b52e6eea3b65 100644 (file)
@@ -33,6 +33,7 @@ ENTRY_CHK (__memset_chk)
        cmpl    %eax, 16(%esp)
        jb      HIDDEN_JUMPTARGET (__chk_fail)
 END_CHK (__memset_chk)
+libc_hidden_builtin_def (__memset_chk)
 #endif
 ENTRY (memset)
 
index 5ac5cb1d7ac9471d05f98e850c0fbaf8a7dc3e82..ec945dc91f3e38255b3592af5ff6154d39bdeae1 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memcpy_chk, __memcpy_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__memcpy_chk, __GI___memcpy_chk, __redirect_memcpy_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memcpy_chk);
+# endif
 #endif
index 28161d3c2745613eb60a6c5a69c63310a42ca48d..55c7601d5d5baa070fba64f2e5d6c20013b79134 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memmove_chk, __memmove_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__memmove_chk, __GI___memmove_chk, __redirect_memmove_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memmove_chk);
+# endif
 #endif
index 36c81ae61a109909c5d5be838f1b51f291d9faaa..83569cf9d9c6471310e2528c06170d4ba4c6c9a3 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_mempcpy_chk, __mempcpy_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__mempcpy_chk, __GI___mempcpy_chk, __redirect_mempcpy_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__mempcpy_chk);
+# endif
 #endif
index cf3e8113277c3af54a938fdcab154dda35642482..1a7503858d9394cfa7649ef063689433bd38faad 100644 (file)
@@ -28,5 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memset_chk, __memset_chk,
                       IFUNC_SELECTOR ());
-
+# ifdef SHARED
+__hidden_ver1 (__memset_chk, __GI___memset_chk, __redirect_memset_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memset_chk);
+# endif
 #endif
index b5244cc69bd39ce7c0e5f1755afef84dc54edfa9..7b12c12aba56fd5cf6c1f82b29896210148cec28 100644 (file)
@@ -31,4 +31,5 @@ ENTRY (__memcpy_chk)
        jb      __chk_fail
        jmp     memcpy
 END (__memcpy_chk)
+libc_hidden_builtin_def (__memcpy_chk)
 #endif
index 517d8cb15a5ce24515b008e44db1137fe7352ac3..604aea83057af6587bf39556210597e149d75431 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__memmove_chk)
        jb      __chk_fail
        jmp     memmove
 END (__memmove_chk)
+libc_hidden_builtin_def (MEMMOVE_CHK)
 #endif
index 1e9bf71bfb4fa0b45008fa8a8116f65a430a62ed..276eab1e8a3b0566a06f417020a445f59f9086b9 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__mempcpy_chk)
        jb      __chk_fail
        jmp     __mempcpy
 END (__mempcpy_chk)
+libc_hidden_builtin_def (__mempcpy_chk)
 #endif
index 0e6060a0a6560c51a9f85c087f19229c8a8569c5..a2e9208e1c34ae97310ac0739b065e7e4687b9f6 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__memset_chk)
        jb      __chk_fail
        jmp     memset
 END (__memset_chk)
+libc_hidden_builtin_def (__memset_chk)
 #endif
index 25cbeb37ee56cc38b5a3573f9b7a7c486cbaea14..43843a7abbf393294dfa9a1fe415171dc3eaed78 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__memcpy_chk)
        jb      __chk_fail
        jmp     memcpy
 END (__memcpy_chk)
+libc_hidden_builtin_def (__memcpy_chk)
 #endif
index 165d42cfa8a1069f00558b64c5d45127bcf66bba..37e2c30ba832a02ae843571c98d100bf013e525b 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__memmove_chk)
        jb      __chk_fail
        jmp     memmove
 END (__memmove_chk)
+libc_hidden_builtin_def (MEMMOVE_CHK)
 #endif
index b60ee4ff082aafb00339ed7f590ddc6872204495..facdac50d805c8f13c30edcd24dcd26e6d5c5f2f 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__mempcpy_chk)
        jb      __chk_fail
        jmp     __mempcpy
 END (__mempcpy_chk)
+libc_hidden_builtin_def (__mempcpy_chk)
 #endif
index ed53b8927f698efa600c945fc4028dbe177fe643..c927884b1a0b66d4ece780a606ddff9356326bd8 100644 (file)
@@ -30,4 +30,5 @@ ENTRY (__memset_chk)
        jb      __chk_fail
        jmp     memset
 END (__memset_chk)
+libc_hidden_builtin_def (__memset_chk)
 #endif
index 5ac5cb1d7ac9471d05f98e850c0fbaf8a7dc3e82..ec945dc91f3e38255b3592af5ff6154d39bdeae1 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memcpy_chk, __memcpy_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__memcpy_chk, __GI___memcpy_chk, __redirect_memcpy_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memcpy_chk);
+# endif
 #endif
index 28161d3c2745613eb60a6c5a69c63310a42ca48d..55c7601d5d5baa070fba64f2e5d6c20013b79134 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memmove_chk, __memmove_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__memmove_chk, __GI___memmove_chk, __redirect_memmove_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memmove_chk);
+# endif
 #endif
index 36c81ae61a109909c5d5be838f1b51f291d9faaa..83569cf9d9c6471310e2528c06170d4ba4c6c9a3 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_mempcpy_chk, __mempcpy_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__mempcpy_chk, __GI___mempcpy_chk, __redirect_mempcpy_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__mempcpy_chk);
+# endif
 #endif
index d81147a70c54a9786ed22a0feb4e2d59a8474120..1a7503858d9394cfa7649ef063689433bd38faad 100644 (file)
@@ -28,4 +28,8 @@
 
 libc_ifunc_redirected (__redirect_memset_chk, __memset_chk,
                       IFUNC_SELECTOR ());
+# ifdef SHARED
+__hidden_ver1 (__memset_chk, __GI___memset_chk, __redirect_memset_chk)
+  __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__memset_chk);
+# endif
 #endif