Open nekopsykose opened 9 months ago
ah, a repro:
copypaste online example:
/* vsnprintf example */
#include <stdio.h>
#include <stdarg.h>
void PrintFError ( const char * format, ... )
{
char buffer[256];
va_list args;
va_start (args, format);
vsnprintf (buffer,256,format, args);
perror (buffer);
va_end (args);
}
int main ()
{
FILE * pFile;
char szFileName[]="myfile.txt";
pFile = fopen (szFileName,"r");
if (pFile == NULL)
PrintFError ("Error opening '%s'",szFileName);
else
{
// file successfully open
fclose (pFile);
}
return 0;
}
then:
$ cc main.c -m32 -c -O1
In file included from /tmp/mytemp.ADnlpp/main.c:2:
/usr/include/fortify/stdio.h:150:47: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 2 of function '__orig_vsnprintf' has type 'size_t' (aka 'unsigned long'), but parameter 2 of function '__builtin_vsnprintf' has type 'unsigned int'
150 | __diagnose_as_builtin(__builtin_vsnprintf, 1, 2, 3, 4)
| ^
1 error generated.
removing either optimisation (-O0 or no arg) or -m32 doesn't reproduce
you can use a chimeralinux/chimera
container and apk add clang
to repro this manually if you need
trying to reproduce normally with
-fno-builtin
or similar doesn't repro, so there is probably something funny in the compiler-rt build