linux-2.3.3 doesn't boot when compiled with egcs-2.93.22
Mon May 24 01:12:00 GMT 1999
>>>>> "Martin" == Martin v Loewis <firstname.lastname@example.org> writes:
>> The problem is that function drivers/block/ide.c:init_hwif_data
>> is miscompiled, it gives the value 1 to the noprobe field of
>> the structure. egcs-1.1.2 gives the correct value 0.
Martin> This looks like an alias problem to me.
Martin> Anyway, I leave this to the aliasing wizards to decide.
Good spotting. The code is indeed not legal C:
typedef unsigned short ide_ioreg_t;
ide_ioreg_t io_ports[(10) ];
So, io_ports is of type `unsigned short ()'. But,
__constant_memcpy attempts to access it through a pointer to an
unsigned long, as you said.
The only portable way to write memcpy is with `char*'; you can access
anything through a pointer-to-character. But, to make it fast, you
probably have to write it in assembly code.
Mark Mitchell email@example.com
CodeSourcery, LLC http://www.codesourcery.com
More information about the Gcc-bugs