about summary refs log tree commit diff
path: root/sysdeps/i386/i486/bits
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-03-30 13:01:46 +0000
committerUlrich Drepper <drepper@redhat.com>1998-03-30 13:01:46 +0000
commit9afc8a596405de12ff3c66e13460b300d95eb74c (patch)
treee4b5c1148d00e84c76443b12bdb867e2e7dbd18f /sysdeps/i386/i486/bits
parent7503605ecc29a2203d856ef71f4b84f27fa1093c (diff)
downloadglibc-9afc8a596405de12ff3c66e13460b300d95eb74c.tar.gz
glibc-9afc8a596405de12ff3c66e13460b300d95eb74c.tar.xz
glibc-9afc8a596405de12ff3c66e13460b300d95eb74c.zip
Update.
1998-03-30 12:53  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct
	scanning for \0.
	(__strncat_g): Add i686 specific code.

1998-03-30  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/install.texi (Reporting Bugs): Ask to include section
	names in reports.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit
	guard against direct inclusion.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	Rework support for libc_nonshared.a:
	* Makeconfig (object-suffixes-for-libc): New variable.
	* Rules: Remove handling of static-only and shared-only routines.
	* Makerules: Handle them here instead.  Use
	object-suffixes-for-libc instead of object-suffixes when dealing
	with libc objects.
	(object-suffixes-for-rules): Remove variable.
	(elide-routines.oS): Elide all routines except static-only
	routines.
	($(objpfx)stamp.oS): Special rule for when static-only-routines is
	empty.
	(installed-libcs): Remove special case for .oS.
	(rmobjs): Likewise.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile (do-collate-test, do-xfrm-test, do-tst-fmon,
	do-tst-rpmatch): New targets.
	(test): Use them.
	(install-locales): Ignore comment lines.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/Makefile ($(objpfx)ld.so): Depend on version script.
	($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig.
	($(objpfx)rtldtbl.h): Likewise.
	(CPPFLAGS-dl-load.c): Fix reference to object directory.

1998-03-30 09:36  Ulrich Drepper  <drepper@cygnus.com>

	* manual/string.texi (Finding Tokens in a String): Extend strsep
	description and correct example.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/socket.texi: Remove misguided explicit line breaks and
	fix the formatting problem instead by reformulating the
	paragraphs.
	* manual/filesys.texi: Likewise.
	* manual/conf.texi: Likewise.  Don't typeset table with index
	fonts, that looks worse than a minimally overfull line.

1998-03-28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* nscd/Makefile (nscd-modules): Move definition outside of
	conditional.

	* pwd/Makefile: Use have-thread-library to test for thread
	library.

1998-03-30  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip.

	* iconvdata/uhc.c (gconv): Remove unused variable idx.

1998-03-30  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c.
Diffstat (limited to 'sysdeps/i386/i486/bits')
-rw-r--r--sysdeps/i386/i486/bits/string.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/sysdeps/i386/i486/bits/string.h b/sysdeps/i386/i486/bits/string.h
index 60148b7da5..2cbac1029c 100644
--- a/sysdeps/i386/i486/bits/string.h
+++ b/sysdeps/i386/i486/bits/string.h
@@ -742,10 +742,11 @@ __strcat_c (char *__dest, __const char __src[], size_t __srclen)
   register unsigned long int __d0;
   register char *__tmp;
   __asm__ __volatile__
-    ("repne; cmpsb"
-     : "=S" (__tmp), "=&c" (__d0)
+    ("repne; scasb"
+     : "=D" (__tmp), "=&c" (__d0)
      : "0" (__dest), "1" (0xffffffff), "a" (0)
      : "cc");
+  --__tmp;
 #else
   register char *__tmp = __dest - 1;
   __asm__ __volatile__
@@ -798,8 +799,27 @@ __strcat_g (char *__dest, __const char *__src)
 __STRING_INLINE char *
 __strncat_g (char *__dest, __const char __src[], size_t __n)
 {
-  register char *__tmp = __dest - 1;
+  register char *__tmp = __dest;
   register char __dummy;
+#ifdef __i686__
+  __asm__ __volatile__
+    ("repne; scasb\n"
+     "decl %1\n\t"
+     "1:\n\t"
+     "decl	%3\n\t"
+     "js	2f\n\t"
+     "movb	(%2),%b0\n\t"
+     "movsb\n\t"
+     "testb	%b0,%b0\n\t"
+     "jne	1b\n\t"
+     "decl	%1\n"
+     "2:\n\t"
+     "movb	$0,(%1)"
+     : "=&a" (__dummy), "=&D" (__tmp), "=&S" (__src), "=&r" (__n)
+     : "0" (0), "1" (__tmp), "2" (__src), "3" (__n)
+     : "memory", "cc");
+#else
+  --__tmp;
   __asm__ __volatile__
     ("1:\n\t"
      "cmpb	$0,1(%1)\n\t"
@@ -816,10 +836,11 @@ __strncat_g (char *__dest, __const char __src[], size_t __n)
      "jne	2b\n\t"
      "decl	%1\n"
      "3:\n\t"
-     "movb	$0,(%1)\n\t"
+     "movb	$0,(%1)"
      : "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n)
      : "1" (__tmp), "2" (__src), "3" (__n)
      : "memory", "cc");
+#endif
   return __dest;
 }