Commit fad7b049 authored by unknown's avatar unknown

Changes from teg@redhat.com - subtle bugs that only show up under

certain circumstances.


include/global.h:
  Fix for gcc with strict aliasing.
  Thanks to teg@redhat.com for the patch.
strings/strstr-sparc.s:
  %g6 -> %o2
  %g6 and %g7 are reserved for OS use by Sun's ABI.
  Thanks to teg@redhat.com for the patch.
parent a5274950
...@@ -682,10 +682,14 @@ typedef char bool; /* Ordinary boolean values 0 1 */ ...@@ -682,10 +682,14 @@ typedef char bool; /* Ordinary boolean values 0 1 */
*((T)+4)=(uchar) (((A) >> 32)); } *((T)+4)=(uchar) (((A) >> 32)); }
#define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A) #define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A)
#define doubleget(V,M) { *((long *) &V) = *((long*) M); \ typedef union {
*(((long *) &V)+1) = *(((long*) M)+1); } double v;
#define doublestore(T,V) { *((long *) T) = *((long*) &V); \ long m[2];
*(((long *) T)+1) = *(((long*) &V)+1); } } doubleget_union;
#define doubleget(V,M) { ((doubleget_union *)&V)->m[0] = *((long*) M); \
((doubleget_union *)&V)->m[1] = *(((long*) M)+1); }
#define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \
*(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); } #define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
#define float8get(V,M) doubleget((V),(M)) #define float8get(V,M) doubleget((V),(M))
#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float)) #define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
......
...@@ -31,12 +31,12 @@ strstr: ...@@ -31,12 +31,12 @@ strstr:
! if (*str++ == *search) { ! if (*str++ == *search) {
! i=(char*) str; j=(char*) search+1; ! i=(char*) str; j=(char*) search+1;
ldsb [%o1],%g6 ! g6= First char of search ldsb [%o1],%o2 ! g6= First char of search
.top: .top:
ldsb [%o0],%g3 ! g3= First char of rest of str ldsb [%o0],%g3 ! g3= First char of rest of str
cmp %g3,0 cmp %g3,0
be .abort ! Found end null ; be .abort ! Found end null ;
cmp %g3,%g6 cmp %g3,%o2
bne .top bne .top
add %o0,1,%o0 add %o0,1,%o0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment