Subject: xsrc/20457: X11R6.3 build failure on -current (1.6O)
To: None <gnats-bugs@gnats.netbsd.org>
From: None <kre@munnari.OZ.AU>
List: netbsd-bugs
Date: 02/21/2003 20:32:45
>Number: 20457
>Category: xsrc
>Synopsis: X11R6.3 build failure on -current (1.6O)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: xsrc-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Feb 21 05:34:01 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Robert Elz
>Release: NetBSD 1.6O (-current of 2003-02-20)
>Organization:
Prince of Songkla University
>Environment:
System: NetBSD delta.cs.mu.OZ.AU 1.6L NetBSD 1.6L (DELTA) #29: Fri Jan 10 11:40:50 ICT 2003 kre@fuchsia.cs.mu.OZ.AU:/usr/obj/sys/DELTA i386
Architecture: i386
Machine: i386
>Description:
xsrc/xc/programs/Xserver/hw/xfree86/SuperProbe/PCI.h
contains:
#define _status stat_cmd.sc.status
/usr/src/sys/siginfo.h contains
struct {
pid_t _pid;
uid_t _uid;
int _status;
clock_t _utime;
clock_t _stime;
} _child;
If siginfo.h is included after PCI.h then the _status in siginfo.h
gets "mangled" and of course, fails to compile.
SuperProbe/OS_386BSD.c causes this to occur.
>How-To-Repeat:
Try recompiling X11R6.3 on an (i386) NetBSD 1.6O system.
Expect to see
gcc -O2 -ansi -Dasm=__asm -I../../../../.. -I../../../../../exports/include
-DCSRG_BASED -DFUNCPROTO=15 -DNARROWPROTO -DGCCUSESGAS -DPCCONS_SUPPORT -DWSC
ONS_SUPPORT -DUSE_I386_IOPL -c OS_386BSD.c
In file included from /usr/include/sys/signal.h:146,
from /usr/include/sys/param.h:143,
from OS_386BSD.c:102:
/usr/include/sys/siginfo.h:67: warning: no semicolon at end of struct or union
/usr/include/sys/siginfo.h:67: parse error before `.'
/usr/include/sys/siginfo.h:67: warning: no semicolon at end of struct or union
/usr/include/sys/siginfo.h:67: warning: no semicolon at end of struct or union
/usr/include/sys/siginfo.h:67: warning: no semicolon at end of struct or union
/usr/include/sys/siginfo.h:70: parse error before `}'
>Fix:
I simply removed the #define from PCI.h
It appears to be referenced exactly twice - once in PCI.h (the actual
#define), and once in SYSV.h (which does a #undef of it...)
It isn't actually used in any code in the SuperProbe sources.
I didn't check to see if it may have been needed in some sibling program
which had already successfully compiled (after I fixed this, I just
continued compiling - an error in the depends could have masked some
other user).
There is very likely some kind of depends error as well, as nothing material
seems to have changed in quite a long time. I have been rebuilding this
version of X relatively frequently (but until today, always "update" builds)
and hadn't encountered this problem. That suggests that sometime in the
past when the change that caused this inconsistent use of _status was made
to some file or other (there are chains of #include files here, OS_386BSD.c
doesn't directly include either siginfo.h or PCI.h) the .depends stuff
didn't cause a recompilation, or I would have noticed this much sooner.
>Release-Note:
>Audit-Trail:
>Unformatted: