From owner-freebsd-current Sat Feb 23 8:54:43 2002 Delivered-To: freebsd-current@freebsd.org Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.86.163]) by hub.freebsd.org (Postfix) with ESMTP id 7E1B037B404; Sat, 23 Feb 2002 08:54:36 -0800 (PST) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.12.2/8.12.2) with ESMTP id g1NGsXwC007262; Sat, 23 Feb 2002 17:54:33 +0100 (CET) (envelope-from phk@critter.freebsd.dk) Cc: David Wolfskill , current@FreeBSD.ORG, tanimura@FreeBSD.ORG Subject: Re: Problem with buildworld: what is "major" really supposed to be? In-Reply-To: Your message of "Sat, 23 Feb 2002 17:44:39 +0100." <7126.1014482679@critter.freebsd.dk> Date: Sat, 23 Feb 2002 17:54:33 +0100 Message-ID: <7261.1014483273@critter.freebsd.dk> From: Poul-Henning Kamp Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Ok, found it: This is the culprit: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/sys/file.h.diff?r1=1.39&r2=1.40 In message <7126.1014482679@critter.freebsd.dk>, Poul-Henning Kamp writes: > >Yeah, I'm chasing that one right now. > >I'm not yet quite sure which commit has broken this, nor what the right >fix is... > >Poul-Henning > >In message <200202231642.g1NGgen81171@bunrab.catwhisker.org>, David Wolfskill w >rites: >>Trying to "make buildworld" for today's -CURRENT, I get: >> >>>>> stage 4: building libraries >>-------------------------------------------------------------- >>... >>===> doc >>cc -fpic -DPIC -O -pipe -DLIBC_SCCS -I/usr/src/lib/libkvm -c /usr/src/lib/libkvm/kvm_file.c -o kvm_file.So >>In file included from /usr/obj/usr/src/i386/usr/include/sys/file.h:40, >> from /usr/src/lib/libkvm/kvm_file.c:54: >>/usr/obj/usr/src/i386/usr/include/sys/systm.h:305: syntax error before `int' >>/usr/obj/usr/src/i386/usr/include/sys/systm.h:306: syntax error before `int' >>/usr/obj/usr/src/i386/usr/include/sys/systm.h:307: syntax error before `(' >>*** Error code 1 >> >> >>After enough tinkering with copies of the files to demonstrate to >>my satisfaction that my C skills are pretty rusty, I noticed that: >> >>* The lines in systm.h look like (starting at line 301): >> >>/* >> * Common `dev_t' stuff are declared here to avoid #include poisoning >> */ >> >>int major(dev_t x); >>int minor(dev_t x); >>dev_t makedev(int x, int y); >>udev_t dev2udev(dev_t x); >>dev_t udev2dev(udev_t x, int b); >>int uminor(udev_t dev); >>int umajor(udev_t dev); >>udev_t makeudev(int x, int y); >> >> >> so it looks as if we're declaring "major" as a function returning int. >> >>* But sys/sys/file.h, starting at line 49 reads: >> >>#ifdef _KERNEL >>#include >>#include >>#include >>#include >> >> which is OK, except that sys/sys/types.h, starting at line 113 reads: >> >>/* >> * minor() gives a cookie instead of an index since we don't want to >> * change the meanings of bits 0-15 or waste time and space shifting >> * bits 16-31 for devices that don't use them. >> */ >>#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ >>#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ >>#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ >> >> >> and this appears to be a bit of a problem, because by the time the C >> compiler gets to the "int major(dev_t x);" line in sys/sys/systm.h, >> "major" has been replaced, so the line looks like: >> >>int ((int)(((u_int)( dev_t x ) >> 8)&0xff)) ; >> >> which is pretty non-ideal, any way you look at it. >> >> >>In case it's of interest/value, recent CVSup history is: >>freebeast(5.0-C)[44] tail /var/log/cvsup-history.log >>CVSup begin from cvsup14.freebsd.org at Tue Feb 19 03:47:02 PST 2002 >>CVSup ended from cvsup14.freebsd.org at Tue Feb 19 03:53:36 PST 2002 >>CVSup begin from cvsup14.freebsd.org at Wed Feb 20 03:47:02 PST 2002 >>CVSup ended from cvsup14.freebsd.org at Wed Feb 20 04:00:08 PST 2002 >>CVSup begin from cvsup14.freebsd.org at Thu Feb 21 03:47:03 PST 2002 >>CVSup ended from cvsup14.freebsd.org at Thu Feb 21 03:53:29 PST 2002 >>CVSup begin from cvsup14.freebsd.org at Fri Feb 22 03:47:02 PST 2002 >>CVSup ended from cvsup14.freebsd.org at Fri Feb 22 03:54:26 PST 2002 >>CVSup begin from cvsup14.freebsd.org at Sat Feb 23 04:35:13 PST 2002 >>CVSup ended from cvsup14.freebsd.org at Sat Feb 23 04:42:37 PST 2002 >>freebeast(5.0-C)[45] >> >> >>So: how should this be resolved? Or am I just confused (again)? >> >> >>Thanks, >>david >>-- >>David H. Wolfskill david@catwhisker.org >>I believe it would be irresponsible (and thus, unethical) for me to advise, >>recommend, or support the use of any product that is or depends on any >>Microsoft product for any purpose other than personal amusement. >> >>To Unsubscribe: send mail to majordomo@FreeBSD.org >>with "unsubscribe freebsd-current" in the body of the message >> > >-- >Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 >phk@FreeBSD.ORG | TCP/IP since RFC 956 >FreeBSD committer | BSD since 4.3-tahoe >Never attribute to malice what can adequately be explained by incompetence. > >To Unsubscribe: send mail to majordomo@FreeBSD.org >with "unsubscribe freebsd-current" in the body of the message > -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message