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