New Kernel Breaks IPFW
Terry Lambert
tlambert2 at mindspring.com
Tue Jun 10 04:03:54 PDT 2003
Ian Freislich wrote:
> Alas make buildworld fails for the past few days:
> ===> usr.sbin/config
> <snip>
> In file included from config.c:1:
> /usr/include/stdlib.h:102: conflicting types for `restrict'
> /usr/include/stdlib.h:102: previous declaration of `restrict'
> /usr/include/stdlib.h:102: warning: redundant redeclaration of `restrict' in same scope
> /usr/include/stdlib.h:102: warning: previous declaration of `restrict'
> /usr/include/stdlib.h:103: conflicting types for `restrict'
> <snip>
> (and also stdio.h, string.h, sys/types.h, select.h)
>From <sys/cdefs.h>:
-----------------------------------------------------------------------------
/*
* GCC 2.95 provides `__restrict' as an extension to C90 to support the
* C99-specific `restrict' type qualifier. We happen to use `__restrict' as
* a way to define the `restrict' type qualifier without disturbing older
* software that is unaware of C99 keywords.
*/
#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
#if __STDC_VERSION__ < 199901
#define __restrict
#else
#define __restrict restrict
#endif
#endif
-----------------------------------------------------------------------------
The <stdlib.h> hasn't changed in over two months; <sys/cdefs.h>
hasn't changed in about 7 weeks.
Apparently, someone hosed the compiler flags. Looking at your
cribbed link:
> Someone posted a link to the failure that I get, so I'll crib:
> http://www.0xfce3.net/error.txt
We see:
cc -O -pipe -std=iso9899:1999 -I/usr/obj/usr/src/i386/legacy/usr/include
-static -L/usr/obj/usr/src/i386/legacy/usr/lib -o xinstall xinstall.o -legacy
Works.
cc -O -pipe -I. -I/usr/src/usr.sbin/config -W -Wall -ansi -pedantic
-Wbad-function-cast -Wcast-align -Wcast-qual -Wchar-subscripts -Winline
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wredundant-decls
-Wshadow -Wstrict-prototypes -Wwrite-strings -std=iso9899:1999
-I/usr/obj/usr/src/i386/legacy/usr/include -c config.c
Hosed. I believe you'll find that it's the comobination of
the compiler flags "-ansi -pedantic" with "-std-iso9899:1999"...
this might be pilot error in your local make.conf, as well,
since I think it turns off GNU extensions, which we apparently
depend upon, but my money is on:
http://www.freebsd.org/cgi/cvsweb.cgi/src/share/mk/bsd.sys.mk
Version 1.29:
"Be C std strict on i386 and amd64 as we can. Be loose on Alpha
and ia64".
...or maybe 1.25:
"Turn back on c99, the tree should be ready for it now."
> > Short term, cd /usr/src/sbin/ipfw; make depend && make all install ought
> > to fix it.
>
> I tried that as well, but the new binary also dumps core, but works
> well with previous versions of the firewall. Even back as far as
> my kernel.working from May 7 2003.
Bogus header files; specifically, <netinet/ip_fw.h>. Because you
can't build world, you are compiling the ipfw program with the old
system include files instead of the new ones. You may also be
missing a cvs update on the ipfw sources themselves (specifically,
ipfw2.c).
-- Terry
More information about the freebsd-current
mailing list