This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, compiling on s390* with -D__USE_STRING_INLINES and a newer gcc generates broken code because of missing "memory" clobbers on some of the string inline assemblies. Patch & ChangeLog attached. blue skies, Martin. 2005-01-28 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/bits/string.h (strlen, strncpy, strcat, strncat, strncat, memchr, strcmp): Add missing memory clobber. diff -urN libc/sysdeps/s390/bits/string.h libc-s390/sysdeps/s390/bits/string.h --- libc/sysdeps/s390/bits/string.h 2005-01-28 15:57:54.000000000 +0100 +++ libc-s390/sysdeps/s390/bits/string.h 2005-01-28 15:54:51.000000000 +0100 @@ -51,7 +51,7 @@ "0: srst %0,%1\n" " jo 0b\n" : "+&a" (__ptr), "+&a" (__tmp) : - : "cc", "0" ); + : "cc", "memory", "0" ); return (size_t) (__ptr - __str); } #endif @@ -105,7 +105,7 @@ #endif "4:" : "+&a" (__ptr), "+&a" (__n) : "a" (__diff) - : "cc", "0" ); + : "cc", "memory", "0" ); } return __ret; } @@ -134,7 +134,7 @@ "0: mvst %0,%1\n" " jo 0b" : "+&a" (__ptr), "+&a" (__src) : - : "cc", "0" ); + : "cc", "memory", "0" ); return __ret; } #endif @@ -157,7 +157,7 @@ "0: srst %0,%1\n" " jo 0b\n" : "+&a" (__ptr), "+&a" (__tmp) : - : "cc", "0" ); + : "cc", "memory", "0" ); __diff = (size_t) (__ptr - __src); __tmp = (char *) __src; @@ -175,7 +175,7 @@ " stc 0,1(%2,%0)\n" "2:" : "+&a" (__tmp), "+&a" (__n) : "a" (__diff) - : "cc", "0" ); + : "cc", "memory", "0" ); } return __ret; @@ -200,7 +200,7 @@ " la %0,0\n" "1:" : "+&a" (__ptr), "+&a" (__tmp) : "d" (__c) - : "cc", "0" ); + : "cc", "memory", "0" ); return __ptr; } #endif @@ -222,7 +222,7 @@ " ipm %0\n" " srl %0,28" : "=d" (__ret), "+&a" (__p1), "+&a" (__p2) : - : "cc", "0" ); + : "cc", "memory", "0" ); __ret = (__ret == 0) ? 0 : (__ret == 1) ? -1 : 1; return __ret; }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |