make powerpc64 vrregset_t logical layout match expected API
authorRich Felker <dalias@aerifal.cx>
Wed, 22 May 2019 22:28:32 +0000 (18:28 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 23 May 2019 03:27:48 +0000 (23:27 -0400)
between v2 and v3 of the powerpc64 port patch, the change was made
from a 32x4 array of 32-bit unsigned ints for vrregs[] to a 32-element
array of __int128. this mismatches the API applications working with
mcontext_t expect from glibc, and seems to have been motivated by a
misinterpretation of a comment on how aarch64 did things as a
suggestion to do the same on powerpc64.

arch/powerpc64/bits/signal.h

index 94c7a32737e461ff4e750e26131ee02ff7cd8ee9..2cc0604c5e4b279a4d89aae2b094010a053bfe0a 100644 (file)
@@ -16,7 +16,10 @@ typedef struct {
 } fpregset_t;
 
 typedef struct {
-       unsigned __int128 vrregs[32];
+#ifdef __GNUC__
+       __attribute__((__aligned__(16)))
+#endif
+       unsigned vrregs[32][4];
        struct {
 #if __BIG_ENDIAN__
                unsigned _pad[3], vscr_word;