This is not a complete/correct patch, but it makes firefox build. For now mostly for tracking, so a real fix can be made, but right now it still segfaults on start. Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60 Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp --- a/xpcom/reflect/xptcall/xptcall.h +++ b/xpcom/reflect/xptcall/xptcall.h @@ -71,6 +71,11 @@ struct nsXPTCVariant { ExtendedVal ext; }; +#if defined(__powerpc__) && !defined(__powerpc64__) + // this field is still necessary on ppc32, as an address + // to it is taken certain places in xptcall + void *ptr; +#endif nsXPTType type; uint8_t flags; @@ -91,7 +96,12 @@ struct nsXPTCVariant { }; void ClearFlags() { flags = 0; } +#if defined(__powerpc__) && !defined(__powerpc64__) + void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; } + bool IsPtrData() const { return IsIndirect(); } +#else void SetIndirect() { flags |= IS_INDIRECT; } +#endif bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); }