[PATCH] test: only test for double alignment on 64 bit. (#36986)

Peter Hutterer peter.hutterer at who-t.net
Wed May 18 21:54:28 PDT 2011


X.Org Bug 36986 <http://bugs.freedesktop.org/show_bug.cgi?id=36986>

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---

On Wed, May 18, 2011 at 12:45:05AM -0700, Keith Packard wrote:
> On Wed, 18 May 2011 13:30:44 +1000, Peter Hutterer
> <peter.hutterer at who-t.net> wrote:
> 
> > +    const int sz_dbl = sizeof(double);
> >      /* force alignment with double */
> > -    union align_u { ValuatorClassRec valc; double d; } *align;
> > +    union align_u {
> > +        ValuatorClassRec valc;
> > +        double d[(sizeof(ValuatorClassRec) + sz_dbl - 1)/sz_dbl];
> > +    } *align;
> 
> This doesn't make sense to me. The requirement for the union is that you
> be able to allocate an array of them and store into each element:
> 
>         union align_u   foo[12];
> 
>         foo[0].d = 0.0;
>         foo[1].d = 1.0;
> 
> This should require double alignment for the entire union, even though
> 'd' is far smaller than 'valc'.
> 
> Of course, on a 32-bit x86 machine, doubles can be stored without
> penalty on 4-byte boundaries, so the union is only aligned to 52 bytes.
> 
> Can you explain why this alignment isn't acceptable in this context?

because I naïvely thought that we needed double alignment on 32 bit too and
the test was written that way. Oh well, how about this patch instead then.
it just disables the alignment check on 32 bit.

Cheers,
  Peter

 test/input.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/test/input.c b/test/input.c
index ac37d67..3c310da 100644
--- a/test/input.c
+++ b/test/input.c
@@ -1223,8 +1223,11 @@ static void dix_valuator_alloc(void)
 
         assert(v);
         assert(v->numAxes == num_axes);
+#ifdef _LP64
+        /* 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
         num_axes ++;
     }
 
-- 
1.7.4.4



More information about the xorg-devel mailing list