#
c968ca6e |
| 20-Nov-2020 |
gkoehler <gkoehler@openbsd.org> |
Fix va_arg in C++, Objective-C on 32-bit powerpc
In the PPC32 SVR4 ABI, a va_list has copies of registers from the function call. va_arg looked in the wrong registers for (the pointer representation
Fix va_arg in C++, Objective-C on 32-bit powerpc
In the PPC32 SVR4 ABI, a va_list has copies of registers from the function call. va_arg looked in the wrong registers for (the pointer representation of) an object in Objective-C, and for some types in C++. Fix va_arg to look in the general-purpose registers, not the floating-point registers. Also fix va_arg for some C++ types, like a member function pointer, that are aggregates for the ABI.
Anthony Richardby found the problem in Objective-C. Eli Friedman suggested part of this fix.
Fixes https://bugs.llvm.org/show_bug.cgi?id=47921 I have submitted this diff as https://reviews.llvm.org/D90329
ok kettenis@
show more ...
|