Re: XView bug/PPC machines available for developers?
> BTW, I never heard any complaints about XView's varargs usage on ppc back
> in the glibc 2.0 days (but then, I don't know wheter somebody actually
> compiled it for ppc at that time). However, for glibc 2.1, somebody
> submitted a patch that changed the following in lib/libxview/attr/attr.c:94
> and a few other places:
>
> #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
> __va_copy(valist, valist1);
> __va_copy(avlist, avlist1);
> #else
> valist = valist1;
> avlist = avlist1;
> #endif
Looks reasonable.
> If I look at the definition of __va_copy, it's
> #define __va_copy(dest, src) (dest) = (src)
> on all platforms except ppc, where it is
> #define __va_copy(dest, src) *(dest) = *(src)
> Is ppc varargs really that different from the rest of the world's, or could
> this be a bug in gcc's header files?
No, it's really that different. I don't understand all the weird stuff
going on there but I've tried a number of things to port a bio sequence
analysis package where they passed va_lists down multiple levels of
function calls that would then change the va_lists. The rest of the world
passes pointers to the va_lists if the changes need to propagate back up.
PPC doesn't seem to like pointers to va_lists, just passing the va_list
however already makes changes to the list visible to the calling function.
Hence my need for __va_copy() which could not be replaced by a simple
copy.
Michael
Reply to: