[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: #ifndef __powerpc__ (Re: xinit: Exec format error. Binary file notexecutable. )
>> > kprintf(cp, oflags, vp,
>> > NULL, va_arg(ap, va_list));
あ、よくみたら va_arg(ap, va_list) とかなってる…。
powerpc の va_list って struct ... ap[1] なので関数の引数にすると、その
アドレスしか渡らないんですよね。
最近困っているのは ld.elf_so です。
こういうの、powerpc では動きません:
#include <stdarg.h>
h(ap)
va_list *ap;
{
printf("%d\n", va_arg(*ap, int));
}
g(ap)
va_list ap;
{
return h(&ap);
}
f(int arg, ...)
{
va_list ap;
va_start(ap, arg);
g(ap);
va_end(ap);
}
main()
{
f(0, 1);
}
この例に限っていえば h() を
h(ap)
va_list **ap;
{
printf("%d\n", va_arg(**ap, int));
}
とすれば期待通りになります。
ANSI C に「&va_list してはいけない」なんて規則はないものでしょうか。:-)