Subject: MAKECONV=/usr/pkg/etc/gcc-2.95.2.mk vs. -current userland (i386)
To: None <port-i386@netbsd.org>
From: Sean Doran <smd@ebone.net>
List: port-i386
Date: 09/19/2000 01:45:50
So far a kernel builds and runs just fine with the pkgsrc gcc-2.95.2
and a bunch of options, and userland seems pretty happy, although
I had to build with -k, then rebuild parts with NOGCCERROR=1, and
finally some parts with the in-tree egcs.

There are really just two obvious classes of problems in building userland,
the most common of which is:

cc1: warnings being treated as errors
/usr/src/games/fortune/fortune/fortune.c: In function `getargs':
/usr/src/games/fortune/fortune/fortune.c:392: warning: null format string
/usr/src/games/fortune/fortune/fortune.c: In function `do_malloc':
/usr/src/games/fortune/fortune/fortune.c:860: warning: null format string
/usr/src/games/fortune/fortune/fortune.c: In function `conv_pat':
/usr/src/games/fortune/fortune/fortune.c:1244: warning: null format string
*** Error code 1 (continuing)

This happens with a mess of programs that use err()/errx() and the like.

There are also glitches in .../gnu/lib/libgcc when compling with the 2.95.2

cc1: warnings being treated as errors
/usr/src/gnu/lib/libgcc/../../dist/gcc/libgcc2.c: In function `__throw':
/usr/src/gnu/lib/libgcc/../../dist/gcc/libgcc2.c:3627: warning: assignment makes
 pointer from integer without a cast
/usr/src/gnu/lib/libgcc/../../dist/gcc/libgcc2.c:3629: warning: assignment makes
 pointer from integer without a cast
/usr/src/gnu/lib/libgcc/../../dist/gcc/libgcc2.c:3741: warning: assignment makes
 pointer from integer without a cast
/usr/src/gnu/lib/libgcc/../../dist/gcc/libgcc2.c:3743: warning: assignment makes
 pointer from integer without a cast
*** Error code 1 (continuing)
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/exception.cc: In function `void __chec
k_eh_spec(int, const void **)':
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/exception.cc:275: type `cp_eh_info' is
 not a base type for type `cp_eh_info'
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/exception.cc:278: comparison of distin
ct pointer types `cp_eh_info *' and `cp_eh_info *' lacks a cast
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/exception.cc:280: type `cp_eh_info' is
 not a base type for type `cp_eh_info'
*** Error code 1 (continuing)
In file included from /usr/src/gnu/lib/libgcc/../../dist/gcc/cp/tinfo.cc:31:
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/tinfo.h:43: declaration of `enum __cla
ss_type_info::access __class_type_info::base_info::access'
/usr/src/gnu/lib/libgcc/../../dist/gcc/cp/tinfo.h:37: changes meaning of `access
' from `enum __class_type_info::access'
*** Error code 1 (continuing)

Finally, there remains the floating point rounding mode botch
in .../regress/lib/libc/ieeefp/round as noted ealier, but I notice
no problems with "real world" programs, and oddly pkgsrc/benchmarks/paranoia
is happy even if the regression test isn't.

	Sean.