I tried from within the plain pkgin source tree
$ ./configure CC=/usr/pkg/gcc49/bin/gcc
$ make CC=/usr/pkg/gcc49/bin/gcc
in my un-updated system, and that fails in the same manner (using that
compiler).
Weirdly enough, this:
$ make
uses gcc instead of /usr/pkg/gcc49/bin/gcc, even though CC is clearly
set already in the Makefile.
But that aside for now.
I used -E on the build command, and noticed that the original code
for (ptr = buf; size > 0; ptr += wrote, size -= wrote) {
if ((wrote = fwrite(ptr, 1, size, fp)) < size) {
if (ferror(fp) && errno == EINTR)
clearerr(fp);
gets expanded to
for (ptr = buf; size > 0; ptr += wrote, size -= wrote) {
if ((wrote = fwrite(ptr, 1, size, fp)) < size) {
if ((((fp)->_flags & 0x0040) != 0) && (*__errno()) == 4)
((void)((fp)->_flags &= ~(0x0040|0x0020)));
That probably comes from
/usr/pkg/gcc49/lib/gcc/x86_64--netbsd/4.9.4/include-fixed/stdio.h:#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
/usr/pkg/gcc49/lib/gcc/x86_64--netbsd/4.9.4/include-fixed/stdio.h:#define clearerr(p) __sclearerr(p)
and
unsigned short _flags; /* flags, below; this FILE is free if 0 */
That would explain the "conversion to 'short unsigned int' from 'int'
may alter its value".. even if the compiler actually KNOWS the value
here and can see that it doesn't matter.
The same macro definitions are in the normal <stdio.h> file, so this is
not some weird macro added by gcc.
-Olaf.
--
___ Olaf 'Rhialto' Seibert -- Wayland: Those who don't understand X
\X/ rhialto/at/falu.nl -- are condemned to reinvent it. Poorly.
Attachment:
signature.asc
Description: PGP signature