UPDATING revision 1.115
1$NetBSD: UPDATING,v 1.115 2004/04/22 14:35:55 christos Exp $
2
3This file is intended to be a brief introduction to the build
4process and a reference on what to do if something doesn't work.
5
6For a more detailed description see Makefile.
7
8Recent changes:
9^^^^^^^^^^^^^^^
10
1120040418:
12	Statfs(2) and friends have been replaced with statvfs(2). Before
13	installing a newly build userland make sure that you are running
14	a newly built kernel with COMPAT_20 set. In addition your libc
15	build might not work (undefined SYS_statfs symbol) because make
16	clean does not know how to remove files it does not know about
17	anymore. Manually remove all objects from the libc build directory.
18
1920040326:
20	The method by which athhal-elf.o gets pulled into i386 kernel builds
21	has been changed. The file is now stored as a uuencode file in CVS
22	and the generated Makefile will use the new .uue rules from bsd.file.mk
23	to build it.
24
25	This means you must have the latest bsd.files.mk installed when
26	building a kernel without USETOOLS=yes.
27
2820040318:
29	A bug in the cgd(4) blowfish code was corrected, without
30	provision of backwards compatibility, after several public
31	notices over several months. Users of cgd with blowfish cipher
32	ONLY must dump their data before updating their kernels, and
33	recreate cgd's and restore data using the new kernel. See
34	(recent message to current-users, URL when mail-index has updated)
35
3620040313:
37	On acorn32, the opms and qms drivers have been withdrawn, and
38	the old wsqms driver is now called qms.  Kernel config files
39	will need updating.  See the ones in sys/arch/acorn32/conf
40	for examples.
41
4220040125:
43	On acorn32, the beep and sysbeep devices are no longer
44	needed, and will need to be deleted from kernel configuration
45	files.
46
4720040109:
48	Compatibility for old ffs superblock layouts has been
49	added, and the restrictive fsck checks have been reenabled
50	when using those layouts.  If you have been using -current
51	since 20030402, you may find that fsck again signals fatal
52	superblock mismatches.  To repair, make sure you have
53	an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4
54	to complete the filesystem upgrade.  A message has
55	been added to the kernel which should detect this problem.
56	See the following discussion for more information:
57	http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html
58
5920031203:
60	New binutils builds may fail due to old dependencies.
61	It's necessary to "make cleandir" to ensure that
62	the dependencies will be rebuilt correctly.
63
6420031111:
65	A newer mkdep is needed.  Error noting that is
66		cc: Ambiguous abbreviation --
67
6820031008:
69	/usr/include/sys/disklabel_mbr.h was removed.
70	It's necessary to "make cleandir" to ensure that
71	the dependencies will be rebuilt correctly.
72
7320031007:
74	A sign exension bug was fixed which set all the high bits
75	of our newly expanded ffs fs_flags.  This should only
76	affect users who installed or upgraded in September of 2003.
77	A small utility program was posted to tech-kern which
78	should fix this problem, and a warning message was added
79	to the kernel which should discover and warn about it.  See
80	http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html
81
8220030906:
83	With the addition of siginfo support the old signal trampoline
84	code has been deprecated to COMPAT_16. Make sure that your running
85	kernel has COMPAT_16 enabled before building userland.
86
8720030801:
88	With the new openssl, there is some header and library shuffling.
89	rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \
90	/usr/lib/libdes* before building.
91
9220030703:
93	Texinfo was updated to 4.6.  To avoid failures when trying to
94	build the included texinfo files, do:
95
96	cd src/gnu/usr.bin/texinfo
97	make MKINFO=no dependall install
98
9920030630:
100	Groff was updated to 1.19; it's probably necessary to do
101		cd share/mk && make install
102		cd src/gnu/usr.bin/groff
103		make MKMAN=no dependall install
104	(untested).
105
10620030516:
107	Due to bugs in the export handling code, invalid export lines
108	were accepted before and caused the kernel to panic when
109	mountd got restarted because it freed memory that had already
110	been freed. This has been fixed and the kernel checks
111	export addresses very strictly. If you upgrade your kernel,
112	make sure you also upgrade mountd, because if your export
113	file contains lines with an old inet4 address syntax (i.e.
114	a.b.c or a.b or a), they will get rejected by the new kernel.
115
11620030402:
117	The superblock layout for FFS was changed.  If you have 1.6
118	fsck binaries, they will signal a fatal superblock mismatch
119	with the first alternate, because they compare too many
120	fields (even ones that aren't useful).  If possible, upgrade
121	your fsck_ffs binary before using a new kernel.
122	None of this signals actual filesystem damage.
123
12420030324:
125	sendmail version 8.12.8 was imported.  Since sendmail is
126	now setgid to the smmsp group, and runs in "collection"
127	mode for most common activities, there is a new config
128	file called submit.cf that needs to live in /etc/mail.
129	The generic submit.cf sample in /usr/share/sendmail/cf
130	is named netbsd-msp.cf.  Upgrading your regular sendmail
131	configuration file is also strongly advised.
132
133	See the section named "MESSAGE SUBMISSION PROGRAM" in
134	the updated /usr/share/sendmail/README file for more
135	information.
136
13720030117:
138	Texinfo was updated to 4.3.  To avoid failures when trying to
139	build the included texinfo files, do:
140
141	cd src/gnu/usr.bin/texinfo
142	make MKINFO=no dependall install
143
14420021223:
145	The METALOG format changed slightly, to remove the leading
146	"${DESTDIR}" from path names.
147	This only affects people building with UNPRIVED.
148	For complete safety, remove the DESTDIR entirely and
149	update tools/mtree, before running make build.
150
15120021219:
152	CVS repository layout was changed.  See the following for details
153	if you are using (anonymous) cvs to update your tree.
154
155	http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html
156
15720021219:
158	install(1) had a '-N dbdir' option added, to specify an
159	alternate location to look up users & groups (instead
160	of the host system passwd(5) and group(5) databases).
161
162	The build system was modified to take advantage of
163	this option (using ${NETBSDSRCDIR}/etc), so if you
164	use USETOOLS==no, you may have to rebuild and
165	reinstall usr.bin/xinstall first.
166
16720021130:
168	fparseln(3) moved from libutil to libc.
169	If building to DESTDIR=/, reinstall the includes
170	and rebuild libc:
171		make includes
172		make do-lib-libc
173	If using build.sh, "cd tools/compat && make clean"
174	before rebuilding the tools.
175
17620021126:
177	The mk.conf(5) variable SYS_INCLUDE has been deprecated,
178	including the optional "SYS_INCLUDE=symlinks" support.
179	All header files, including <sys/*.h> are copied into
180	/usr/include.
181
18220021121:
183	The C run-time support files crtbegin.o and crtend.o
184	(and their companions crtbeginS.o and crtendS.o) were
185	split up, with new crti.o and crtn.o files resulting.
186	This means that libtool needs to be rebuilt once the
187	new libraries are installed.  The process of rebuilding
188	libtool will cause it to automatically notice the new
189	required files, but it *must* be rebuilt in order to
190	do this.
191
192	An out-of-date libtool will result in shared libraries
193	which lack _init() and _fini() routines, which means that
194	their global contructors/destructors will not be invoked.
195
19620021121:
197	A bug related to how ARM ELF objects were tagged has been
198	corrected.
199
200	NetBSD ARM ELF uses the soft-VFP floating point model by
201	default.  However, the assembler lacked support for marking
202	objects as using the VFP floating point format, and the
203	compiler was not properly passing the flag indicating "soft-VFP"
204	to the assembler.
205
206	Unfortunately, this means that the linker will now consider
207	old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
208	incompatible with new (properly marked) objects.
209
210	The problem will only manifest itself if you attempt to compile
211	a new program using the fixed toolchain, and link that program
212	against old libraries which do not have the proper "softvfp"
213	markings.  ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
214	WILL CONTINUE TO WORK PROPERLY.
215
216	The only work-around for the problem is to recompile all of
217	the libraries on the system.  The easiest way to do this for
218	system libraries is to install a binary snapshot; they are
219	generally available on releng.NetBSD.org.  Any packages you
220	have installed which supply libraries will have to be recompiled
221	if you wish to link new programs against those libraries.
222
223	If you have questions about this matter, please contact
224	port-arm@NetBSD.org.
225
22620021011:
227	Systrace has been improved to support privilege elevation.
228	Updating the kernel requires the userland part of systrace
229	to be rebuilt.
230
23120021010:
232	The config(8) grammar was changed to allow options to register
233	dependencies on attributes, as well as other options.  Users
234	must update and reinstall usr.sbin/config before building a new
235	kernel.
236
23720021009:
238	A new attribute dependency syntax was introduced to config(8),
239	which is now used by the SCSI configuration description.  Users
240	must update and reinstall usr.sbin/config before building a new
241	kernel.
242
24320021003:
244	Several changes have been made to the autoconfiguration
245	framework.  Users must update and reinstall usr.sbin/config
246	before building a new kernel.
247
24820021001:
249	The i386mp branch has been merged.  To compile a kernel, users
250	will need to add the option 'cpu* at mainbus?' to their configuration
251	file.  Multiprocessor kernels will need
252	ioapic*		at mainbus? apid ?
253	options		MULTIPROCESSOR
254	options		COM_MPLOCK
255
25620020922:
257	MKDYNAMICROOT=yes enabled by default, which means that
258	certain shared libraries are installed into /lib, the shared
259	linker is installed into /libexec, and all programs in /bin
260	and /sbin are dynamically linked.
261	If you do not use "make build", you should ensure that
262	you have the libraries and shared linker in the new locations,
263	with:
264		make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
265
26620020917:
267	USE_NEW_TOOLCHAIN has been replaced with:
268	    -	TOOLCHAIN_MISSING -- set to "yes" on platforms for which
269		there is no working in-tree toolchain (hppa, ns32k, sh5,
270		x86_64).
271	    -	EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
272		root of an external toolchain (e.g. /usr/local/gnu).  This
273		enables the cross-build framework even for TOOLCHAIN_MISSING
274		platforms.
275
27620020906:
277	gehenna-devsw has been merged into the trunk. Need to update and
278	reinstall usr.sbin/config before building the kernel.
279
28020020822:
281	Crunched rescue tools (contents of /bin and /sbin, plus others)
282	are now provided in /rescue.
283
284	To ensure that these are built statically linked (no matter
285	what the setting of LDSTATIC is), use a crunchgen(1) built
286	from sources newer than 20020820 (see the next entry).
287
28820020820:
289	crunchgen(1) changed to ensure that the generated program
290	is statically linked.
291
292	Solution: update and reinstall usr.bin/crunch
293
29420020605:
295	smmsp user/group has been added for sendmail.
296
297	Add the following into /etc/group:
298
299	smmsp:*:17:
300
301	and the following to /etc/master.passwd (via vipw):
302
303	smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
304
30520020515:
306	sshd user/group has been added.  Need to hand add this in, or sshd
307	will not let you log in (with default, or UsePrivlegeSeparation=yes)
308
309	Add the following into /etc/group:
310
311	sshd:*:16:
312
313	and the following to /etc/master.passwd (via vipw):
314
315	sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
316	
317	Also /var/chroot/sshd directory needs to be present (digged as part of
318	the build process).
319
32020020426:
321	NBUILDJOBS obsoleted in favor of just using -j.
322
32320020426:
324	etc/postinstall added, which performs various checks for 
325	configuration file updates and changes, and can fix most of
326	the problems identified.
327	This should make it much easier to upgrade a system's
328	configuration from earlier systems (as far back as NetBSD 1.5).
329
33020020320:
331	<bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
332	Build and install at usr.bin/xinstall before the build.
333
33420020319:
335	Raw IPv6 socket now makes strict checking for sa_family and sa_len
336	on send(2) operation.  Be sure to have sbin/rtsol and usr.sbin/rtsold
337	newer than November 2001 when you upgrade the kernel.
338
33920020311:
340	ssh configuration files were moved from /etc to /etc/ssh.  Beware
341	if you restart your machine from remote.  Note that sshd.conf needs
342	to be changed (due to the use of "/etc" inside).
343
34420020223:
345	Users of the VAX port will need to rebuild and install gas
346	so it deal with the now present register prefix used in all
347	the VAX assembly files.
348
34920020118:
350	ntpd user/group has been added.  Need to hand add this in or builds
351	will break as mtree aborts early.
352
353	Add the following into /etc/group:
354
355	ntpd:*:15:
356
357	and the following to /etc/master.passwd (via vipw):
358
359	ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
360
36120011207:
362	If you're attempting to build a snapshot on sparc64 and are getting
363	reloc errors from the toolchain groff binary this means your native
364	toolchain has some broken C++ bits.
365
366	To fix:
367
368	Build a new toolchain (i.e. build.sh -t)
369	Use the new toolchain to build and install natively (i.e. /usr/lib)
370
371	gnu/lib/libgcc
372	gnu/lib/libstdc++
373
374	After this a snapshot will be able to be built.
375
37620011201:
377	In order for a sparc64 build to work you must have a working awk. If
378	you've built and installed a system with the new toolchain up to this
379	point you do not have a working awk as its ability to do floating
380	point is broken. 
381
382	To build:
383
384	remake and install gnu/lib/libgcc
385	remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
386	against the new libgcc.a)
387
38820011128:
389	Kernel config information was changed to use defflag in
390	the various "files" files.  Bug fixes to config(8) are
391	required in order for this to work properly.  Make sure
392	to build and install in usr.sbin/config before attempting
393	to build a new kernel.
394
39520011030:
396	libc/locale/wcstod.c now needs new lint(1). Update lint(1)
397	before building libc.
398
39920011029:
400	The new document BUILDING.mdoc (view with nroff | more, or
401	see pre-generated .txt and .html versions) describes the build
402	procedure in great detail.  BUILDING, and the USE_NEW_TOOLCHAIN
403	build process, are intended in the long run to replace this
404	manual update log.
405
406	Users building a USE_NEW_TOOLCHAIN system should read the
407	BUILDING document for caveats.  Generally, BUILDING supersedes
408	UPDATING for these systems, as tool updating is taken care of
409	by the new build system.
410
41120011028:
412	src/etc/Makefile now needs install to be able to handle
413	symlinks that point to nowhere. A bug in install that
414	prevented this was corrected.
415
416	Solution: update and reinstall usr.bin/xinstall
417	Better Solution: Use the new toolchain and it will just work
418	for you.
419
42020011006:
421	/etc/mtree/NetBSD.dist has been updated to take advantage of
422	absolute path support added to mtree(8). Older mtree(8)s don't
423	understand the format.
424
425	Solution: update and reinstall usr.sbin/mtree
426
42720011004:
428	Crunchgen has been updated to work via reach-over makefiles. Updating
429	is suggested before running a snapshot build
430
43120010915:
432	The new "ubcperf" code committed by Chuck Silvers removed
433	a header file, uvm/uvm_vnode.h.  There may be stale .depend
434	files that still reference this file.
435
436	Solution: "make cleandir && make dependall" in affected
437	directories.
438
43920010803:
440	grep.info is now built from grep.texi using makeinfo.  Since it
441	requires makeinfo v4.0, you need to install new texinfo before
442	building gnu/usr.bin/grep.  To install new texinfo, please follow
443	the instruction described in 20010726 entry.
444
44520010803: 
446	(i386 only): i386 kernel now uses new instructions like
447	`fxsave' which old gas doesn't understand.  To build the
448	kernel successfully, you need to build and install a new toolchain, 
449	(i.e., build.sh -t) or 	(temporarily) comment out "options I686_CPU" 
450	from your kernel configuration until you rebuild your userland.
451	See 20011029 above and BUILDING file in this directory for more information.
452	[updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
453
45420010731:
455	Bootloader update on ELF platforms.  DDB in kernels from before
456	this will be unable to read symbol tables provided by newer
457	bootloaders.
458
45920010726:
460	Texinfo was updated to 4.0.  To avoid failures when trying to
461	build the included texinfo files, do:
462
463	cd src/gnu/usr.bin/texinfo
464	make MKINFO=no dependall install
465
46620010718:
467	Enabled correct .init/.fini processing in crt0.  The way this
468	was done was to change a -I directive to cc(1), which means
469	make(1) will have a stale dependency (it will be checking the
470	timestamp on the wrong "dot_init.h").
471
472	The symptom you will see is that new programs die with SIGSEGV
473	if you have a stale dependency.
474
475	Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
476	before starting your build.
477
47820010628:
479	A construct was added to uvm_page.h that uncovered a bug
480	in lint(1).  If you get a warning/error about a non-portable
481	bitfield, update your lint(1) before proceeding.
482
48320010226:
484	Added named user/group to system. Need to hand add this in or builds
485	will break as mtree aborts early.
486
487	To work around add by hand:
488
489	named:*:14:
490
491	to /etc/group and add:
492
493	named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
494
495	to master.passwd (use vipw for instance if doing by hand).
496
497	Now a make build should progress.
498
49920010219:
500	get/setprogname() added. Any hostprogs that may use this will need
501	to be bootstrapped manually until the host system is current.
502
503	Known problems: sys/arch/macppc/stand/fixcoff
504			usr.sbin/config (adding -DMAKE_BOOTSTRAP to
505			  CFLAGS and rebuilding should work)
506			usr.sbin/mdsetimage - Build a static copy if
507			  building a snapshot before fully bootstrapped.
508
50920010204:
510	prepare the code to compile with stricter gcc flags. in
511	particular start eliminating redundant declarations. Yacc
512	needs to be installed before make build.
513
51420010114:
515	introduce .if commands(target) in make(1). You need to
516	bring everything up-to-date first, then without installing
517	anything make and install in usr.bin/make, then proceed
518	with make build.
519
52020010101:
521	bsd.subdir.mk committed 20001230 had a bug which caused
522	afterinstall targets to run too soon; update again.
523
52420001230:
525	New share/mk files needed to support .WAIT in SUBDIR variables.
526	If you get make errors, 
527		(cd share/mk; make install)
528	Also, PRINTOBJDIR has changed and is now used more heavily.
529
53020001019:
531	The `ca' device driver has been replaced by `ld'; although the
532	major and minor numbers haven't changed, you should update your /dev
533	directory.
534
53520000929:
536	The following make directives are obsoleted.
537	MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 
538	By default, RSA is built into libcrypto.  IDEA and RC5 will not be
539	built into libcrypto.  By using MKCRYPTO_{RC5,IDEA}, you can build
540	additional library libcrypto_{idea,rc5}.
541
542
543Hints for a more successful build:
544^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545    Build a new kernel first:
546	This makes sure that any new system calls or features
547	   expected by the new userland will be present.  This
548	   helps to avoid critical errors when upgrading.
549    Use object directories:
550	This helps to keep stale object
551	   files from polluting the build if a Makefile "forgets"
552	   about one.  It also makes it easier to clean up after
553	   a build.  It's also necessary if you want to use the
554	   same source tree for multiple machines.
555	   To use object directories:
556	    a) cd /usr/src ; make cleandir
557	    b) Add "OBJMACHINE=yes" to /etc/mk.conf
558	    c) Add "MKOBJDIRS=yes" to /etc/mk.conf
559	    d) cd /usr/src ; make build
560	   Note that running "make obj" in a directory will create
561	   in obj.$MACHINE directory.
562    Build to a DESTDIR:
563	This helps to keep old
564	   installed files (especially libraries) from interfering
565	   with the new build.
566	   To build to a DESTDIR, set the DESTDIR environment
567	   variable before running make build.  It should be set to
568	   the pathname of an initially empty directory.
569	   Problems: you might need to update critical utilities
570		without using DESTDIR since nothing is executed
571		from what is installed in DESTDIR.
572		(See critical utils, below)
573    Build often:
574	This keeps critical utilities current enough to not choke
575	on any other part of the source tree that depends on up to
576	date functionality.
577 
578What to do if things don't work:
579^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
580When things don't work there is usually a few things that commonly
581should be done.
582    1)	make includes
583	This should be done automatically by make build.
584    2)  cd share/mk && make install
585	Again, automatically done by make build.
586
587Failsafe rebuild of a small part of the tree:
588^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
589To make sure you rebuild something correctly you want to do
590something like the following:
591    1)  Make sure the includes and .mk files are up to date.
592    2)  Make sure any program used to build the particular
593	utility is up to date.  (yacc, lex, etc...)
594    3)  cd ...path/to/util...
595	make cleandir
596	rm ...all obj directories...
597	make cleandir			# yes, again
598	make obj
599	make depend && make
600
601Failsafe rebuild of the entire tree:
602^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
603If you really want to make sure the source tree is clean and
604ready for a build try the following.  Note that sourcing /etc/mk.conf
605(a make(1) Makefile) in this manner is not right, and will not work
606for anyone who uses any make(1) features in /etc/mk.conf.
607
608---cut here---
609#!/bin/sh
610. /etc/mk.conf
611
612if [ -z $NETBSDSRCDIR ] ; then
613    NETBSDSRCDIR=/usr/src
614fi
615if [ \! -d $NETBSDSRCDIR ] ; then
616    echo Unable to find sources
617    exit 1
618fi
619find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
620
621if [ -z $BSDOBJDIR ] ; then
622    BSDOBJDIR=/usr/obj
623fi
624if [ -d $BSDOBJDIR ] ; then
625    rm -rf $BSDOBJDIR
626fi
627
628cd $NETBSDSRCDIR && make cleandir
629
630---cut here---
631
632Critical utilities:
633^^^^^^^^^^^^^^^^^^^
634	gnu/usr.bin/egcs
635	usr.bin/compile_et
636	usr.bin/make
637	usr.bin/yacc
638	usr.bin/lex
639	usr.bin/xlint
640	usr.sbin/config
641
642Other problems and possible solutions:
643^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
644Symptom:Unreasonable compiler errors.
645Fix:	Rebuild gnu/usr.bin/egcs
646
647Symptom:Complaints involving a Makefile.
648Fix:	Rebuild usr.bin/make:
649	cd usr.bin/make && make && make install
650	Or, a failsafe method if that doesn't work:
651	cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
652
653Fix:	Make sure .mk files are up to date.
654	cd share/mk && make install
655
656Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
657Fix:	Rebuild usr.sbin/config
658
659Symptom:
660Fix:	Rebuild usr.bin/yacc
661
662Symptom:
663Fix:	Rebuild usr.bin/lex
664
665Symptom:
666Fix:	rm /usr/lib/libbfd.a
667
668Symptom:Obsolete intermediate files are used during compilation
669Fix:	Try the following sequence of commands in the directory in question.
670	make cleandir; rm `make print-objdir`; make cleandir; make obj
671	(If you built the tree without "make obj" in the past, obsolete files
672	may remain.  The command tries to clean everything up)
673
674Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
675Fix:	Rebuild and install usr.bin/menuc
676
677Symptom:mklocale not found during build in share/locale/ctype
678Fix:	Build and install usr.bin/mklocale
679
680Symptom:undefined reference to `__assert13' or `__unsetenv13'
681Fix:    Rebuild and install lib/libc
682
683Symptom:usr.sbin/config fails to build.
684Fix:	Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
685
686Symptom:undefined reference to `getprogname' or `setprogname'
687Fix:    Rebuild and install lib/libc
688
689Symptom:lint does not understand the '-X' option
690Fix:    May need to build & install libs with NOLINT=1 before rebuilding lint
691