Log message:
Mass-change BUILD_DEPENDS to TOOL_DEPENDS outside mk/.
Almost all uses, if not all of them, are wrong, according to the
semantics of BUILD_DEPENDS (packages built for target available for
use _by_ tools at build-time) and TOOL_DEPEPNDS (packages built for
host available for use _as_ tools at build-time).
No change to BUILD_DEPENDS as used correctly inside buildlink3.
As proposed on tech-pkg:
https://mail-index.netbsd.org/tech-pkg/2023/06/03/msg027632.html
|
Log message:
gcc12: added version 12.1.0
GCC 12
Caveats
An ABI incompatibility between C and C++ when passing or returning by value \
certain aggregates containing zero width bit-fields has been discovered on \
various targets. As mentioned in PR102024, since the PR42217 fix in GCC 4.5 the \
C++ front-end has been removing zero width bit-fields from the internal \
representation of the aggregates after the layout of those aggregates, but the C \
front-end kept them, so passing e.g. struct S { float a; int : 0; float b; } or \
struct T { float c; int : 0; } by value could differ between C and C++. Starting \
with GCC 12 the C++ front-end no longer removes those bit-fields from the \
internal representation and per clarified psABI some targets have been changed, \
so that they either ignore those bit-fields in the argument passing by value \
decisions in both C and C++, or they always take them into account. x86-64, ARM \
and AArch64 will always ignore them (so there is a C ABI incompatibility between \
GCC 11 and earlier with GCC 12 or later), PowerPC64 E
LFv2 and S/390 always take them into account (so there is a C++ ABI \
incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, \
incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of \
these already starting with GCC 10. As the ABI requires, MIPS takes them into \
account handling function return values so there is a C++ ABI incompatibility \
with GCC 4.5 through 11. For function arguments on MIPS, refer to the MIPS \
specific entry. GCC 12 on the above targets will report such incompatibilities \
as warnings or other diagnostics unless -Wno-psabi is used.
C: Computed gotos require a pointer type now.
C++: Two non-standard std::pair constructors have been deprecated. These allowed \
the use of an rvalue and a literal 0 to construct a pair containing a move-only \
type and a pointer. The nullptr keyword should be used to initialize the pointer \
member instead of a literal 0, as this is portable to other C++ implementations.
The configuration option --enable-libstdcxx-allocator no longer supports the \
bitmap, mt, and pool arguments. Those configurations had been broken for some \
time.
Fortran: OpenMP code using the omp_lib.h include file can no longer be compiled \
with -std=f95 but now requires at least -std=f2003. Alternatively, use the \
omp_lib module, which still supports -std=f95 and is recommended to be used \
instead in general.
OpenMP offloading to Intel MIC has been deprecated and will be removed in a \
future release.
The cr16 target with the cr16-*-* configuration has been obsoleted and will be \
removed in a future release.
The hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11* configurations targeting 32-bit \
PA-RISC with HP-UX have been obsoleted and will be removed in a future release.
The m32c*-*-rtems* configuration has been obsoleted and will be removed in a \
future release.
The support for the m32r-*-linux*, m32rle-*-linux*, m68k*-*-openbsd* and \
vax-*-openbsd* configurations has been removed.
STABS: Support for emitting the STABS debugging format is deprecated and will be \
removed in the next release. All ports now default to emit DWARF (version 2 or \
later) debugging info or are obsoleted.
The optimization level -Ofast now implies -fno-semantic-interposition.
General Improvements
Vectorization is enabled at -O2 which is now equivalent to the original -O2 \
-ftree-vectorize -fvect-cost-model=very-cheap. Note that default vectorizer cost \
model has been changed which used to behave as -fvect-cost-model=cheap were \
specified.
GCC now supports the ShadowCallStack sanitizer, which can be enabled using the \
command-line option -fsanitize=shadow-call-stack. This sanitizer currently only \
works on AArch64 targets and it requires an environment in which all code has \
been compiled with -ffixed-r18. Its primary initial user is the Linux kernel.
|