On Fri, Dec 11, 2009 at 3:19 PM, Camm Maguire <[email protected]> wrote:
> Greetings!
>
> Leo Butler <[email protected]> writes:
>
>> On Fri, 11 Dec 2009, Camm Maguire wrote:
>>
>> < Greetings! OK just fixd the GCL bugs, which result in some of the
>> < maxima bugs, and am ready for upload.
>> <
>> < There are new gcc warnings, which I always like to clear up.  Perhaps
>> < you might help by figuring out the currently blessed way of writing
>> < the following:
>> <
>> < #define GET_FAULT_ADDR(sig,code,sv,a) \
>> <     ((void *)(((struct sigcontext *)(&code))->cr2))
>> < #endif
>> <
>> < sgbc.c: In function 'memprotect_handler':
>> < sgbc.c:1620: warning: dereferencing pointer 'code.636' does break 
>> strict-aliasing rules
>> < sgbc.c:1620: note: initialized from here
>>
>> Camm, if I understand strict-aliasing [*] then the problem is that your 
>> macro is casting a
>> (void *) while on line 1620, faddr is a (char *).
>>
>> If you change your macro to cast a (char *), then this should fix this 
>> problem. Again,
>> from the above article, (char *) may refer to an alias of any object, so 
>> this should
>> not introduce any additional breakages of the strict aliasing rules.

There is no issue with aliasing if you access a memory storage as
'char *' -- the C sandard explicitly says it is OK.

-- Gaby


_______________________________________________
Gcl-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gcl-devel

Reply via email to