First stab at UPDATING notes for clang 3.5.0.
This commit is contained in:
parent
46bb7dfa77
commit
9eb8b07458
56
UPDATING
56
UPDATING
@ -31,6 +31,62 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
|
|||||||
disable the most expensive debugging functionality run
|
disable the most expensive debugging functionality run
|
||||||
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
||||||
|
|
||||||
|
20141231:
|
||||||
|
Clang, llvm and lldb have been upgraded to 3.5.0 release.
|
||||||
|
|
||||||
|
As of this release, a prerequisite for building llvm and clang is a
|
||||||
|
C++11 capable compiler and C++11 standard library. This means that to
|
||||||
|
be able to successfully build the cross-tools stage of buildworld, with
|
||||||
|
clang as the bootstrap compiler, your system compiler or cross compiler
|
||||||
|
should either be clang 3.3 or later, or gcc 4.8 or later, and your
|
||||||
|
system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
|
||||||
|
later.
|
||||||
|
|
||||||
|
On any earlier standard FreeBSD 10.x or 11.x installation, where clang
|
||||||
|
and libc++ are on by default (that is, on x86 or arm), this should work
|
||||||
|
out of the box, unless you explicitly disabled clang or libc++. In that
|
||||||
|
case, you must re-enable, build and install both of those first.
|
||||||
|
|
||||||
|
On 9.x installations where clang is enabled by default, e.g. on x86 and
|
||||||
|
powerpc, libc++ will not be enabled by default, so libc++ should be
|
||||||
|
built (with clang) and installed first. If both clang and libc++ are
|
||||||
|
missing, build clang first, then use it to build libc++.
|
||||||
|
|
||||||
|
On 8.x and earlier installations, upgrade to 9.x first, and then follow
|
||||||
|
the instructions for 9.x above.
|
||||||
|
|
||||||
|
This new version of clang introduces a number of new warnings, of which
|
||||||
|
the following are most likely to appear:
|
||||||
|
|
||||||
|
-Wabsolute-value
|
||||||
|
|
||||||
|
This warns in two cases, for both C and C++:
|
||||||
|
* When the code is trying to take the absolute value of an unsigned
|
||||||
|
quantity, which is effectively a no-op, and almost never what was
|
||||||
|
intended. The code should be fixed, if at all possible. If you are
|
||||||
|
sure that the unsigned quantity can be safely cast to signed, without
|
||||||
|
loss of information or undefined behavior, you can add an explicit
|
||||||
|
cast, or disable the warning.
|
||||||
|
|
||||||
|
* When the code is trying to take an absolute value, but the called
|
||||||
|
abs() variant is for the wrong type, which can lead to truncation.
|
||||||
|
If you want to disable the warning instead of fixing the code, please
|
||||||
|
make sure that truncation will not occur, or it might lead to unwanted
|
||||||
|
side-effects.
|
||||||
|
|
||||||
|
-Wtautological-undefined-compare and
|
||||||
|
-Wundefined-bool-conversion
|
||||||
|
|
||||||
|
These warn when C++ code is trying to compare 'this' against NULL, while
|
||||||
|
'this' should never be NULL in well-defined C++ code. However, there is
|
||||||
|
some legacy (pre C++11) code out there, which actively abuses this
|
||||||
|
feature, which was less strictly defined in previous C++ versions.
|
||||||
|
|
||||||
|
Squid and openjdk do this, for example. The warning can be turned off
|
||||||
|
for C++98 and earlier, but compiling the code in C++11 mode might result
|
||||||
|
in unexpected behavior; for example, the parts of the program that are
|
||||||
|
unreachable could be optimized away.
|
||||||
|
|
||||||
20141222:
|
20141222:
|
||||||
The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
|
The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
|
||||||
kernel sources have been removed. The .h files remain, since some
|
kernel sources have been removed. The .h files remain, since some
|
||||||
|
Loading…
Reference in New Issue
Block a user