https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108147

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Actually, I see:
grep WarningAtf /tmp/*.ii
/tmp/M2Emit.ii:extern void m2linemap_WarningAtf (m2linemap_location_t location,
void * message);
/tmp/M2Emit.ii:      m2linemap_WarningAtf (M2LexBuf_TokenToLocation (token),
DynamicStrings_string (message));
/tmp/m2linemap.ii:extern "C" void m2linemap_WarningAtf (location_t location,
const char *message, ...);
/tmp/m2linemap.ii:extern "C" void WarningAtf (location_t location, const char
*message, ...);
/tmp/m2linemap.ii:m2linemap_WarningAtf (location_t location, const char
*message, ...)
so there is indeed a mismatch between the caller which is told
m2linemap_WarningAtf is not varargs function,
and callee which compiles varargs function.
The preprocessed source says the wrong prototype comes from
m2/gm2-gcc/Gm2linemap.h
and I see the mismatch even in my x86_64-linux bootstrap, just the calling
convention doesn't care,
while powerpc64le-linux one clearly does care.

The first two lines of Gm2linemap.h are
/* do not edit automatically generated by mc from m2linemap.  */
/* m2linemap.def provides access to GCC location_t.

m2linemap.def contains:
PROCEDURE ErrorAt (location: location_t; message: ADDRESS) ;
(*
PROCEDURE ErrorAtf (location: location_t; message: ADDRESS; ...) ;
PROCEDURE WarningAtf (location: location_t; message: ADDRESS; ...) ;
PROCEDURE NoteAtf (location: location_t; message: ADDRESS; ...) ;
*)
PROCEDURE ErrorAtf (location: location_t; message: ADDRESS) ;
PROCEDURE WarningAtf (location: location_t; message: ADDRESS) ;
PROCEDURE NoteAtf (location: location_t; message: ADDRESS) ;
so I guess it is known there is a mismatch and perhaps it isn't representable
in Modula-2,
but still this will never work on powerpc64le.  So, could there be some
wrappers around the ... functions that just pass no arguments to them and are
callable from Modula-2?

Reply via email to