[klibc] Register parameters are unsafe with gcc 3.3.2
H. Peter Anvin
hpa at zytor.com
Sat Jun 5 13:49:58 PDT 2004
H. Peter Anvin wrote:
> Alexander E. Patrakov wrote:
>
>>
>> Other shell redirections don't work either. When I comment out the
>> following line in klibc/klibc/arch/i386/MCONFIG:
>>
>> # REGPARM_OPT := -mregparm=3 -DREGPARM
>>
>> and rebuild klibc, everything works. Please take some action against
>> this error, e.g. update the README file.
>>
>
> It's not a gcc problem, it seems to be a bug in the klibc open()
> function. open() is a problematic function since it's technically
> defined as being varadic, and with regparm varadic and non-varadic
> functions have calling conventions.
>
> Thus, it's either a klibc or an ash problem, so it's in my court. I'll
> take care of it.
>
OK, sprinkling #include <unistd.h> across the ash directory did it.
If noone objecs, I'm also going to add the open() prototype to
<fcntl.h>, since even old-style code included <fcntl.h> when using open().
Anyone would be brave enough to convert ash to prototype format? That
way we could use standard gcc warnings to warn for missing prototypes.
-hpa
More information about the klibc
mailing list