On 29 May 2006, Neil Brown suggested tentatively:
> On Sunday May 28, [EMAIL PROTECTED] wrote:
>> - mdadm-2.4-strict-aliasing.patch
>> fix for another srict-aliasing problem, you can typecast a reference to a
>> void pointer to anything, you cannot typecast a reference to a
>> struct.
> 
> Why can't I typecast a reference to a struct??? It seems very
> unfair...

ISO C forbids it. Pretty much the only time you're allowed to cast a pointer
to A to a pointer to B is if one or the other of them is a pointer to void
or char.

The compiler can (and does) assume that all other pointers-to-T are in
different `aliasing sets', i.e. that a modification through a
pointer-to-T1 cannot affect variables of any other type (so they can
be cached in registers, moved around without reference to each other,
and so on).

It's *very* advantageous, and with the interprocedural optimizations in
GCC 4.1+ is getting more so all the time (the compiler can now move code
between *functions* if it needs to, or propagate constants consistently
used as function arguments down int into the function themselves; pointer
aliasing torpedoes both of these optimizations, and many more.)

(One particularly evil thing is the glibc printf handler extension. As
a result of that, we must assume that any call to printf() or scanf()
can potentially modify any global variable and any local to which a
pointer may have escaped. This is decidedly suboptimal given that
nobody sane ever uses those extensions!)


I think I'll dare to upgrade mdadm soon. I tried upgrading from 2.3.1 to
2.4 (with uClibc from SVN dated 2006-03-28) and it promptly segfaulted
at array assembly time. If it happens with 2.5 I'll get a backtrace
(hard though that is to get when you don't have any accessible storage
to put the core dump on... I upgraded uClibc at the same time so it may
well be an uClibc bug.)

-- 
`Voting for any American political party is fundamentally
 incomprehensible.' --- Vadik
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to