Improve error message when failing to open a backing file
[freebsd.git] / UPDATING
1 Updating Information for FreeBSD current users.
2
3 This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4 See end of file for further details.  For commonly done items, please see the
5 COMMON ITEMS: section later in the file.  These instructions assume that you
6 basically know what you are doing.  If not, then please consult the FreeBSD
7 handbook:
8
9     http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
10
11 Items affecting the ports and packages system can be found in
12 /usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14 NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping
15 from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
16 the tip of head, and then rebuild without this option. The bootstrap process
17 from older version of current across the gcc/clang cutover is a bit fragile.
18
19 NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
20         FreeBSD 11.x has many debugging features turned on, in both the kernel
21         and userland.  These features attempt to detect incorrect use of
22         system primitives, and encourage loud failure through extra sanity
23         checking and fail stop semantics.  They also substantially impact
24         system performance.  If you want to do performance measurement,
25         benchmarking, and optimization, you'll want to turn them off.  This
26         includes various WITNESS- related kernel options, INVARIANTS, malloc
27         debugging flags in userland, and various verbose features in the
28         kernel.  Many developers choose to disable these features on build
29         machines to maximize performance.  (To completely disable malloc
30         debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
31         disable the most expensive debugging functionality run
32         "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
33
34 20160523:
35         The bitstring(3) API has been updated with new functionality and
36         improved performance.  But it is binary-incompatible with the old API.
37         Objects built with the new headers may not be linked against objects
38         built with the old headers.
39
40 20160520:
41         The brk and sbrk functions have been removed from libc on arm64.
42         Binutils from ports has been updated to not link to these
43         functions and should be updated to the latest version before
44         installing a new libc.
45
46 20160517:
47         The armv6 port now defaults to hard float ABI. Limited support
48         for running both hardfloat and soft float on the same system
49         is available using the libraries installed with -DWITH_LIBSOFT.
50         This has only been tested as an upgrade path for installworld
51         and packages may fail or need manual intervention to run. New
52         packages will be needed.
53
54         To update an existing self-hosted armv6hf system, you must add
55         TARGET_ARCH=armv6 on the make command line for both the build 
56         and the install steps.
57
58 20160510:
59         Kernel modules compiled outside of a kernel build now default to
60         installing to /boot/modules instead of /boot/kernel.  Many kernel
61         modules built this way (such as those in ports) already overrode
62         KMODDIR explicitly to install into /boot/modules.  However,
63         manually building and installing a module from /sys/modules will
64         now install to /boot/modules instead of /boot/kernel.
65
66 20160414:
67         The CAM I/O scheduler has been committed to the kernel. There should be
68         no user visible impact. This does enable NCQ Trim on ada SSDs. While the
69         list of known rogues that claim support for this but actually corrupt
70         data is believed to be complete, be on the lookout for data
71         corruption. The known rogue list is believed to be complete:
72
73                 o Crucial MX100, M550 drives with MU01 firmware.
74                 o Micron M510 and M550 drives with MU01 firmware.
75                 o Micron M500 prior to MU07 firmware
76                 o Samsung 830, 840, and 850 all firmwares
77                 o FCCT M500 all firmwares
78
79         Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
80         with working NCQ TRIM. For Micron branded drives, see your sales rep for
81         updated firmware. Black listed drives will work correctly because these
82         drives work correctly so long as no NCQ TRIMs are sent to them. Given
83         this list is the same as found in Linux, it's believed there are no
84         other rogues in the market place. All other models from the above
85         vendors work.
86
87         To be safe, if you are at all concerned, you can quirk each of your
88         drives to prevent NCQ from being sent by setting:
89                 kern.cam.ada.X.quirks="0x2"
90         in loader.conf. If the drive requires the 4k sector quirk, set the
91         quirks entry to 0x3.
92
93 20160330:
94         The FAST_DEPEND build option has been removed and its functionality is
95         now the one true way.  The old mkdep(1) style of 'make depend' has
96         been removed.  See 20160311 for further details.
97
98 20160317:
99         Resource range types have grown from unsigned long to uintmax_t.  All
100         drivers, and anything using libdevinfo, need to be recompiled.
101
102 20160311:
103         WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
104         builds.  It no longer runs mkdep(1) during 'make depend', and the
105         'make depend' stage can safely be skipped now as it is auto ran
106         when building 'make all' and will generate all SRCS and DPSRCS before
107         building anything else.  Dependencies are gathered at compile time with
108         -MF flags kept in separate .depend files per object file.  Users should
109         run 'make cleandepend' once if using -DNO_CLEAN to clean out older
110         stale .depend files.
111
112 20160306:
113         On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
114         kernel modules.  Therefore, if you load any kernel modules at boot time,
115         please install the boot loaders after you install the kernel, but before
116         rebooting, e.g.:
117
118         make buildworld
119         make kernel KERNCONF=YOUR_KERNEL_HERE
120         make -C sys/boot install
121         <reboot in single user>
122
123         Then follow the usual steps, described in the General Notes section,
124         below.
125
126 20160305:
127         Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0.  Please
128         see the 20141231 entry below for information about prerequisites and
129         upgrading, if you are not already using clang 3.5.0 or higher.
130
131 20160301:
132         The AIO subsystem is now a standard part of the kernel.  The
133         VFS_AIO kernel option and aio.ko kernel module have been removed.
134         Due to stability concerns, asynchronous I/O requests are only
135         permitted on sockets and raw disks by default.  To enable
136         asynchronous I/O requests on all file types, set the
137         vfs.aio.enable_unsafe sysctl to a non-zero value.
138
139 20160226:
140         The ELF object manipulation tool objcopy is now provided by the
141         ELF Tool Chain project rather than by GNU binutils. It should be a
142         drop-in replacement, with the addition of arm64 support. The
143         (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
144         to obtain the GNU version if necessary.
145
146 20160129:
147         Building ZFS pools on top of zvols is prohibited by default.  That
148         feature has never worked safely; it's always been prone to deadlocks.
149         Using a zvol as the backing store for a VM guest's virtual disk will
150         still work, even if the guest is using ZFS.  Legacy behavior can be
151         restored by setting vfs.zfs.vol.recursive=1.
152
153 20160119:
154         The NONE and HPN patches has been removed from OpenSSH.  They are
155         still available in the security/openssh-portable port.
156
157 20160113:
158         With the addition of ypldap(8), a new _ypldap user is now required
159         during installworld. "mergemaster -p" can be used to add the user
160         prior to installworld, as documented in the handbook.
161
162 20151216:
163         The tftp loader (pxeboot) now uses the option root-path directive. As a
164         consequence it no longer looks for a pxeboot.4th file on the tftp
165         server. Instead it uses the regular /boot infrastructure as with the
166         other loaders.
167
168 20151211:
169         The code to start recording plug and play data into the modules has
170         been committed. While the old tools will properly build a new kernel,
171         a number of warnings about "unknown metadata record 4" will be produced
172         for an older kldxref. To avoid such warnings, make sure to rebuild
173         the kernel toolchain (or world). Make sure that you have r292078 or
174         later when trying to build 292077 or later before rebuilding.
175
176 20151207:
177         Debug data files are now built by default with 'make buildworld' and
178         installed with 'make installworld'. This facilitates debugging but
179         requires more disk space both during the build and for the installed
180         world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
181         in src.conf(5).
182
183 20151130:
184         r291527 changed the internal interface between the nfsd.ko and
185         nfscommon.ko modules. As such, they must both be upgraded to-gether.
186         __FreeBSD_version has been bumped because of this.
187
188 20151108:
189         Add support for unicode collation strings leads to a change of
190         order of files listed by ls(1) for example. To get back to the old
191         behaviour, set LC_COLLATE environment variable to "C".
192
193         Databases administrators will need to reindex their databases given
194         collation results will be different.
195
196         Due to a bug in install(1) it is recommended to remove the ancient
197         locales before running make installworld.
198
199         rm -rf /usr/share/locale/*
200
201 20151030:
202         The OpenSSL has been upgraded to 1.0.2d.  Any binaries requiring
203         libcrypto.so.7 or libssl.so.7 must be recompiled.
204
205 20151020:
206         Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
207         Kernel modules isp_2400_multi and isp_2500_multi were removed and
208         should be replaced with isp_2400 and isp_2500 modules respectively.
209
210 20151017:
211         The build previously allowed using 'make -n' to not recurse into
212         sub-directories while showing what commands would be executed, and
213         'make -n -n' to recursively show commands.  Now 'make -n' will recurse
214         and 'make -N' will not.
215
216 20151012:
217         If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
218         and etcupdate will now use this file. A custom sendmail.cf is now
219         updated via this mechanism rather than via installworld.  If you had
220         excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
221         want to remove the exclusion or change it to "always install".
222         /etc/mail/sendmail.cf is now managed the same way regardless of
223         whether SENDMAIL_MC/SENDMAIL_CF is used.  If you are not using
224         SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
225
226 20151011:
227         Compatibility shims for legacy ATA device names have been removed.
228         It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
229         and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
230         environment variables, /dev/ad* and /dev/ar* symbolic links.
231
232 20151006:
233         Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
234         Please see the 20141231 entry below for information about prerequisites
235         and upgrading, if you are not already using clang 3.5.0 or higher.
236
237 20150924:
238         Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
239         and renamed from .symbols to .debug. This reduces the size requirements
240         on the boot partition or file system and provides consistency with
241         userland debug files.
242
243         When using the supported kernel installation method the
244         /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
245         as is done with /boot/kernel.
246
247         Developers wishing to maintain the historical behavior of installing
248         debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
249
250 20150827:
251         The wireless drivers had undergone changes that remove the 'parent
252         interface' from the ifconfig -l output. The rc.d network scripts
253         used to check presence of a parent interface in the list, so old
254         scripts would fail to start wireless networking. Thus, etcupdate(3)
255         or mergemaster(8) run is required after kernel update, to update your
256         rc.d scripts in /etc.
257
258 20150827:
259         pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
260         These configurations are now automatically interpreted as
261         'scrub fragment reassemble'.
262
263 20150817:
264         Kernel-loadable modules for the random(4) device are back. To use
265         them, the kernel must have
266
267         device  random
268         options RANDOM_LOADABLE
269
270         kldload(8) can then be used to load random_fortuna.ko
271         or random_yarrow.ko. Please note that due to the indirect
272         function calls that the loadable modules need to provide,
273         the build-in variants will be slightly more efficient.
274
275         The random(4) kernel option RANDOM_DUMMY has been retired due to
276         unpopularity. It was not all that useful anyway.
277
278 20150813:
279         The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
280         Control over building the ELF Tool Chain tools is now provided by
281         the WITHOUT_TOOLCHAIN knob.
282
283 20150810:
284         The polarity of Pulse Per Second (PPS) capture events with the
285         uart(4) driver has been corrected.  Prior to this change the PPS
286         "assert" event corresponded to the trailing edge of a positive PPS
287         pulse and the "clear" event was the leading edge of the next pulse.
288
289         As the width of a PPS pulse in a typical GPS receiver is on the
290         order of 1 millisecond, most users will not notice any significant
291         difference with this change.
292
293         Anyone who has compensated for the historical polarity reversal by
294         configuring a negative offset equal to the pulse width will need to
295         remove that workaround.
296
297 20150809:
298         The default group assigned to /dev/dri entries has been changed
299         from 'wheel' to 'video' with the id of '44'. If you want to have
300         access to the dri devices please add yourself to the video group
301         with:
302
303         # pw groupmod video -m $USER
304
305 20150806:
306         The menu.rc and loader.rc files will now be replaced during 
307         upgrades. Please migrate local changes to menu.rc.local and
308         loader.rc.local instead.
309
310 20150805:
311         GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
312         strings and strip have been removed. The src.conf(5) knob
313         WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
314
315 20150728:
316         As ZFS requires more kernel stack pages than is the default on some
317         architectures e.g. i386, it now warns if KSTACK_PAGES is less than
318         ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
319
320         Please consider using 'options KSTACK_PAGES=X' where X is greater
321         than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
322
323 20150706:
324         sendmail has been updated to 8.15.2.  Starting with FreeBSD 11.0
325         and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
326         default, i.e., they will not contain "::".  For example, instead
327         of ::1, it will be 0:0:0:0:0:0:0:1.  This permits a zero subnet
328         to have a more specific match, such as different map entries for
329         IPv6:0:0 vs IPv6:0.  This change requires that configuration
330         data (including maps, files, classes, custom ruleset, etc.) must
331         use the same format, so make certain such configuration data is
332         upgrading.  As a very simple check search for patterns like
333         'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'.  To return to the old
334         behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
335         the cf option UseCompressedIPv6Addresses.
336
337 20150630:
338         The default kernel entropy-processing algorithm is now
339         Fortuna, replacing Yarrow.
340
341         Assuming you have 'device random' in your kernel config
342         file, the configurations allow a kernel option to override
343         this default. You may choose *ONE* of:
344
345         options RANDOM_YARROW   # Legacy /dev/random algorithm.
346         options RANDOM_DUMMY    # Blocking-only driver.
347
348         If you have neither, you get Fortuna.  For most people,
349         read no further, Fortuna will give a /dev/random that works
350         like it always used to, and the difference will be irrelevant.
351
352         If you remove 'device random', you get *NO* kernel-processed
353         entropy at all. This may be acceptable to folks building
354         embedded systems, but has complications. Carry on reading,
355         and it is assumed you know what you need.
356
357         *PLEASE* read random(4) and random(9) if you are in the
358         habit of tweaking kernel configs, and/or if you are a member
359         of the embedded community, wanting specific and not-usual
360         behaviour from your security subsystems.
361
362         NOTE!! If you use RANDOM_DUMMY and/or have no 'device
363         random', you will NOT have a functioning /dev/random, and
364         many cryptographic features will not work, including SSH.
365         You may also find strange behaviour from the random(3) set
366         of library functions, in particular sranddev(3), srandomdev(3)
367         and arc4random(3). The reason for this is that the KERN_ARND
368         sysctl only returns entropy if it thinks it has some to
369         share, and with RANDOM_DUMMY or no 'device random' this
370         will never happen.
371
372 20150623:
373         An additional fix for the issue described in the 20150614 sendmail
374         entry below has been been committed in revision 284717.
375
376 20150616:
377         FreeBSD's old make (fmake) has been removed from the system. It is
378         available as the devel/fmake port or via pkg install fmake.
379
380 20150615:
381         The fix for the issue described in the 20150614 sendmail entry
382         below has been been committed in revision 284436.  The work
383         around described in that entry is no longer needed unless the
384         default setting is overridden by a confDH_PARAMETERS configuration
385         setting of '5' or pointing to a 512 bit DH parameter file.
386
387 20150614:
388         ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
389         atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
390         and devel/kyua to version 0.20+ and adjust any calling code to work
391         with Kyuafile and kyua.
392
393 20150614:
394         The import of openssl to address the FreeBSD-SA-15:10.openssl
395         security advisory includes a change which rejects handshakes
396         with DH parameters below 768 bits.  sendmail releases prior
397         to 8.15.2 (not yet released), defaulted to a 512 bit
398         DH parameter setting for client connections.  To work around
399         this interoperability, sendmail can be configured to use a
400         2048 bit DH parameter by:
401
402         1. Edit /etc/mail/`hostname`.mc
403         2. If a setting for confDH_PARAMETERS does not exist or
404            exists and is set to a string beginning with '5',
405            replace it with '2'.
406         3. If a setting for confDH_PARAMETERS exists and is set to
407            a file path, create a new file with:
408                 openssl dhparam -out /path/to/file 2048
409         4. Rebuild the .cf file:
410                 cd /etc/mail/; make; make install
411         5. Restart sendmail:
412                 cd /etc/mail/; make restart
413
414         A sendmail patch is coming, at which time this file will be
415         updated.
416
417 20150604:
418         Generation of legacy formatted entries have been disabled by default
419         in pwd_mkdb(8), as all base system consumers of the legacy formatted
420         entries were converted to use the new format by default when the new,
421         machine independent format have been added and supported since FreeBSD
422         5.x.
423
424         Please see the pwd_mkdb(8) manual page for further details.
425
426 20150525:
427         Clang and llvm have been upgraded to 3.6.1 release.  Please see the
428         20141231 entry below for information about prerequisites and upgrading,
429         if you are not already using 3.5.0 or higher.
430
431 20150521:
432         TI platform code switched to using vendor DTS files and this update
433         may break existing systems running on Beaglebone, Beaglebone Black,
434         and Pandaboard:
435
436         - dtb files should be regenerated/reinstalled. Filenames are the
437           same but content is different now
438         - GPIO addressing was changed, now each GPIO bank (32 pins per bank)
439           has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
440           addressing scheme is now pin 25 on /dev/gpioc3.
441         - Pandaboard: /etc/ttys should be updated, serial console device is
442           now /dev/ttyu2, not /dev/ttyu0
443
444 20150501:
445         soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
446         If you need the GNU extension from groff soelim(1), install groff
447         from package: pkg install groff, or via ports: textproc/groff.
448
449 20150423:
450         chmod, chflags, chown and chgrp now affect symlinks in -R mode as
451         defined in symlink(7); previously symlinks were silently ignored.
452
453 20150415:
454         The const qualifier has been removed from iconv(3) to comply with
455         POSIX.  The ports tree is aware of this from r384038 onwards.
456
457 20150416:
458         Libraries specified by LIBADD in Makefiles must have a corresponding
459         DPADD_<lib> variable to ensure correct dependencies.  This is now
460         enforced in src.libnames.mk.
461
462 20150324:
463         From legacy ata(4) driver was removed support for SATA controllers
464         supported by more functional drivers ahci(4), siis(4) and mvs(4).
465         Kernel modules ataahci and ataadaptec were removed completely,
466         replaced by ahci and mvs modules respectively.
467
468 20150315:
469         Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
470         the 20141231 entry below for information about prerequisites and
471         upgrading, if you are not already using 3.5.0 or higher.
472
473 20150307:
474         The 32-bit PowerPC kernel has been changed to a position-independent
475         executable. This can only be booted with a version of loader(8)
476         newer than January 31, 2015, so make sure to update both world and
477         kernel before rebooting.
478
479 20150217:
480         If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
481         but before r278950, the RNG was not seeded properly.  Immediately
482         upgrade the kernel to r278950 or later and regenerate any keys (e.g.
483         ssh keys or openssl keys) that were generated w/ a kernel from that
484         range.  This does not affect programs that directly used /dev/random
485         or /dev/urandom.  All userland uses of arc4random(3) are affected.
486
487 20150210:
488         The autofs(4) ABI was changed in order to restore binary compatibility
489         with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
490         with the new kernel.
491
492 20150131:
493         The powerpc64 kernel has been changed to a position-independent
494         executable. This can only be booted with a new version of loader(8),
495         so make sure to update both world and kernel before rebooting.
496
497 20150118:
498         Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
499         only release, no new features have been added.  Please see the 20141231
500         entry below for information about prerequisites and upgrading, if you
501         are not already using 3.5.0.
502
503 20150107:
504         ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
505         taken from the ELF Tool Chain project rather than GNU binutils. They
506         should be drop-in replacements, with the addition of arm64 support.
507         The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
508         binutils tools, if necessary. See 20150805 for updated information.
509
510 20150105:
511         The default Unbound configuration now enables remote control
512         using a local socket.  Users who have already enabled the
513         local_unbound service should regenerate their configuration
514         by running "service local_unbound setup" as root.
515
516 20150102:
517         The GNU texinfo and GNU info pages have been removed.
518         To be able to view GNU info pages please install texinfo from ports.
519
520 20141231:
521         Clang, llvm and lldb have been upgraded to 3.5.0 release.
522
523         As of this release, a prerequisite for building clang, llvm and lldb is
524         a C++11 capable compiler and C++11 standard library.  This means that to
525         be able to successfully build the cross-tools stage of buildworld, with
526         clang as the bootstrap compiler, your system compiler or cross compiler
527         should either be clang 3.3 or later, or gcc 4.8 or later, and your
528         system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
529         later.
530
531         On any standard FreeBSD 10.x or 11.x installation, where clang and
532         libc++ are on by default (that is, on x86 or arm), this should work out
533         of the box.
534
535         On 9.x installations where clang is enabled by default, e.g. on x86 and
536         powerpc, libc++ will not be enabled by default, so libc++ should be
537         built (with clang) and installed first.  If both clang and libc++ are
538         missing, build clang first, then use it to build libc++.
539
540         On 8.x and earlier installations, upgrade to 9.x first, and then follow
541         the instructions for 9.x above.
542
543         Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
544         default, and do not build clang.
545
546         Many embedded systems are resource constrained, and will not be able to
547         build clang in a reasonable time, or in some cases at all.  In those
548         cases, cross building bootable systems on amd64 is a workaround.
549
550         This new version of clang introduces a number of new warnings, of which
551         the following are most likely to appear:
552
553         -Wabsolute-value
554
555         This warns in two cases, for both C and C++:
556         * When the code is trying to take the absolute value of an unsigned
557           quantity, which is effectively a no-op, and almost never what was
558           intended.  The code should be fixed, if at all possible.  If you are
559           sure that the unsigned quantity can be safely cast to signed, without
560           loss of information or undefined behavior, you can add an explicit
561           cast, or disable the warning.
562
563         * When the code is trying to take an absolute value, but the called
564           abs() variant is for the wrong type, which can lead to truncation.
565           If you want to disable the warning instead of fixing the code, please
566           make sure that truncation will not occur, or it might lead to unwanted
567           side-effects.
568
569         -Wtautological-undefined-compare and
570         -Wundefined-bool-conversion
571
572         These warn when C++ code is trying to compare 'this' against NULL, while
573         'this' should never be NULL in well-defined C++ code.  However, there is
574         some legacy (pre C++11) code out there, which actively abuses this
575         feature, which was less strictly defined in previous C++ versions.
576
577         Squid and openjdk do this, for example.  The warning can be turned off
578         for C++98 and earlier, but compiling the code in C++11 mode might result
579         in unexpected behavior; for example, the parts of the program that are
580         unreachable could be optimized away.
581
582 20141222:
583         The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
584         kernel sources have been removed. The .h files remain, since some
585         utilities include them. This will need to be fixed later.
586         If "mount -t oldnfs ..." is attempted, it will fail.
587         If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
588         the utilities will report errors.
589
590 20141121:
591         The handling of LOCAL_LIB_DIRS has been altered to skip addition of
592         directories to top level SUBDIR variable when their parent
593         directory is included in LOCAL_DIRS.  Users with build systems with
594         such hierarchies and without SUBDIR entries in the parent
595         directory Makefiles should add them or add the directories to
596         LOCAL_DIRS.
597
598 20141109:
599         faith(4) and faithd(8) have been removed from the base system. Faith
600         has been obsolete for a very long time.
601
602 20141104:
603         vt(4), the new console driver, is enabled by default. It brings
604         support for Unicode and double-width characters, as well as
605         support for UEFI and integration with the KMS kernel video
606         drivers.
607
608         You may need to update your console settings in /etc/rc.conf,
609         most probably the keymap. During boot, /etc/rc.d/syscons will
610         indicate what you need to do.
611
612         vt(4) still has issues and lacks some features compared to
613         syscons(4). See the wiki for up-to-date information:
614           https://wiki.freebsd.org/Newcons
615
616         If you want to keep using syscons(4), you can do so by adding
617         the following line to /boot/loader.conf:
618           kern.vty=sc
619
620 20141102:
621         pjdfstest has been integrated into kyua as an opt-in test suite.
622         Please see share/doc/pjdfstest/README for more details on how to
623         execute it.
624
625 20141009:
626         gperf has been removed from the base system for architectures
627         that use clang. Ports that require gperf will obtain it from the
628         devel/gperf port.
629
630 20140923:
631         pjdfstest has been moved from tools/regression/pjdfstest to
632         contrib/pjdfstest .
633
634 20140922:
635         At svn r271982, The default linux compat kernel ABI has been adjusted
636         to 2.6.18 in support of the linux-c6 compat ports infrastructure
637         update.  If you wish to continue using the linux-f10 compat ports,
638         add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
639         encouraged to update their linux-compat packages to linux-c6 during
640         their next update cycle.
641
642 20140729:
643         The ofwfb driver, used to provide a graphics console on PowerPC when
644         using vt(4), no longer allows mmap() of all physical memory. This
645         will prevent Xorg on PowerPC with some ATI graphics cards from
646         initializing properly unless x11-servers/xorg-server is updated to
647         1.12.4_8 or newer.
648
649 20140723:
650         The xdev targets have been converted to using TARGET and
651         TARGET_ARCH instead of XDEV and XDEV_ARCH.
652
653 20140719:
654         The default unbound configuration has been modified to address
655         issues with reverse lookups on networks that use private
656         address ranges.  If you use the local_unbound service, run
657         "service local_unbound setup" as root to regenerate your
658         configuration, then "service local_unbound reload" to load the
659         new configuration.
660
661 20140709:
662         The GNU texinfo and GNU info pages are not built and installed
663         anymore, WITH_INFO knob has been added to allow to built and install
664         them again.
665         UPDATE: see 20150102 entry on texinfo's removal
666
667 20140708:
668         The GNU readline library is now an INTERNALLIB - that is, it is
669         statically linked into consumers (GDB and variants) in the base
670         system, and the shared library is no longer installed.  The
671         devel/readline port is available for third party software that
672         requires readline.
673
674 20140702:
675         The Itanium architecture (ia64) has been removed from the list of
676         known architectures. This is the first step in the removal of the
677         architecture.
678
679 20140701:
680         Commit r268115 has added NFSv4.1 server support, merged from
681         projects/nfsv4.1-server.  Since this includes changes to the
682         internal interfaces between the NFS related modules, a full
683         build of the kernel and modules will be necessary.
684         __FreeBSD_version has been bumped.
685
686 20140629:
687         The WITHOUT_VT_SUPPORT kernel config knob has been renamed
688         WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
689         which differs from the behaviour controlled by this knob.)
690
691 20140619:
692         Maximal length of the serial number in CTL was increased from 16 to
693         64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
694         and ctld, need to be rebuilt to work with a new kernel.
695
696 20140606:
697         The libatf-c and libatf-c++ major versions were downgraded to 0 and
698         1 respectively to match the upstream numbers.  They were out of
699         sync because, when they were originally added to FreeBSD, the
700         upstream versions were not respected.  These libraries are private
701         and not yet built by default, so renumbering them should be a
702         non-issue.  However, unclean source trees will yield broken test
703         programs once the operator executes "make delete-old-libs" after a
704         "make installworld".
705
706         Additionally, the atf-sh binary was made private by moving it into
707         /usr/libexec/.  Already-built shell test programs will keep the
708         path to the old binary so they will break after "make delete-old"
709         is run.
710
711         If you are using WITH_TESTS=yes (not the default), wipe the object
712         tree and rebuild from scratch to prevent spurious test failures.
713         This is only needed once: the misnumbered libraries and misplaced
714         binaries have been added to OptionalObsoleteFiles.inc so they will
715         be removed during a clean upgrade.
716
717 20140512:
718         Clang and llvm have been upgraded to 3.4.1 release.
719
720 20140508:
721         We bogusly installed src.opts.mk in /usr/share/mk. This file should
722         be removed to avoid issues in the future (and has been added to
723         ObsoleteFiles.inc).
724
725 20140505:
726         /etc/src.conf now affects only builds of the FreeBSD src tree. In the
727         past, it affected all builds that used the bsd.*.mk files. The old
728         behavior was a bug, but people may have relied upon it. To get this
729         behavior back, you can .include /etc/src.conf from /etc/make.conf
730         (which is still global and isn't changed). This also changes the
731         behavior of incremental builds inside the tree of individual
732         directories. Set MAKESYSPATH to ".../share/mk" to do that.
733         Although this has survived make universe and some upgrade scenarios,
734         other upgrade scenarios may have broken. At least one form of
735         temporary breakage was fixed with MAKESYSPATH settings for buildworld
736         as well... In cases where MAKESYSPATH isn't working with this
737         setting, you'll need to set it to the full path to your tree.
738
739         One side effect of all this cleaning up is that bsd.compiler.mk
740         is no longer implicitly included by bsd.own.mk. If you wish to
741         use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
742         as well.
743
744 20140430:
745         The lindev device has been removed since /dev/full has been made a
746         standard device.  __FreeBSD_version has been bumped.
747
748 20140424:
749         The knob WITHOUT_VI was added to the base system, which controls
750         building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
751         in order to reorder files share/termcap and didn't build ex(1) as a
752         build tool, so building/installing with WITH_VI is highly advised for
753         build hosts for older releases.
754
755         This issue has been fixed in stable/9 and stable/10 in r277022 and
756         r276991, respectively.
757
758 20140418:
759         The YES_HESIOD knob has been removed. It has been obsolete for
760         a decade. Please move to using WITH_HESIOD instead or your builds
761         will silently lack HESIOD.
762
763 20140405:
764         The uart(4) driver has been changed with respect to its handling
765         of the low-level console. Previously the uart(4) driver prevented
766         any process from changing the baudrate or the CLOCAL and HUPCL
767         control flags. By removing the restrictions, operators can make
768         changes to the serial console port without having to reboot.
769         However, when getty(8) is started on the serial device that is
770         associated with the low-level console, a misconfigured terminal
771         line in /etc/ttys will now have a real impact.
772         Before upgrading the kernel, make sure that /etc/ttys has the
773         serial console device configured as 3wire without baudrate to
774         preserve the previous behaviour. E.g:
775             ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
776
777 20140306:
778         Support for libwrap (TCP wrappers) in rpcbind was disabled by default
779         to improve performance.  To re-enable it, if needed, run rpcbind
780         with command line option -W.
781
782 20140226:
783         Switched back to the GPL dtc compiler due to updates in the upstream
784         dts files not being supported by the BSDL dtc compiler. You will need
785         to rebuild your kernel toolchain to pick up the new compiler. Core dumps
786         may result while building dtb files during a kernel build if you fail
787         to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
788
789 20140216:
790         Clang and llvm have been upgraded to 3.4 release.
791
792 20140216:
793         The nve(4) driver has been removed.  Please use the nfe(4) driver
794         for NVIDIA nForce MCP Ethernet adapters instead.
795
796 20140212:
797         An ABI incompatibility crept into the libc++ 3.4 import in r261283.
798         This could cause certain C++ applications using shared libraries built
799         against the previous version of libc++ to crash.  The incompatibility
800         has now been fixed, but any C++ applications or shared libraries built
801         between r261283 and r261801 should be recompiled.
802
803 20140204:
804         OpenSSH will now ignore errors caused by kernel lacking of Capsicum
805         capability mode support.  Please note that enabling the feature in
806         kernel is still highly recommended.
807
808 20140131:
809         OpenSSH is now built with sandbox support, and will use sandbox as
810         the default privilege separation method.  This requires Capsicum
811         capability mode support in kernel.
812
813 20140128:
814         The libelf and libdwarf libraries have been updated to newer
815         versions from upstream. Shared library version numbers for
816         these two libraries were bumped. Any ports or binaries
817         requiring these two libraries should be recompiled.
818         __FreeBSD_version is bumped to 1100006.
819
820 20140110:
821         If a Makefile in a tests/ directory was auto-generating a Kyuafile
822         instead of providing an explicit one, this would prevent such
823         Makefile from providing its own Kyuafile in the future during
824         NO_CLEAN builds.  This has been fixed in the Makefiles but manual
825         intervention is needed to clean an objdir if you use NO_CLEAN:
826           # find /usr/obj -name Kyuafile | xargs rm -f
827
828 20131213:
829         The behavior of gss_pseudo_random() for the krb5 mechanism
830         has changed, for applications requesting a longer random string
831         than produced by the underlying enctype's pseudo-random() function.
832         In particular, the random string produced from a session key of
833         enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
834         be different at the 17th octet and later, after this change.
835         The counter used in the PRF+ construction is now encoded as a
836         big-endian integer in accordance with RFC 4402.
837         __FreeBSD_version is bumped to 1100004.
838
839 20131108:
840         The WITHOUT_ATF build knob has been removed and its functionality
841         has been subsumed into the more generic WITHOUT_TESTS.  If you were
842         using the former to disable the build of the ATF libraries, you
843         should change your settings to use the latter.
844
845 20131025:
846         The default version of mtree is nmtree which is obtained from
847         NetBSD.  The output is generally the same, but may vary
848         slightly.  If you found you need identical output adding
849         "-F freebsd9" to the command line should do the trick.  For the
850         time being, the old mtree is available as fmtree.
851
852 20131014:
853         libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
854         This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
855         1.1.4_8 and verify bsdyml not linked in, before running "make
856         delete-old-libs":
857           # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
858           or
859           # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
860
861 20131010:
862         The stable/10 branch has been created in subversion from head
863         revision r256279.
864
865 20131010:
866         The rc.d/jail script has been updated to support jail(8)
867         configuration file.  The "jail_<jname>_*" rc.conf(5) variables
868         for per-jail configuration are automatically converted to
869         /var/run/jail.<jname>.conf before the jail(8) utility is invoked.
870         This is transparently backward compatible.  See below about some
871         incompatibilities and rc.conf(5) manual page for more details.
872
873         These variables are now deprecated in favor of jail(8) configuration
874         file.  One can use "rc.d/jail config <jname>" command to generate
875         a jail(8) configuration file in /var/run/jail.<jname>.conf without
876         running the jail(8) utility.   The default pathname of the
877         configuration file is /etc/jail.conf and can be specified by
878         using $jail_conf or $jail_<jname>_conf variables.
879
880         Please note that jail_devfs_ruleset accepts an integer at
881         this moment.  Please consider to rewrite the ruleset name
882         with an integer.
883
884 20130930:
885         BIND has been removed from the base system.  If all you need
886         is a local resolver, simply enable and start the local_unbound
887         service instead.  Otherwise, several versions of BIND are
888         available in the ports tree.   The dns/bind99 port is one example.
889
890         With this change, nslookup(1) and dig(1) are no longer in the base
891         system.  Users should instead use host(1) and drill(1) which are
892         in the base system.  Alternatively, nslookup and dig can
893         be obtained by installing the dns/bind-tools port.
894
895 20130916:
896         With the addition of unbound(8), a new unbound user is now
897         required during installworld.  "mergemaster -p" can be used to
898         add the user prior to installworld, as documented in the handbook.
899
900 20130911:
901         OpenSSH is now built with DNSSEC support, and will by default
902         silently trust signed SSHFP records.  This can be controlled with
903         the VerifyHostKeyDNS client configuration setting.  DNSSEC support
904         can be disabled entirely with the WITHOUT_LDNS option in src.conf.
905
906 20130906:
907         The GNU Compiler Collection and C++ standard library (libstdc++)
908         are no longer built by default on platforms where clang is the system
909         compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
910         options in src.conf.
911
912 20130905:
913         The PROCDESC kernel option is now part of the GENERIC kernel
914         configuration and is required for the rwhod(8) to work.
915         If you are using custom kernel configuration, you should include
916         'options PROCDESC'.
917
918 20130905:
919         The API and ABI related to the Capsicum framework was modified
920         in backward incompatible way. The userland libraries and programs
921         have to be recompiled to work with the new kernel. This includes the
922         following libraries and programs, but the whole buildworld is
923         advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
924         kdump, procstat, rwho, rwhod, uniq.
925
926 20130903:
927         AES-NI intrinsic support has been added to gcc.  The AES-NI module
928         has been updated to use this support.  A new gcc is required to build
929         the aesni module on both i386 and amd64.
930
931 20130821:
932         The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
933         Thus "device padlock_rng" and "device rdrand_rng" should be
934         used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
935
936 20130813:
937         WITH_ICONV has been split into two feature sets.  WITH_ICONV now
938         enables just the iconv* functionality and is now on by default.
939         WITH_LIBICONV_COMPAT enables the libiconv api and link time
940         compatibility.  Set WITHOUT_ICONV to build the old way.
941         If you have been using WITH_ICONV before, you will very likely
942         need to turn on WITH_LIBICONV_COMPAT.
943
944 20130806:
945         INVARIANTS option now enables DEBUG for code with OpenSolaris and
946         Illumos origin, including ZFS.  If you have INVARIANTS in your
947         kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
948         explicitly.
949         DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
950         locks if WITNESS option was set.  Because that generated a lot of
951         witness(9) reports and all of them were believed to be false
952         positives, this is no longer done.  New option OPENSOLARIS_WITNESS
953         can be used to achieve the previous behavior.
954
955 20130806:
956         Timer values in IPv6 data structures now use time_uptime instead
957         of time_second.  Although this is not a user-visible functional
958         change, userland utilities which directly use them---ndp(8),
959         rtadvd(8), and rtsold(8) in the base system---need to be updated
960         to r253970 or later.
961
962 20130802:
963         find -delete can now delete the pathnames given as arguments,
964         instead of only files found below them or if the pathname did
965         not contain any slashes. Formerly, the following error message
966         would result:
967
968         find: -delete: <path>: relative path potentially not safe
969
970         Deleting the pathnames given as arguments can be prevented
971         without error messages using -mindepth 1 or by changing
972         directory and passing "." as argument to find. This works in the
973         old as well as the new version of find.
974
975 20130726:
976         Behavior of devfs rules path matching has been changed.
977         Pattern is now always matched against fully qualified devfs
978         path and slash characters must be explicitly matched by
979         slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
980         subdirectories must be reviewed.
981
982 20130716:
983         The default ARM ABI has changed to the ARM EABI. The old ABI is
984         incompatible with the ARM EABI and all programs and modules will
985         need to be rebuilt to work with a new kernel.
986
987         To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
988
989         NOTE: Support for the old ABI will be removed in the future and
990         users are advised to upgrade.
991
992 20130709:
993         pkg_install has been disconnected from the build if you really need it
994         you should add WITH_PKGTOOLS in your src.conf(5).
995
996 20130709:
997         Most of network statistics structures were changed to be able
998         keep 64-bits counters. Thus all tools, that work with networking
999         statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
1000
1001 20130618:
1002         Fix a bug that allowed a tracing process (e.g. gdb) to write
1003         to a memory-mapped file in the traced process's address space
1004         even if neither the traced process nor the tracing process had
1005         write access to that file.
1006
1007 20130615:
1008         CVS has been removed from the base system.  An exact copy
1009         of the code is available from the devel/cvs port.
1010
1011 20130613:
1012         Some people report the following error after the switch to bmake:
1013
1014                 make: illegal option -- J
1015                 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
1016                         ...
1017                 *** [buildworld] Error code 2
1018
1019         this likely due to an old instance of make in
1020         ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
1021         which src/Makefile will use that blindly, if it exists, so if
1022         you see the above error:
1023
1024                 rm -rf `make -V MAKEPATH`
1025
1026         should resolve it.
1027
1028 20130516:
1029         Use bmake by default.
1030         Whereas before one could choose to build with bmake via
1031         -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
1032         make. The goal is to remove these knobs for 10-RELEASE.
1033
1034         It is worth noting that bmake (like gmake) treats the command
1035         line as the unit of failure, rather than statements within the
1036         command line.  Thus '(cd some/where && dosomething)' is safer
1037         than 'cd some/where; dosomething'. The '()' allows consistent
1038         behavior in parallel build.
1039
1040 20130429:
1041         Fix a bug that allows NFS clients to issue READDIR on files.
1042
1043 20130426:
1044         The WITHOUT_IDEA option has been removed because
1045         the IDEA patent expired.
1046
1047 20130426:
1048         The sysctl which controls TRIM support under ZFS has been renamed
1049         from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
1050         enabled by default.
1051
1052 20130425:
1053         The mergemaster command now uses the default MAKEOBJDIRPREFIX
1054         rather than creating it's own in the temporary directory in
1055         order allow access to bootstrapped versions of tools such as
1056         install and mtree.  When upgrading from version of FreeBSD where
1057         the install command does not support -l, you will need to
1058         install a new mergemaster command if mergemaster -p is required.
1059         This can be accomplished with the command (cd src/usr.sbin/mergemaster
1060         && make install).
1061
1062 20130404:
1063         Legacy ATA stack, disabled and replaced by new CAM-based one since
1064         FreeBSD 9.0, completely removed from the sources.  Kernel modules
1065         atadisk and atapi*, user-level tools atacontrol and burncd are
1066         removed.  Kernel option `options ATA_CAM` is now permanently enabled
1067         and removed.
1068
1069 20130319:
1070         SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
1071         and socketpair(2). Software, in particular Kerberos, may
1072         automatically detect and use these during building. The resulting
1073         binaries will not work on older kernels.
1074
1075 20130308:
1076         CTL_DISABLE has also been added to the sparc64 GENERIC (for further
1077         information, see the respective 20130304 entry).
1078
1079 20130304:
1080         Recent commits to callout(9) changed the size of struct callout,
1081         so the KBI is probably heavily disturbed. Also, some functions
1082         in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
1083         by macros. Every kernel module using it won't load, so rebuild
1084         is requested.
1085
1086         The ctl device has been re-enabled in GENERIC for i386 and amd64,
1087         but does not initialize by default (because of the new CTL_DISABLE
1088         option) to save memory.  To re-enable it, remove the CTL_DISABLE
1089         option from the kernel config file or set kern.cam.ctl.disable=0
1090         in /boot/loader.conf.
1091
1092 20130301:
1093         The ctl device has been disabled in GENERIC for i386 and amd64.
1094         This was done due to the extra memory being allocated at system
1095         initialisation time by the ctl driver which was only used if
1096         a CAM target device was created.  This makes a FreeBSD system
1097         unusable on 128MB or less of RAM.
1098
1099 20130208:
1100         A new compression method (lz4) has been merged to -HEAD.  Please
1101         refer to zpool-features(7) for more information.
1102
1103         Please refer to the "ZFS notes" section of this file for information
1104         on upgrading boot ZFS pools.
1105
1106 20130129:
1107         A BSD-licensed patch(1) variant has been added and is installed
1108         as bsdpatch, being the GNU version the default patch.
1109         To inverse the logic and use the BSD-licensed one as default,
1110         while having the GNU version installed as gnupatch, rebuild
1111         and install world with the WITH_BSD_PATCH knob set.
1112
1113 20130121:
1114         Due to the use of the new -l option to install(1) during build
1115         and install, you must take care not to directly set the INSTALL
1116         make variable in your /etc/make.conf, /etc/src.conf, or on the
1117         command line.  If you wish to use the -C flag for all installs
1118         you may be able to add INSTALL+=-C to /etc/make.conf or
1119         /etc/src.conf.
1120
1121 20130118:
1122         The install(1) option -M has changed meaning and now takes an
1123         argument that is a file or path to append logs to.  In the
1124         unlikely event that -M was the last option on the command line
1125         and the command line contained at least two files and a target
1126         directory the first file will have logs appended to it.  The -M
1127         option served little practical purpose in the last decade so its
1128         use is expected to be extremely rare.
1129
1130 20121223:
1131         After switching to Clang as the default compiler some users of ZFS
1132         on i386 systems started to experience stack overflow kernel panics.
1133         Please consider using 'options KSTACK_PAGES=4' in such configurations.
1134
1135 20121222:
1136         GEOM_LABEL now mangles label names read from file system metadata.
1137         Mangling affect labels containing spaces, non-printable characters,
1138         '%' or '"'. Device names in /etc/fstab and other places may need to
1139         be updated.
1140
1141 20121217:
1142         By default, only the 10 most recent kernel dumps will be saved.  To
1143         restore the previous behaviour (no limit on the number of kernel dumps
1144         stored in the dump directory) add the following line to /etc/rc.conf:
1145
1146                 savecore_flags=""
1147
1148 20121201:
1149         With the addition of auditdistd(8), a new auditdistd user is now
1150         required during installworld.  "mergemaster -p" can be used to
1151         add the user prior to installworld, as documented in the handbook.
1152
1153 20121117:
1154         The sin6_scope_id member variable in struct sockaddr_in6 is now
1155         filled by the kernel before passing the structure to the userland via
1156         sysctl or routing socket.  This means the KAME-specific embedded scope
1157         id in sin6_addr.s6_addr[2] is always cleared in userland application.
1158         This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
1159         __FreeBSD_version is bumped to 1000025.
1160
1161 20121105:
1162         On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
1163         This means that the world and kernel will be compiled with clang
1164         and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
1165         and /usr/bin/cpp.  To disable this behavior and revert to building
1166         with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
1167         of current may need to bootstrap WITHOUT_CLANG first if the clang
1168         build fails (its compatibility window doesn't extend to the 9 stable
1169         branch point).
1170
1171 20121102:
1172         The IPFIREWALL_FORWARD kernel option has been removed. Its
1173         functionality now turned on by default.
1174
1175 20121023:
1176         The ZERO_COPY_SOCKET kernel option has been removed and
1177         split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
1178         NB: SOCKET_SEND_COW uses the VM page based copy-on-write
1179         mechanism which is not safe and may result in kernel crashes.
1180         NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
1181         driver supports disposeable external page sized mbuf storage.
1182         Proper replacements for both zero-copy mechanisms are under
1183         consideration and will eventually lead to complete removal
1184         of the two kernel options.
1185
1186 20121023:
1187         The IPv4 network stack has been converted to network byte
1188         order. The following modules need to be recompiled together
1189         with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
1190         pf(4), ipfw(4), ng_ipfw(4), stf(4).
1191
1192 20121022:
1193         Support for non-MPSAFE filesystems was removed from VFS. The
1194         VFS_VERSION was bumped, all filesystem modules shall be
1195         recompiled.
1196
1197 20121018:
1198         All the non-MPSAFE filesystems have been disconnected from
1199         the build. The full list includes: codafs, hpfs, ntfs, nwfs,
1200         portalfs, smbfs, xfs.
1201
1202 20121016:
1203         The interface cloning API and ABI has changed. The following
1204         modules need to be recompiled together with kernel:
1205         ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
1206         vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
1207         faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
1208
1209 20121015:
1210         The sdhci driver was split in two parts: sdhci (generic SD Host
1211         Controller logic) and sdhci_pci (actual hardware driver).
1212         No kernel config modifications are required, but if you
1213         load sdhc as a module you must switch to sdhci_pci instead.
1214
1215 20121014:
1216         Import the FUSE kernel and userland support into base system.
1217
1218 20121013:
1219         The GNU sort(1) program has been removed since the BSD-licensed
1220         sort(1) has been the default for quite some time and no serious
1221         problems have been reported.  The corresponding WITH_GNU_SORT
1222         knob has also gone.
1223
1224 20121006:
1225         The pfil(9) API/ABI for AF_INET family has been changed. Packet
1226         filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
1227         with new kernel.
1228
1229 20121001:
1230         The net80211(4) ABI has been changed to allow for improved driver
1231         PS-POLL and power-save support.  All wireless drivers need to be
1232         recompiled to work with the new kernel.
1233
1234 20120913:
1235         The random(4) support for the VIA hardware random number
1236         generator (`PADLOCK') is no longer enabled unconditionally.
1237         Add the padlock_rng device in the custom kernel config if
1238         needed.  The GENERIC kernels on i386 and amd64 do include the
1239         device, so the change only affects the custom kernel
1240         configurations.
1241
1242 20120908:
1243         The pf(4) packet filter ABI has been changed. pfctl(8) and
1244         snmp_pf module need to be recompiled to work with new kernel.
1245
1246 20120828:
1247         A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
1248         to -HEAD. Pools that have empty_bpobj in active state can not be
1249         imported read-write with ZFS implementations that do not support
1250         this feature. For more information read the zpool-features(5)
1251         manual page.
1252
1253 20120727:
1254         The sparc64 ZFS loader has been changed to no longer try to auto-
1255         detect ZFS providers based on diskN aliases but now requires these
1256         to be explicitly listed in the OFW boot-device environment variable.
1257
1258 20120712:
1259         The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
1260         libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
1261         configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
1262
1263 20120712:
1264         The following sysctls and tunables have been renamed for consistency
1265         with other variables:
1266           kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
1267           kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
1268
1269 20120628:
1270         The sort utility has been replaced with BSD sort.  For now, GNU sort
1271         is also available as "gnusort" or the default can be set back to
1272         GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
1273         installed as "bsdsort".
1274
1275 20120611:
1276         A new version of ZFS (pool version 5000) has been merged to -HEAD.
1277         Starting with this version the old system of ZFS pool versioning
1278         is superseded by "feature flags". This concept enables forward
1279         compatibility against certain future changes in functionality of ZFS
1280         pools. The first read-only compatible "feature flag" for ZFS pools
1281         is named "com.delphix:async_destroy". For more information
1282         read the new zpool-features(5) manual page.
1283         Please refer to the "ZFS notes" section of this file for information
1284         on upgrading boot ZFS pools.
1285
1286 20120417:
1287         The malloc(3) implementation embedded in libc now uses sources imported
1288         as contrib/jemalloc.  The most disruptive API change is to
1289         /etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
1290         delete it prior to installworld, and optionally re-create it using the
1291         new format after rebooting.  See malloc.conf(5) for details
1292         (specifically the TUNING section and the "opt.*" entries in the MALLCTL
1293         NAMESPACE section).
1294
1295 20120328:
1296         Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
1297         is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
1298         now spelled mips.  This is to aid compatibility with third-party
1299         software that expects this naming scheme in uname(3).  Little-endian
1300         settings are unchanged. If you are updating a big-endian mips64 machine
1301         from before this change, you may need to set MACHINE_ARCH=mips64 in
1302         your environment before the new build system will recognize your machine.
1303
1304 20120306:
1305         Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
1306         platforms.
1307
1308 20120229:
1309         Now unix domain sockets behave "as expected" on nullfs(5). Previously
1310         nullfs(5) did not pass through all behaviours to the underlying layer,
1311         as a result if we bound to a socket on the lower layer we could connect
1312         only to the lower path; if we bound to the upper layer we could connect
1313         only to the upper path. The new behavior is one can connect to both the
1314         lower and the upper paths regardless what layer path one binds to.
1315
1316 20120211:
1317         The getifaddrs upgrade path broken with 20111215 has been restored.
1318         If you have upgraded in between 20111215 and 20120209 you need to
1319         recompile libc again with your kernel.  You still need to recompile
1320         world to be able to configure CARP but this restriction already
1321         comes from 20111215.
1322
1323 20120114:
1324         The set_rcvar() function has been removed from /etc/rc.subr.  All
1325         base and ports rc.d scripts have been updated, so if you have a
1326         port installed with a script in /usr/local/etc/rc.d you can either
1327         hand-edit the rcvar= line, or reinstall the port.
1328
1329         An easy way to handle the mass-update of /etc/rc.d:
1330         rm /etc/rc.d/* && mergemaster -i
1331
1332 20120109:
1333         panic(9) now stops other CPUs in the SMP systems, disables interrupts
1334         on the current CPU and prevents other threads from running.
1335         This behavior can be reverted using the kern.stop_scheduler_on_panic
1336         tunable/sysctl.
1337         The new behavior can be incompatible with kern.sync_on_panic.
1338
1339 20111215:
1340         The carp(4) facility has been changed significantly. Configuration
1341         of the CARP protocol via ifconfig(8) has changed, as well as format
1342         of CARP events submitted to devd(8) has changed. See manual pages
1343         for more information. The arpbalance feature of carp(4) is currently
1344         not supported anymore.
1345
1346         Size of struct in_aliasreq, struct in6_aliasreq has changed. User
1347         utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
1348         need to be recompiled.
1349
1350 20111122:
1351         The acpi_wmi(4) status device /dev/wmistat has been renamed to
1352         /dev/wmistat0.
1353
1354 20111108:
1355         The option VFS_ALLOW_NONMPSAFE option has been added in order to
1356         explicitely support non-MPSAFE filesystems.
1357         It is on by default for all supported platform at this present
1358         time.
1359
1360 20111101:
1361         The broken amd(4) driver has been replaced with esp(4) in the amd64,
1362         i386 and pc98 GENERIC kernel configuration files.
1363
1364 20110930:
1365         sysinstall has been removed
1366
1367 20110923:
1368         The stable/9 branch created in subversion.  This corresponds to the
1369         RELENG_9 branch in CVS.
1370
1371 COMMON ITEMS:
1372
1373         General Notes
1374         -------------
1375         Avoid using make -j when upgrading.  While generally safe, there are
1376         sometimes problems using -j to upgrade.  If your upgrade fails with
1377         -j, please try again without -j.  From time to time in the past there
1378         have been problems using -j with buildworld and/or installworld.  This
1379         is especially true when upgrading between "distant" versions (eg one
1380         that cross a major release boundary or several minor releases, or when
1381         several months have passed on the -current branch).
1382
1383         Sometimes, obscure build problems are the result of environment
1384         poisoning.  This can happen because the make utility reads its
1385         environment when searching for values for global variables.  To run
1386         your build attempts in an "environmental clean room", prefix all make
1387         commands with 'env -i '.  See the env(1) manual page for more details.
1388
1389         When upgrading from one major version to another it is generally best
1390         to upgrade to the latest code in the currently installed branch first,
1391         then do an upgrade to the new branch. This is the best-tested upgrade
1392         path, and has the highest probability of being successful.  Please try
1393         this approach before reporting problems with a major version upgrade.
1394
1395         When upgrading a live system, having a root shell around before
1396         installing anything can help undo problems. Not having a root shell
1397         around can lead to problems if pam has changed too much from your
1398         starting point to allow continued authentication after the upgrade.
1399
1400         This file should be read as a log of events. When a later event changes
1401         information of a prior event, the prior event should not be deleted.
1402         Instead, a pointer to the entry with the new information should be
1403         placed in the old entry. Readers of this file should also sanity check
1404         older entries before relying on them blindly. Authors of new entries
1405         should write them with this in mind.
1406
1407         ZFS notes
1408         ---------
1409         When upgrading the boot ZFS pool to a new version, always follow
1410         these two steps:
1411
1412         1.) recompile and reinstall the ZFS boot loader and boot block
1413         (this is part of "make buildworld" and "make installworld")
1414
1415         2.) update the ZFS boot block on your boot drive
1416
1417         The following example updates the ZFS boot block on the first
1418         partition (freebsd-boot) of a GPT partitioned drive ada0:
1419         "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
1420
1421         Non-boot pools do not need these updates.
1422
1423         To build a kernel
1424         -----------------
1425         If you are updating from a prior version of FreeBSD (even one just
1426         a few days old), you should follow this procedure.  It is the most
1427         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1428
1429         make kernel-toolchain
1430         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1431         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1432
1433         To test a kernel once
1434         ---------------------
1435         If you just want to boot a kernel once (because you are not sure
1436         if it works, or if you want to boot a known bad kernel to provide
1437         debugging information) run
1438         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1439         nextboot -k testkernel
1440
1441         To just build a kernel when you know that it won't mess you up
1442         --------------------------------------------------------------
1443         This assumes you are already running a CURRENT system.  Replace
1444         ${arch} with the architecture of your machine (e.g. "i386",
1445         "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
1446
1447         cd src/sys/${arch}/conf
1448         config KERNEL_NAME_HERE
1449         cd ../compile/KERNEL_NAME_HERE
1450         make depend
1451         make
1452         make install
1453
1454         If this fails, go to the "To build a kernel" section.
1455
1456         To rebuild everything and install it on the current system.
1457         -----------------------------------------------------------
1458         # Note: sometimes if you are running current you gotta do more than
1459         # is listed here if you are upgrading from a really old current.
1460
1461         <make sure you have good level 0 dumps>
1462         make buildworld
1463         make kernel KERNCONF=YOUR_KERNEL_HERE
1464                                                         [1]
1465         <reboot in single user>                         [3]
1466         mergemaster -Fp                                 [5]
1467         make installworld
1468         mergemaster -Fi                                 [4]
1469         make delete-old                                 [6]
1470         <reboot>
1471
1472         To cross-install current onto a separate partition
1473         --------------------------------------------------
1474         # In this approach we use a separate partition to hold
1475         # current's root, 'usr', and 'var' directories.   A partition
1476         # holding "/", "/usr" and "/var" should be about 2GB in
1477         # size.
1478
1479         <make sure you have good level 0 dumps>
1480         <boot into -stable>
1481         make buildworld
1482         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1483         <maybe newfs current's root partition>
1484         <mount current's root partition on directory ${CURRENT_ROOT}>
1485         make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1486         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1487         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1488         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1489         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1490         <reboot into current>
1491         <do a "native" rebuild/install as described in the previous section>
1492         <maybe install compatibility libraries from ports/misc/compat*>
1493         <reboot>
1494
1495
1496         To upgrade in-place from stable to current
1497         ----------------------------------------------
1498         <make sure you have good level 0 dumps>
1499         make buildworld                                 [9]
1500         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1501                                                         [1]
1502         <reboot in single user>                         [3]
1503         mergemaster -Fp                                 [5]
1504         make installworld
1505         mergemaster -Fi                                 [4]
1506         make delete-old                                 [6]
1507         <reboot>
1508
1509         Make sure that you've read the UPDATING file to understand the
1510         tweaks to various things you need.  At this point in the life
1511         cycle of current, things change often and you are on your own
1512         to cope.  The defaults can also change, so please read ALL of
1513         the UPDATING entries.
1514
1515         Also, if you are tracking -current, you must be subscribed to
1516         freebsd-current@freebsd.org.  Make sure that before you update
1517         your sources that you have read and understood all the recent
1518         messages there.  If in doubt, please track -stable which has
1519         much fewer pitfalls.
1520
1521         [1] If you have third party modules, such as vmware, you
1522         should disable them at this point so they don't crash your
1523         system on reboot.
1524
1525         [3] From the bootblocks, boot -s, and then do
1526                 fsck -p
1527                 mount -u /
1528                 mount -a
1529                 cd src
1530                 adjkerntz -i            # if CMOS is wall time
1531         Also, when doing a major release upgrade, it is required that
1532         you boot into single user mode to do the installworld.
1533
1534         [4] Note: This step is non-optional.  Failure to do this step
1535         can result in a significant reduction in the functionality of the
1536         system.  Attempting to do it by hand is not recommended and those
1537         that pursue this avenue should read this file carefully, as well
1538         as the archives of freebsd-current and freebsd-hackers mailing lists
1539         for potential gotchas.  The -U option is also useful to consider.
1540         See mergemaster(8) for more information.
1541
1542         [5] Usually this step is a noop.  However, from time to time
1543         you may need to do this if you get unknown user in the following
1544         step.  It never hurts to do it all the time.  You may need to
1545         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1546         install) after the buildworld before this step if you last updated
1547         from current before 20130425 or from -stable before 20130430.
1548
1549         [6] This only deletes old files and directories. Old libraries
1550         can be deleted by "make delete-old-libs", but you have to make
1551         sure that no program is using those libraries anymore.
1552
1553         [8] In order to have a kernel that can run the 4.x binaries needed to
1554         do an installworld, you must include the COMPAT_FREEBSD4 option in
1555         your kernel.  Failure to do so may leave you with a system that is
1556         hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1557         required to run the 5.x binaries on more recent kernels.  And so on
1558         for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1559
1560         Make sure that you merge any new devices from GENERIC since the
1561         last time you updated your kernel config file.
1562
1563         [9] When checking out sources, you must include the -P flag to have
1564         cvs prune empty directories.
1565
1566         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1567         "?=" instead of the "=" assignment operator, so that buildworld can
1568         override the CPUTYPE if it needs to.
1569
1570         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1571         not on the command line, or in /etc/make.conf.  buildworld will
1572         warn if it is improperly defined.
1573 FORMAT:
1574
1575 This file contains a list, in reverse chronological order, of major
1576 breakages in tracking -current.  It is not guaranteed to be a complete
1577 list of such breakages, and only contains entries since September 23, 2011.
1578 If you need to see UPDATING entries from before that date, you will need
1579 to fetch an UPDATING file from an older FreeBSD release.
1580
1581 Copyright information:
1582
1583 Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1584
1585 Redistribution, publication, translation and use, with or without
1586 modification, in full or in part, in any form or format of this
1587 document are permitted without further permission from the author.
1588
1589 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1590 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1591 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1592 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1593 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1594 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1595 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1596 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1597 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1598 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1599 POSSIBILITY OF SUCH DAMAGE.
1600
1601 Contact Warner Losh if you have any questions about your use of
1602 this document.
1603
1604 $FreeBSD$