Date: Tue, 26 Sep 2000 09:14:40 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: "Justin T. Gibbs" <gibbs@plutotech.com> Cc: "Justin T. Gibbs" <gibbs@FreeBSD.org>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/sys libkern.h Message-ID: <Pine.BSF.4.21.0009260823160.12697-100000@besplex.bde.org> In-Reply-To: <200009252111.PAA56527@pluto.plutotech.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 25 Sep 2000, Justin T. Gibbs wrote: > >You mean memcmp and memset (memcpy was already a (non-inline) function). > >This mistake in -current shouldn't have been propagated. > > The mem\* routines are part of the C standard and should be available > from within the kernel. This doesn't follow. Only the freestanding implementation part of the C standard is generally available in the kernel. > I don't think that a piece of code that runs > on multiple platforms should have to role their own mem\* routines. Code that supports lots of platforms will probably need to do this anyway. E.g., the isp driver #defines MEMCPY and MEMZERO. This takes a whole 0.5% of isp_freebsd.h. > If you don't like what Poul-Henning did, then implement something better, I complained to him privately about implementation bugs in the libkern changes, but he didn't reply. They were in the wrong file to begin with. They should have been in systm.h where the prototypes are. After a quick'n'wrong fix for this, we now have libkern.h and systm.h including each other (not recursively, due to the idempotency ifdefs, just ugly). His previous change in rev.1.78 of param.h, to generate an error if memcpy (sic) or memset is used in the kernel, would have been almost correct if it hadn't been completely broken by confusing memcmp with memcpy. After doing never merging the libkern breakage and fixing subsequent collateral breakage in randomdev, I get only the following errors for building LINT: aml_name.o: In function `aml_local_stack_create': aml_name.o(.text+0x611): undefined reference to `memset' awi.o: In function `awi_ioctl': awi.o(.text+0x3a8): undefined reference to `memcmp' awi.o(.text+0x3c3): undefined reference to `memset' awi.o: In function `awi_init': awi.o(.text+0x6e4): undefined reference to `memset' awi.o: In function `awi_input': awi.o(.text+0x153c): undefined reference to `memcmp' awi.o: In function `awi_init_hw': awi.o(.text+0x1dd1): undefined reference to `memcmp' awi.o: In function `awi_init_mibs': awi.o(.text+0x2012): undefined reference to `memset' awi.o: In function `awi_start_scan': awi.o(.text+0x251e): undefined reference to `memset' awi.o: In function `awi_stop_scan': awi.o(.text+0x27cc): undefined reference to `memcmp' awi.o: In function `awi_recv_beacon': awi.o(.text+0x2a43): undefined reference to `memcmp' awi.o(.text+0x2a59): undefined reference to `memcmp' awi.o(.text+0x2ad0): undefined reference to `memset' awi.o: In function `awi_recv_auth': awi.o(.text+0x335c): undefined reference to `memcmp' awi.o: In function `awi_recv_asresp': awi.o(.text+0x36f4): undefined reference to `memcmp' awi_wicfg.o: In function `awi_cfgget': awi_wicfg.o(.text+0x394): undefined reference to `memset' awi_wicfg.o(.text+0x5e9): undefined reference to `memset' awi_wicfg.o: In function `awi_cfgset': awi_wicfg.o(.text+0x8e6): undefined reference to `memset' awi_wicfg.o(.text+0x97e): undefined reference to `memset' if_awi_pccard.o: In function `awi_pccard_probe': if_awi_pccard.o(.text+0xc9): undefined reference to `memcmp' At least awi used to have a home made memcmp and memset to work around this error. The broken memcmp in libkern was copied from there. > but the old situation where modules would compile with some compiler > options and not others is not acceptable. Anything that is checked by putting it in NOTES and building LINT won't be broken by -fno-builtin, but controlling the builtins by replacing them by inline functions would be better. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0009260823160.12697-100000>