Jakub Jelinek <ja...@redhat.com> writes: > Hi! > > As mentioned in the PR, bootstrap with m2 enabled currently fails > on powerpc64le-linux, we get weird ICE after printing some diagnostics. > The problem is that mc creates from *.def prototypes like > extern void m2linemap_WarningAtf (m2linemap_location_t location, void * > message); > but the actual function definitions use > void m2linemap_WarningAtf (m2linemap_location_t location, void * message, > ...) { code } > and on powerpc64le-linux such lying about the prototype results in > wrong-code, on the caller side we assume the function isn't varargs > and so don't reserve 64 bytes in the frame for it, while the callee > relies on the area being reserved and stores into it. > > Fixed by adding non-stdarg wrappers around stdarg functions (because > we want va_list and pass it to diagnostics functions). > > Bootstrapped/regtested on {x86_64,i686,powerpc64le,s390x,aarch64}-linux, > ok for trunk? > > 2022-12-19 Jakub Jelinek <ja...@redhat.com> > > PR modula2/108147 > * m2/gm2-gcc/m2linemap.def (ErrorAtf, WarningAtf, NoteAtf): > Comment out prototypes with varargs. > * m2/gm2-gcc/m2linemap.h (m2linemap_ErrorAtf, m2linemap_WarningAtf, > m2linemap_NoteAtf): No longer varargs. > * m2/gm2-gcc/m2linemap.cc (m2linemap_ErrorAtf): Turned into a > non-varargs wrapper around ... > (m2linemap_ErrorAtf_1): ... this. New static function. > (m2linemap_WarningAtf): Turned into a non-varargs wrapper around ... > (m2linemap_WarningAtf_1): ... this. New static function. > (m2linemap_NoteAtf): Turned into a non-varargs wrapper around ... > (m2linemap_NoteAtf_1): ... this. New static function.
thanks for the patch, both this and the subsequent followup patch LGTM, regards, Gaius