1 --- glibc-2.3.6/sysdeps/i386/bits/string.h.old 2008-07-20 09:45:26.000000000 +1000
2 +++ glibc-2.3.6/sysdeps/i386/bits/string.h 2008-07-20 10:08:32.000000000 +1000
4 register unsigned long int __d0;
11 + "movb (%0),%%al\n\t"
20 - : "=a" (__res), "=&S" (__d0)
21 - : "0" (__c), "1" (__s),
24 + : "=r" (__res), "=&a" (__d0)
25 + : "0" (__s), "1" (__c),
26 "m" ( *(struct { char __x[0xfffffff]; } *)__s)
34 strcspn (__const char *__s, __const char *__reject)
36 register unsigned long int __d0, __d1, __d2;
37 - register char *__res;
38 + register __const char *__res;
47 - "movl %%ecx,%%ebx\n"
48 + "leal -1(%%ecx),%%ebx\n"
56 - : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
57 - : "d" (__reject), "0" (__s), "1" (0), "2" (0xffffffff),
58 - "m" ( *(struct { char __x[0xfffffff]; } *)__s)
60 + : "=S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
61 + : "r" (__reject), "0" (__s), "1" (0), "2" (0xffffffff)
63 return (__res - 1) - __s;
67 __STRING_INLINE char *
68 strpbrk (__const char *__s, __const char *__accept)
70 - unsigned long int __d0, __d1, __d2;
71 + register unsigned long int __d0, __d1, __d2;
75 + "movl %%edx,%%edi\n\t"
81 - "movl %%ecx,%%ebx\n"
82 + "leal -1(%%ecx),%%ebx\n"
88 + "movl %%edx,%%edi\n\t"
89 "movl %%ebx,%%ecx\n\t"
96 - : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
97 - : "r" (__accept), "0" (__s), "1" (0), "2" (0xffffffff),
98 - "m" ( *(struct { char __x[0xfffffff]; } *)__s)
100 + : "=S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
101 + : "d" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
106 @@ -857,28 +852,27 @@
107 register unsigned long int __d0, __d1, __d2;
108 register char *__res;
112 - "movl %4,%%edi\n\t"
117 "decl %%ecx\n\t" /* NOTE! This also sets Z if searchstring='' */
120 - "movl %4,%%edi\n\t"
121 + "movl %%edx,%%edi\n\t"
122 "movl %%esi,%%eax\n\t"
123 "movl %%ebx,%%ecx\n\t"
125 "je 2f\n\t" /* also works for empty string, see above */
126 - "xchgl %%eax,%%esi\n\t"
128 - "cmpb $0,-1(%%eax)\n\t"
129 + "cmpb $0,-1(%%esi)\n\t"
130 + "leal 1(%%eax),%%esi\n\t"
132 - "xorl %%eax,%%eax\n\t"
133 + "xorl %%eax,%%eax\n"
136 : "=&a" (__res), "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
137 - : "r" (__needle), "0" (0), "1" (0xffffffff), "2" (__haystack)
138 + : "0" (0), "1" (0xffffffff), "2" (__haystack), "3" (__needle),