1999-01-13  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/bits/string.h: Correct several bugs in various
	functions which never worked.
	Patch by Maciej W. Rozycki <macro@ds2.pg.gda.pl>.
This commit is contained in:
Ulrich Drepper 1999-01-13 00:14:51 +00:00
parent d731df03bd
commit 7c97addd6f
2 changed files with 19 additions and 11 deletions

View File

@ -1,3 +1,9 @@
1999-01-13 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/bits/string.h: Correct several bugs in various
functions which never worked.
Patch by Maciej W. Rozycki <macro@ds2.pg.gda.pl>.
1999-01-12 Ulrich Drepper <drepper@cygnus.com>
* manual/charset.texi: Add many corrections.

View File

@ -1,5 +1,5 @@
/* Optimized, inlined string functions. i386 version.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -381,17 +381,19 @@ strncat (char *__dest, __const char *__src, size_t __n)
("cld\n\t"
"repne; scasb\n\t"
"decl %1\n\t"
"movl %5,%3\n"
"movl %4,%2\n"
"1:\n\t"
"decl %3\n\t"
"decl %2\n\t"
"js 2f\n\t"
"lodsb\n\t"
"stosb\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n"
"jne 1b\n\t"
"jmp 3f\n"
"2:\n\t"
"xorl %2,%2\n\t"
"stosb"
"xorl %3,%3\n\t"
"stosb\n"
"3:"
: "=&S" (__d0), "=&D" (__d1), "=&c" (__d2), "=&a" (__d3)
: "g" (__n), "0" (__src), "1" (__dest), "2" (0xffffffff), "3" (0)
: "memory", "cc");
@ -543,7 +545,7 @@ strcspn (__const char *__s, __const char *__reject)
"2:\n\t"
"popl %%ebx"
: "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
: "r" (__reject), "1" (0), "2" (0xffffffff), "3" (__s),
: "d" (__reject), "0" (__s), "1" (0), "2" (0xffffffff)
: "cc");
return (__res - 1) - __s;
}
@ -632,7 +634,7 @@ strspn (__const char *__s, __const char *__accept)
"je 1b\n"
"2:"
: "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
: "g" (__accept), "0" (__s), "a" (0), "c" (0xffffffff)
: "g" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
: "cc");
return (__res - 1) - __s;
}
@ -682,7 +684,7 @@ strpbrk (__const char *__s, __const char *__accept)
register char *__res;
__asm__ __volatile__
("cld\n\t"
"movl %4,%%edi\n\t"
"movl %5,%%edi\n\t"
"repne; scasb\n\t"
"notl %%ecx\n\t"
"decl %%ecx\n\t"
@ -691,7 +693,7 @@ strpbrk (__const char *__s, __const char *__accept)
"lodsb\n\t"
"testb %%al,%%al\n\t"
"je 2f\n\t"
"movl %4,%%edi\n\t"
"movl %5,%%edi\n\t"
"movl %%edx,%%ecx\n\t"
"repne; scasb\n\t"
"jne 1b\n\t"
@ -714,7 +716,7 @@ strpbrk (__const char *__s, __const char *__accept)
__STRING_INLINE char *
strstr (__const char *__haystack, __const char *__needle)
{
register unsigned long int __d0, __d1, __d2, __d3;
register unsigned long int __d0, __d1, __d2;
register char *__res;
__asm__ __volatile__
("pushl %%ebx\n\t"