Bizarre compile error (gcc 3.4.2 on 6.0-CURRENT)

Conrad J. Sabatier conrads at cox.net
Sat Oct 16 19:10:18 PDT 2004


Just out of curiosity, I commented out the BROKEN lines in
/usr/ports/sysutils/pib/Makefile and tried building the port.
Right away, I ran into the weirdest error that I cannot make any sense
out of (whitespace added for clarity):

dolphin:root:/usr/ports/sysutils/pib# make
===>  Building for pib-1.2
Warning: Object directory not changed from original
/usr/ports/sysutils/pib/work/pib-1.2

cc -O2 -pipe -march=athlon64 -mmmx -m3dnow -msse -msse2 -m64 
-I/usr/local/include/tcl8.2-I/usr/local/include/tk8.2 
-I/usr/X11R6/include  -DUSE_XACCESS-DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 
-DSTDC_HEADERS=1 -DTK_FILE_COUNT=_r-DNEED_MATHERR=1 
-DTK_LIBRARY=\"/usr/local/lib/tk8.2\"  -c tkXAccess.c

In file included from tkXAccess.c:26:
tkPort.h:136: error: conflicting types for 'Tcl_Panic'

tkPort.h:136: note: a parameter list with an ellipsis can't match an
empty parameter name list declaration

/usr/local/include/tcl8.2/tclDecls.h:38: error: previous declaration of
'Tcl_Panic' was here

tkPort.h:136: error: conflicting types for 'Tcl_Panic'

tkPort.h:136: note: a parameter list with an ellipsis can't
match an empty parameter name list declaration

/usr/local/include/tcl8.2/tclDecls.h:38: error: previous
declaration of'Tcl_Panic' was here

*** Error code 1

What's so strange about this error is that the file where the error
occurs does not even mention Tcl_Panic().  Rather, the offending line
at tkPort.h:136 is this:

extern void	panic();

While the line at /usr/local/include/tcl8.2/tclDecls.h:38 is this:

EXTERN void	Tcl_Panic _ANSI_ARGS_(TCL_VARARGS(char *,format));

Why would the compiler think that these two completely different
identifiers were referring to the same object?

-- 
Conrad J. Sabatier <conrads at cox.net> -- "In Unix veritas"


More information about the freebsd-questions mailing list