Date: Sat, 23 Feb 2002 17:44:39 +0100 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: David Wolfskill <david@catwhisker.org> Cc: current@FreeBSD.ORG, tanimura@FreeBSD.ORG Subject: Re: Problem with buildworld: what is "major" really supposed to be? Message-ID: <7126.1014482679@critter.freebsd.dk> In-Reply-To: Your message of "Sat, 23 Feb 2002 08:42:40 PST." <200202231642.g1NGgen81171@bunrab.catwhisker.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <sys/types.h> >#include <sys/queue.h> >#include <sys/_lock.h> >#include <sys/_mutex.h> > > 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7126.1014482679>