summaryrefslogtreecommitdiff
path: root/contrib/gcc
Commit message (Collapse)AuthorAgeFilesLines
* Remove contrib/gcc and contrib/gcclibsEd Maste2020-02-291349-1575845/+0
| | | | | | | | | GCC 4.2.1 was disconnected from FreeBSD in r358454. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=358459
* powerpc: Transition to Secure-PLT, like most other OSsJustin Hibbits2019-06-251-1/+2
| | | | | | | | | | | | | | | | | | | Summary: PowerPC has two PLT models: BSS-PLT and Secure-PLT. BSS-PLT uses runtime code generation to generate the PLT stubs. Secure-PLT was introduced with GCC 4.1 and Binutils 2.17 (base has GCC 4.2.1 and Binutils 2.17), and is a more secure PLT format, using a read-only linkage table, with the dynamic linker populating a non-executable index table. This is the libc, rtld, and kernel support only. The toolchain and build parts will be updated separately. Reviewed By: nwhitehorn, bdragon, pfg Differential Revision: https://reviews.freebsd.org/D20598 MFC after: 1 month Notes: svn path=/head/; revision=349350
* - Update head to 13.0-CURRENT.Glen Barber2018-10-191-0/+2
| | | | | | | | | | | | | | - Bump MACHINE_TRIPLE, TARGET_TRIPLE, FBSD_MAJOR, FBSD_CC_VER, FREEBSD_CC_VERSION, OS_VERSION. - Update comment in UPDATING regarding debugging options. - Remove debug.witness.trace=0 from installation media. - Bump __FreeBSD_version. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=339436
* Fix GCC 4.2.1 to honor --sysroot for includes.John Baldwin2018-06-271-2/+2
| | | | | | | | | | | | | | | | | | | - Change the C++ directory entries to honor --sysroot if it is set. - Don't define CROSS_INCLUDE_DIR for the cross compiler. Instead, set TARGET_SYSTEM_ROOT to point to WORLDTMP and always define STANDARD_INCLUDE_DIR. - Change STANDARD_INCLUDE_DIR and the C++ include directories to just start with "/usr" always. The compiler will prepend the sysroot when doing cross-builds. GCC_INCLUDE_DIR (which contains headers that ship with the compiler such as intrinsincs rather than OS-supplied headers) remains hardcoded to look in TOOLS_PREFIX. Reviewed by: bdrewery (older version) Sponsored by: DARPA / AFRL Differential Revision: https://reviews.freebsd.org/D15127 Notes: svn path=/head/; revision=335717
* Use a workaround to compile the crt init functions correctly with clang.John Baldwin2018-02-061-0/+2
| | | | | | | | | | | | | | The MIPS assembly parser treats forward-declared local symbols as global symbols. This results in CALL16 relocations being used against local (private) symbols which then fail to resolve when linking binaries. Add .local to force the init and fini functions to be treated as local as a workaround. Submitted by: sbruno Sponsored by: DARPA / AFRL Notes: svn path=/head/; revision=328939
* Revert r280909 "unwind-d2 build workaround for arm64"Ed Maste2018-01-121-9/+0
| | | | | | | | | | We no longer try to build unwind-dw2.c on arm64 so no need for this workaround. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=327889
* Fix the return value from _Unwind_Backtrace() on arm.Ian Lepore2017-09-251-4/+1
| | | | | | | | | | | If unwinding stops due to hitting the end of the call chain, the return value is supposed to be _URC_END_OF_STACK; other values indicate internal errors. The return value from get_eit_entry() is now returned without translating it to _URC_FAILURE, so that callers can see _URC_END_OF_STACK when it happens. Notes: svn path=/head/; revision=323998
* Fix handling of uncaught exceptions in a std::terminate() handler on arm.Ian Lepore2017-09-251-2/+2
| | | | | | | | | | | | | | | | | | When raising an exception, the unwinder searches for a catch handler and if none is found it should invoke std::terminate() with the uncaught exception as the "current" exception. Before this change, the terminate handler was invoked with no exception as current (abi::__cxa_current_exception_type() returned NULL), because the return value from the unwinder indicated an internal failure in unwinding. It turns out that was because all errors from get_eit_entry() were translated to _URC_FAILURE. Now the error is returned untranslated, which allows _URC_END_OF_STACK to percolate upwards to throw_exception() in libcxxrt. When it sees that return status it properly calls std::terminate() with the uncaught exception installed as the current exception, allowing custom terminate handlers to work with it. Notes: svn path=/head/; revision=323997
* Rename RISC-V GCC config directory: riscv64 -> riscvRuslan Bukin2017-08-142-0/+0
| | | | | | | | | | | | | | | (to match official RISC-V target for GCC 7.1). This is only a minimal config required to build c start up (csu). This fixes build after r322429 ("Make _TO_CPUARCH macro for ARCH to CPUARCH conversions") Reported by: lwhsu Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=322508
* Bring some rough support for FreeBSD S/390 to the GNU toolchain.Pedro F. Giffuni2017-05-232-0/+114
| | | | | | | | | | | | This is no-op and only for reference: the S/390 port seems to be elusive in the BSDs so it is convenient to keep some trace from past efforts. It is likely newer attempts will focus on a newer toolchain using clang instead. Obtained from: Perforce depot/projects/s390 Notes: svn path=/head/; revision=318750
* Fix _Unwind_Backtrace symbol version for ARM.Michal Meloun2017-05-093-1/+27
| | | | | | | | | | | | | | | | | | In real GNU libgcc, _Unwind_Backtrace is published with GCC_3.3 version for all architectures but ARM. For ARM it's publishes with GCC_4.3.0 version. This exception is not implement in your version of libggc, thus we export _Unwind_Backtrace with bad version. To maintain backward compatibility, publish _Unwind_Backtrace twice, once as compatible symbol with GCC_3.3 version, and once as default symbol with GCC_4.3.0 version. While I'm in, fix typo in GCC_4.2.0 to GCC_4.3.0 inheritance declaration. MFC after: 2 weeks Notes: svn path=/head/; revision=318024
* Default powerpcspe processor target to 8540Justin Hibbits2017-04-141-0/+2
| | | | | | | This prevents internal compiler errors when -mcpu is omitted. Notes: svn path=/head/; revision=316807
* add octeon+ as an alias for octeon in GCC & binutilsEd Maste2017-01-272-1/+5
| | | | | | | | | | | | | | | | | | | | In r208737 jmallett@ added support for the "mips64r2" architecture and "octeon" CPU, and the saa/saad instructions. Upstream binutils also added the "octeon+" CPU, and the saa/saad instructions are only available in octeon+, not octeon. Since our base system tool chain already accepts saa/saad with -march=octeon, just allow octeon+ as an alias. This allows the use of octeon+ in kernel config files, for use with both external tool chain and in-tree GCC/binutils. PR: 216516 MFC after: 1 month Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=312899
* Create a new MACHINE_ARCH for Freescale PowerPC e500v2Justin Hibbits2016-10-221-0/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The Freescale e500v2 PowerPC core does not use a standard FPU. Instead, it uses a Signal Processing Engine (SPE)--a DSP-style vector processor unit, which doubles as a FPU. The PowerPC SPE ABI is incompatible with the stock powerpc ABI, so a new MACHINE_ARCH was created to deal with this. Additionaly, the SPE opcodes overlap with Altivec, so these are mutually exclusive. Taking advantage of this fact, a new file, powerpc/booke/spe.c, was created with the same function set as in powerpc/powerpc/altivec.c, so it becomes effectively a drop-in replacement. setjmp/longjmp were modified to save the upper 32-bits of the now-64-bit GPRs (upper 32-bits are only accessible by the SPE). Note: This does _not_ support the SPE in the e500v1, as the e500v1 SPE does not support double-precision floating point. Also, without a new MACHINE_ARCH it would be impossible to provide binary packages which utilize the SPE. Additionally, no work has been done to support ports, work is needed for this. This also means no newer gcc can yet be used. However, gcc's powerpc support has been refactored which would make adding a powerpcspe-freebsd target very easy. Test Plan: This was lightly tested on a RouterBoard RB800 and an AmigaOne A1222 (P1022-based) board, compiled against the new ABI. Base system utilities (/bin/sh, /bin/ls, etc) still function appropriately, the system is able to boot multiuser. Reviewed By: bdrewery, imp Relnotes: yes Differential Revision: https://reviews.freebsd.org/D5683 Notes: svn path=/head/; revision=307761
* MFV r302423:Pedro F. Giffuni2016-08-301-0/+134
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring older verbatim version of cpuid.h This file is used regularly in FreeBSD builds but we usually use the similar file provided by clang. By providing the older file introduced in GCC 4.3, we hope to mimic better what is provided by an external toolchain. Obtained from: GCC-4_3-branch (SVN rev. 129548, pre GPLv3) Notes: svn path=/head/; revision=305092
* | libcpp: Complete the __COUNTER__ support with upstream implementation.Pedro F. Giffuni2016-08-301-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | We brought an original __COUNTER__ implementation in r228474, however, it was missing documentation and it had a different behaviour for precompiled headers with respect to the upstream version. Since the upstream version is under the same license as GCC4.2, bring the missing pieces to reduce differences against upstream. Optained from: GCC pre-4.3 (rev. 125041 ; GPLv2) Notes: svn path=/head/; revision=305083
* | rename ARM's libunwind.S to to avoid conflict with llvm libunwindEd Maste2016-07-271-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | llvm libunwind includes a libunwind.cpp, but on ARM libunwind.S is found first in .PATH. Rename the latter one, since it is not going to be updated again. Reviewed by: andrew MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D7162 Notes: svn path=/head/; revision=303396
* | Add freebsd12 to contrib/gcc/config.gcc.Glen Barber2016-07-081-0/+2
| | | | | | | | | | | | | | | | | | Submitted by: bdrewery Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=302418
* | gcc42: Fix minor C99 parse bugConrad Meyer2016-05-271-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DR #289[0] came down and gcc4.2.1 was on the wrong side of history. Partially revert GCC r42574 (just remove the error) to rectify the parse bug to match Clang and other compliant C99 compilers. An example declaration gcc tripped on before this fix: void foobar(int [static 1]); An example declaration gcc did not trip on before this fix: void foobar(int name[static 1]); Bump __FreeBSD_cc_version. [0]: http://www.open-std.org/JTC1/SC22/WG14/www/docs/dr_289.htm Reported by: allanjude Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=300822
* | GCC: Add support for named initializers for anonymous structs/unions.Pedro F. Giffuni2016-05-201-1/+12
| | | | | | | | | | | | | | | | | | | | Missing hunk from r300301. Reported by: Ed Schouten Obtained from: OpenBSD (CVS rev. 1.2) Notes: svn path=/head/; revision=300319
* | GCC: Add support for named initializers for anonymous structs/unions.Pedro F. Giffuni2016-05-201-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | This is a C11 feature that is starting to get used in places such as Mesa. This implementation takes a different approach to upstream and is therefore not covered by GPLv3. Obtained from: OpenBSD (CVS rev. 1.2) MFC after: 3 weeks Notes: svn path=/head/; revision=300301
* | Add a minimal gcc config for RISC-V.Ruslan Bukin2016-01-232-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | This is required to build csu. Reviewed by: andrew Sponsored by: DARPA, AFRL Sponsored by: HEIF5 Differential Revision: https://reviews.freebsd.org/D5039 Notes: svn path=/head/; revision=294634
* | Silence a boring warning.Andreas Tobler2015-12-221-0/+2
| | | | | | | | Notes: svn path=/head/; revision=292627
* | Revert r289150:Pedro F. Giffuni2015-10-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | Correct handling of enum attributes with g++ It is causing issues on some platforms. Reported by: sbruno (through adrian) Notes: svn path=/head/; revision=289160
* | Correct handling of enum attributes with g++Pedro F. Giffuni2015-10-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From OpenBSD's commit log: This was responsible for memory corruption with recent versions of Mesa where c and c++ code share a header with a packed enum type. Reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39219 Obtained from: OpenBSD (CVS rev. 1.2) MFC after: 1 week Notes: svn path=/head/; revision=289150
* | Annotate arm userspace assembler sources stating their tolerance toKonstantin Belousov2015-09-293-0/+6
| | | | | | | | | | | | | | | | | | | | the non-executable stack. Reviewed by: andrew Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=288373
* | GCC: Add a new option "-fstack-protector-strong"Pedro F. Giffuni2015-07-307-11/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | This includes additional functions to be protected: those that have local array definitions, or have references to local frame addresses. This is a new option in GCC-4.9 that was relicensed by Han Shen from Google under GPLv2 for OpenBSD. Obtained from: OpenBSD (2014-01-14) MFC after: 2 weeks Notes: svn path=/head/; revision=286074
* | Fix compilation of this macro under gcc-4.9 for MIPS32.Adrian Chadd2015-06-181-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Some point after gcc-4.2 the MIPS inline assembly restrictions changed - =h (hi register) disappeared from the list of restrictions and can no longer be used. So, until someone requires an assembly version of this function, just use a non-assembly version and let the compiler sort it out. Suggested by: kan Notes: svn path=/head/; revision=284546
* | Use a spelling of .thumb clang understands.Andrew Turner2015-05-311-1/+1
| | | | | | | | Notes: svn path=/head/; revision=283804
* | Update intree gdb/kgdb to handle 2 dwarf types:Sean Bruno2015-05-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DW_OP_GNU_uninit DW_OP_piece This squashes the warnings about type 0x93 not known in kgdb when opening a kernel crash dump. Upstream refs: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=87808bd699575a850139a1f916512ab7a47fd496 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=42be36b328ae784ae6981da7c7cab95b67ed7737 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=23572ecadc89af384c1804ad7692f32c55fbfc80 Differential Revision: https://reviews.freebsd.org/D2534 Reviewed by: emaste, jhb, davide Notes: svn path=/head/; revision=283029
* | unwind-d2 build workaround for arm64Ed Maste2015-03-311-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The __builtin_init_dwarf_reg_size_table function is unimplemented in clang 3.6 for AArch64. Comment it out for now and replace it with a message and abort. Tracked in upstream LLVM PR 22997 https://llvm.org/bugs/show_bug.cgi?id=22997 Submitted by: andrew Notes: svn path=/head/; revision=280909
* | Also define DWARF_FRAME_REGISTERS. This is used to size arrays, withoutAndrew Turner2015-03-261-1/+1
| | | | | | | | | | | | | | | | | | this exceptions could write over the stack. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=280704
* | Adda minimal gcc config. This is just enough to build the bits of csu weAndrew Turner2015-03-242-0/+9
| | | | | | | | | | | | | | | | | | get from gcc, and libgcc_eh. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=280437
* | FreeBSD expects _Unwind_GetGR, _Unwind_SetGR, and _Unwind_SetIP to beAndrew Turner2015-02-012-11/+24
| | | | | | | | | | | | | | | | symbols and not macros. Make this so. This fixes a few ports that try to link against these functions but fail as they previously didn't exist. Notes: svn path=/head/; revision=278023
* | Allow -march=armv7a on the gcc command line, for compatibility with clang.Ian Lepore2014-12-211-0/+2
| | | | | | | | | | | | | | | | | | | | This will result in __ARM_ARCH_7A__ being defined during the compile. When compiling with gcc, it will still only generate armv6 opcodes itself, but should pass the arch to gas so that inline asm can use v7 opcodes. Notes: svn path=/head/; revision=276045
* | Pull in r174303 from upstream gcc trunk (by Jason Merrill):Dimitry Andric2014-12-042-27/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR c++/48211 * name-lookup.h (cp_class_binding): Make base a pointer. * name-lookup.c (new_class_binding): Adjust. (poplevel_class): Adjust. This fixes a potential segfault when compiling gold, a part of the devel/binutils port, with gcc. See also the upstream bug report: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48211 Thanks to Jason Merrill, Tom Callaway and Red Hat legal for approving the use of this patch under the GNU GPL, version 2 or later. MFC after: 1 week Notes: svn path=/head/; revision=275477
* | Use the floating-point instruction on ARMv7 as the clang 3.5 integratedAndrew Turner2014-12-011-0/+15
| | | | | | | | | | | | | | | | | | | | assembler doesn't allow these two instructions to use co-processor 11. MFC after: 1 Week Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=275380
* | There is no need to use FUNC_END with aeabi_ldiv0 or aeabi_idiv0 as theyAndrew Turner2014-11-301-2/+0
| | | | | | | | | | | | | | | | | | are aliases. Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=275337
* | Supplement r259111 by also using correct casts in gcc's emmintrin.h forDimitry Andric2014-08-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the first argument of the following builtin function: * __builtin_ia32_psrlqi128() takes __v2di instead of __v4si This should fix the following errors when building the graphics/webp port with base gcc: lossless_sse2.c:403: error: incompatible type for argument 1 of '__builtin_ia32_psrlqi128' lossless_sse2.c:404: error: incompatible type for argument 1 of '__builtin_ia32_psrlqi128' Reported by: Jos Chrispijn <ports@webrz.net> MFC after: 3 days Notes: svn path=/head/; revision=269948
* | Add FreeBSD to the list of environments that needs to handle R_ARM_TARGET2Ian Lepore2014-07-221-1/+1
| | | | | | | | | | | | | | | | | | relocations in unwind data as pc-relative indirect references. MFC after: 1 week Notes: svn path=/head/; revision=268994
* | With the move away from GNATS, point end users to a better web pageGavin Atkinson2014-06-141-1/+1
| | | | | | | | | | | | | | | | | | | | detailing how to report bugs. Hat: bugmeister MFC after: 3 days Notes: svn path=/head/; revision=267483
* | gcc: fix strict alignment.Pedro F. Giffuni2014-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From the OpenBSD log: x86-64 ABI requires arrays greater than 16 bytes to be aligned to 16byte boundary. However, GCC 16-byte aligns arrays of >=16 BITS, not BYTES. This diff improves bug detectability for code which has local arrays of [16 .. 127] bits: in those cases SSP will now detect even 1-byte overflows. Obtained from: OpenBSD (CVS rev 1.4) MFC after: 1 week Notes: svn path=/head/; revision=265231
* | gcc: define __block when block support is enabledPedro F. Giffuni2014-04-041-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This mimics the behaviour in clang and lets us build cleanly the libdispatch port on platforms where the base gcc is still the default compiler. Bump __FreeBSD_version for ports. Tested by: theraven MFC after: 3 days Notes: svn path=/head/; revision=264121
* | Similar to r211505 for x86, remove unneeded casts in inline assembly forDimitry Andric2014-02-201-6/+6
| | | | | | | | | | | | | | | | sparc64 from contrib/gcc/longlong.h, which are considered "heinous" GNU extensions by clang. Notes: svn path=/projects/clang-sparc64/; revision=262269
* | Upgrade our copy of llvm/clang to 3.4 release. This version supportsDimitry Andric2014-02-162-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | all of the features in the current working draft of the upcoming C++ standard, provisionally named C++1y. The code generator's performance is greatly increased, and the loop auto-vectorizer is now enabled at -Os and -O2 in addition to -O3. The PowerPC backend has made several major improvements to code generation quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ backends have all seen major feature work. Release notes for llvm and clang can be found here: <http://llvm.org/releases/3.4/docs/ReleaseNotes.html> <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html> MFC after: 1 month Notes: svn path=/head/; revision=261991
* | gcc: Add support for -Wmissing-prototypes in C++Pedro F. Giffuni2014-01-263-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | Support for warnings about missing prototypes in C++ was added by Apple GCC (Radar 6261539). Most of the code crept into r260311 so it felt natural to make use of it. Obtained from: Apple GCC - 5646 MFC after: 5 days Notes: svn path=/head/; revision=261178
* | gcc: Drop useless objc change from r260311.Pedro F. Giffuni2014-01-172-39/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Among some of the objc changes from Apple that crept into r260311, Radar 5355344 is incomplete and is not used since we don't carry ObjC in the base system. The dead code seems to have caused issues in some Tinderboxes so get rid of it altogether. Reported by: luigi MFC after: 9 days Notes: svn path=/head/; revision=260831
* | Fix gcc with EABI on big-endian ARM by setting the endian correctly.Andrew Turner2014-01-121-0/+3
| | | | | | | | | | | | | | | | | | Without this gcc would generate byte loads for a little-endian core. MFC after: 1 week Notes: svn path=/head/; revision=260565
* | Fix optimization bug.Pedro F. Giffuni2014-01-061-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC-PR rtl-optimization/34628 * combine.c (try_combine): Stop and undo after the first combination if an autoincrement side-effect on the first insn has effectively been lost. The issue was detected in OpenBSD but their fix was not very good. Huge thanks to the upstream author, Eric Botcazou, for permitting the use of this patch under GPLv2. MFC after: 5 days Notes: svn path=/head/; revision=260361
* | gcc: backport some fixes from llvm-gccPedro F. Giffuni2014-01-054-152/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | llvm-gcc backported some patches from gcc trunk: http://gcc.gnu.org/ml/gcc-cvs/2007-05/msg00662.html http://gcc.gnu.org/ml/gcc-cvs/2007-07/msg00019.html http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00240.html http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00493.html The first two were always GPL2. The last two were added after the GPL3 transition, but were written by aaw@google.com and Rafael EspĂ­ndola got permission to relicense them under the GPL2 for inclusion in llvm-gcc. This fixes GCC-PR c++/31749 Obtained from: llvm-gcc (rev. 75463; GPLv2) MFC after: 2 weeks Notes: svn path=/head/; revision=260332