Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
Geert Uytterhoeven ge...@linux-m68k.org writes: The test for double-aligned members in dix_valuator_alloc() currently depends on if !defined(__i386__) !defined(__sh__). This covers m68k, where it fails. According to the comment, the test should be limited to 64-bit platforms only. Hence check if sizeof(long) == 8 instead. MIPS N32 needs doubles to be 8 byte aligned, while it has 32 bit longs and pointers (the CPU registers are 64 bit). libxi has a similar conditional for structure padding which prevented sigbuses of all GTK3-using programs there. Should the comment be changed, or the negative test expanded? I don't know how it could be determined without checking specific architecture names. Signed-off-by: Geert Uytterhoeven ge...@linux-m68k.org --- Untested for now test/input.c | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/input.c b/test/input.c index be988a4..ed29bdc 100644 --- a/test/input.c +++ b/test/input.c @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void) assert(v); assert(v-numAxes == num_axes); -#if !defined(__i386__) !defined(__sh__) -/* must be double-aligned on 64 bit */ -assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); -assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); -#endif +if (sizeof(long) == 8) { +/* must be double-aligned on 64 bit */ +assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); +assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); +} num_axes++; } pgpz_S6XPE8cX.pgp Description: PGP signature ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
From: Geert Uytterhoeven ge...@linux-m68k.org Date: Tue, 12 Feb 2013 11:17:22 +0100 The test for double-aligned members in dix_valuator_alloc() currently depends on if !defined(__i386__) !defined(__sh__). This covers m68k, where it fails. According to the comment, the test should be limited to 64-bit platforms only. Hence check if sizeof(long) == 8 instead. Unfortunately the comment isn't accurate. There are quite a few 32-bit architectures that demand 64-bit alignment of doubles. At least arm, hppa, powerpc and sparc fall into that category. Those that only required 32-bit alignment seemed to be a minority. Even if you include m68k in that category, that's still the case. My advice would be to add __m68k__ to the list and adjust the comment to say something like: Most architectures, even 32-bit ones, require 64-bit alignment. Signed-off-by: Geert Uytterhoeven ge...@linux-m68k.org --- Untested for now test/input.c | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/input.c b/test/input.c index be988a4..ed29bdc 100644 --- a/test/input.c +++ b/test/input.c @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void) assert(v); assert(v-numAxes == num_axes); -#if !defined(__i386__) !defined(__sh__) -/* must be double-aligned on 64 bit */ -assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); -assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); -#endif +if (sizeof(long) == 8) { +/* must be double-aligned on 64 bit */ +assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); +assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); +} num_axes++; } -- 1.7.0.4 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
Am 12.02.2013 13:40, schrieb Mark Kettenis: From: Geert Uytterhoeven ge...@linux-m68k.org Date: Tue, 12 Feb 2013 11:17:22 +0100 The test for double-aligned members in dix_valuator_alloc() currently depends on if !defined(__i386__) !defined(__sh__). This covers m68k, where it fails. According to the comment, the test should be limited to 64-bit platforms only. Hence check if sizeof(long) == 8 instead. Unfortunately the comment isn't accurate. There are quite a few 32-bit architectures that demand 64-bit alignment of doubles. At least arm, hppa, powerpc and sparc fall into that category. Those that only required 32-bit alignment seemed to be a minority. Even if you include m68k in that category, that's still the case. hi all, is it possible the add something like: _FORCE_64-BIT_ALIGMENT_OF_DOUBLES_ instead of !defined(__i386__) ?? A nice additional effect would be the explanation what to archive. people are very bad of thinking inverse so it is always a good idea to avoid things like !defined. just my 2 cents, wh My advice would be to add __m68k__ to the list and adjust the comment to say something like: Most architectures, even 32-bit ones, require 64-bit alignment. Signed-off-by: Geert Uytterhoeven ge...@linux-m68k.org --- Untested for now test/input.c | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/input.c b/test/input.c index be988a4..ed29bdc 100644 --- a/test/input.c +++ b/test/input.c @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void) assert(v); assert(v-numAxes == num_axes); -#if !defined(__i386__) !defined(__sh__) -/* must be double-aligned on 64 bit */ -assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); -assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); -#endif +if (sizeof(long) == 8) { +/* must be double-aligned on 64 bit */ +assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); +assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); +} num_axes++; } -- 1.7.0.4 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
On Tue, Feb 12, 2013 at 1:40 PM, Mark Kettenis mark.kette...@xs4all.nl wrote: From: Geert Uytterhoeven ge...@linux-m68k.org Date: Tue, 12 Feb 2013 11:17:22 +0100 The test for double-aligned members in dix_valuator_alloc() currently depends on if !defined(__i386__) !defined(__sh__). This covers m68k, where it fails. According to the comment, the test should be limited to 64-bit platforms only. Hence check if sizeof(long) == 8 instead. Unfortunately the comment isn't accurate. There are quite a few 32-bit architectures that demand 64-bit alignment of doubles. At least arm, hppa, powerpc and sparc fall into that category. Those that only required 32-bit alignment seemed to be a minority. Even if you include m68k in that category, that's still the case. Sure there are others. But what is this test really trying to achieve? Check if the compiler applied the correct alignment rules for the architecture it compiled for? That should always be the case, besides compiler bugs. My advice would be to add __m68k__ to the list and adjust the comment to say something like: Most architectures, even 32-bit ones, require 64-bit alignment. Signed-off-by: Geert Uytterhoeven ge...@linux-m68k.org --- Untested for now test/input.c | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/input.c b/test/input.c index be988a4..ed29bdc 100644 --- a/test/input.c +++ b/test/input.c @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void) assert(v); assert(v-numAxes == num_axes); -#if !defined(__i386__) !defined(__sh__) -/* must be double-aligned on 64 bit */ -assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); -assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); -#endif +if (sizeof(long) == 8) { +/* must be double-aligned on 64 bit */ +assert(((void *) v-axisVal - (void *) v) % sizeof(double) == 0); +assert(((void *) v-axes - (void *) v) % sizeof(double) == 0); +} num_axes++; } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say programmer or something like that. -- Linus Torvalds ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
Sender: geert.uytterhoe...@gmail.com Date: Tue, 12 Feb 2013 14:03:50 +0100 On Tue, Feb 12, 2013 at 1:40 PM, Mark Kettenis mark.kette...@xs4all.nl wrote: From: Geert Uytterhoeven ge...@linux-m68k.org Date: Tue, 12 Feb 2013 11:17:22 +0100 The test for double-aligned members in dix_valuator_alloc() currently depends on if !defined(__i386__) !defined(__sh__). This covers m68k, where it fails. According to the comment, the test should be limited to 64-bit platforms only. Hence check if sizeof(long) == 8 instead. Unfortunately the comment isn't accurate. There are quite a few 32-bit architectures that demand 64-bit alignment of doubles. At least arm, hppa, powerpc and sparc fall into that category. Those that only required 32-bit alignment seemed to be a minority. Even if you include m68k in that category, that's still the case. Sure there are others. But what is this test really trying to achieve? An independent test of the somewhat twisted logic in the valuator implementation that tries to implement a variable-sized data structure where the variable-sized bit is properly aligned to be accessed as a double. ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit
Michał Masłowski dixit: MIPS N32 needs doubles to be 8 byte aligned, while it has 32 bit longs Hrm. Well, GCC has __alignof__ and, I think, so has C11… bye, //mirabilos -- mirabilos│ untested Natureshadow │ tut natürlich Natureshadow │ was auch sonst ... mirabilos│ fijn ☺ ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel