[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#4078) test001 fails on sparcv9
At 12:11 PM 10/12/2005, h.b.furuseth@usit.uio.no wrote:
>Howard Chu writes:
>> Could be. If it's an alignment issue, this diff ought to fix it:
>>(...)
>> + Operation *op;
>> + char opbuf[OPERATION_BUFFER_SIZE];
>>(...)
>...followed by op = (Operation *)opbuf;
>
>This is still buggy, the compiler is free to align opbuf any
>way it wants. To ensure correct alignment, use something like:
I note that LBER_ALIGNED_BUFFER should be used here. It works.
>slap.h:
> typedef union {
> Operation *op;
> char buf[OPERATION_BUFFER_SIZE];
> } Operation_buffer;
>*.c:
> Operation_buffer opbuf;
> Operation *op = (Operation *) opbuf;
>
>'grep OPERATION_BUFFER_SIZE *.c */*.c' finds 15 such places to fix.
>
>(Actually I'm not entirely sure even that code is strictly correct under
>C99's anal aliasing rules, but if not I think it is an issue for a C99
>defect report rather than an OpenLDAP ITS.)
>
>--
>Hallvard