about summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2016-11-17 09:26:27 -0500
committerZack Weinberg <zackw@panix.com>2017-06-20 08:21:24 -0400
commit09a596cc2cf4e0f9f8e9f3bba4b1a97efcb13bcb (patch)
tree683187ce3396bef30d751b9dc139e9f90affffaa /include
parentb8216e82783774e068106486a8f67357f63acc67 (diff)
downloadglibc-09a596cc2cf4e0f9f8e9f3bba4b1a97efcb13bcb.tar.gz
glibc-09a596cc2cf4e0f9f8e9f3bba4b1a97efcb13bcb.tar.xz
glibc-09a596cc2cf4e0f9f8e9f3bba4b1a97efcb13bcb.zip
Remove bits/string.h.
These machine-dependent inline string functions have never been on by
default, and even if they were a good idea at the time they were
introduced, they haven't really been touched in ten to fifteen years
and probably aren't a good idea on current-gen processors.  Current
thinking is that this class of optimization is best left to the
compiler.

	* bits/string.h, string/bits/string.h
	* sysdeps/aarch64/bits/string.h
	* sysdeps/m68k/m680x0/m68020/bits/string.h
	* sysdeps/s390/bits/string.h, sysdeps/sparc/bits/string.h
	* sysdeps/x86/bits/string.h: Delete file.

	* string/string.h: Don't include bits/string.h.
	* string/bits/string3.h: Rename to bits/string_fortified.h.
	No need to undef various symbols that the removed headers
	might have defined as macros.
	* string/Makefile (headers): Remove bits/string.h, change
	bits/string3.h to bits/string_fortified.h.
	* string/string-inlines.c: Update commentary.  Remove definitions
	of various macros that nothing looks at anymore.  Don't directly
	include bits/string.h. Set _STRING_INLINE_unaligned here, based on
	compiler-predefined macros.
	* string/strncat.c: If STRNCAT is not defined, or STRNCAT_PRIMARY
	_is_ defined, provide internal hidden alias __strncat.
	* include/string.h: Declare internal hidden alias __strncat.
	Only forward __stpcpy to __builtin_stpcpy if __NO_STRING_INLINES is
	not defined.
	* include/bits/string3.h: Rename to bits/string_fortified.h,
	update to match above.

	* sysdeps/i386/string-inlines.c: Define compat symbols for
	everything formerly defined by sysdeps/x86/bits/string.h.
	Make existing definitions into compat symbols as well.
	Remove some no-longer-necessary messing around with macros.

	* sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
	* sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
	* sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
	* sysdeps/s390/multiarch/mempcpy.c
	No need to define _HAVE_STRING_ARCH_mempcpy.
	Do define __NO_STRING_INLINES and NO_MEMPCPY_STPCPY_REDIRECT.

	* sysdeps/i386/i686/multiarch/strncat-c.c
	* sysdeps/s390/multiarch/strncat-c.c
	* sysdeps/x86_64/multiarch/strncat-c.c
	Define STRNCAT_PRIMARY.  Don't change definition of libc_hidden_def.
Diffstat (limited to 'include')
-rw-r--r--include/bits/string3.h1
-rw-r--r--include/bits/string_fortified.h1
-rw-r--r--include/string.h13
3 files changed, 9 insertions, 6 deletions
diff --git a/include/bits/string3.h b/include/bits/string3.h
deleted file mode 100644
index 1ddd981a90..0000000000
--- a/include/bits/string3.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <string/bits/string3.h>
diff --git a/include/bits/string_fortified.h b/include/bits/string_fortified.h
new file mode 100644
index 0000000000..88bf073c9c
--- /dev/null
+++ b/include/bits/string_fortified.h
@@ -0,0 +1 @@
+#include <string/bits/string_fortified.h>
diff --git a/include/string.h b/include/string.h
index 2bf29445df..069efd0b87 100644
--- a/include/string.h
+++ b/include/string.h
@@ -76,12 +76,20 @@ extern __typeof (strncasecmp_l) __strncasecmp_l;
 #endif
 
 libc_hidden_proto (__mempcpy)
+#ifndef __NO_STRING_INLINES
+# define __mempcpy(dest, src, n) __builtin_mempcpy (dest, src, n)
+#endif
 libc_hidden_proto (__stpcpy)
+#ifndef __NO_STRING_INLINES
+# define __stpcpy(dest, src) __builtin_stpcpy (dest, src)
+#endif
 libc_hidden_proto (__stpncpy)
 libc_hidden_proto (__rawmemchr)
 libc_hidden_proto (__strcasecmp)
 libc_hidden_proto (__strcasecmp_l)
 libc_hidden_proto (__strncasecmp_l)
+extern __typeof (strncat) __strncat;
+libc_hidden_proto (__strncat)
 libc_hidden_proto (__strdup)
 libc_hidden_proto (__strndup)
 libc_hidden_proto (__strerror_r)
@@ -162,11 +170,6 @@ extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy");
 extern __typeof (stpcpy) stpcpy __asm__ ("__stpcpy");
 #endif
 
-/* Redirect internal calls to builtins.  */
-#ifndef __stpcpy
-# define __stpcpy(dest, src) __builtin_stpcpy (dest, src)
-#endif
-
 extern void *__memcpy_chk (void *__restrict __dest,
 			   const void *__restrict __src, size_t __len,
 			   size_t __destlen) __THROW;