diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-01-13 00:14:51 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-01-13 00:14:51 +0000 |
commit | 7c97addd6fbb44818b6e4d219cdbd189554a10f3 (patch) | |
tree | 7c4e248afc81fe744441d8c314024d446ca0c6e6 /sysdeps | |
parent | d731df03bd12beb674e07696f8dbc57a60421879 (diff) | |
download | glibc-7c97addd6fbb44818b6e4d219cdbd189554a10f3.zip glibc-7c97addd6fbb44818b6e4d219cdbd189554a10f3.tar.gz glibc-7c97addd6fbb44818b6e4d219cdbd189554a10f3.tar.bz2 |
Update.
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>.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/i386/bits/string.h | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/sysdeps/i386/bits/string.h b/sysdeps/i386/bits/string.h index 016f414..4bd65af 100644 --- a/sysdeps/i386/bits/string.h +++ b/sysdeps/i386/bits/string.h @@ -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" |