Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit

2013-02-12 Thread Michał Masłowski
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

2013-02-12 Thread 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.

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

2013-02-12 Thread walter harms


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

2013-02-12 Thread Geert Uytterhoeven
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

2013-02-12 Thread Mark Kettenis
 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

2013-02-12 Thread Thorsten Glaser
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