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: