On Wed, Mar 17, 2010 at 6:17 PM, Carl-Daniel Hailfinger
<c-d.hailfinger.devel.2006@gmx.net> wrote:
Hi Segher,
you're probably able to solve this one easily.
On 18.03.2010 00:45, Myles Watson wrote:
>>> -extern unsigned char AmlCode[];
>>> +extern void* AmlCode;
>>>
>>>
>>> So AmlCode is used as a void * pointing to the address 0x54445344
>> What is it, you want to do?
>>
>>
> Get rid of the type punned warning that gcc gives for that code where
> AmlCode gets cast to acpi_header_t.
>
Could __attribute__((may_alias)) help?
I'd rather not use an attribute if we can just use a cast.
It seems to work to have an intermediate void*:
void_ptr = &AmlCode_ssdt;
current += ((acpi_header_t *)void_ptr)->length;
It compiles without warning and is functionally correct, but it may be too ugly. I'm still surprised that it needs to be &AmlCode_ssdt. I really expected Amlcode_ssdt to be a cast-able pointer.
Thanks,