fsck_hammer2 - Print recursion stack with error message
* Print the full blockref spec (that can be used in a "hammer2 show")
* Print the recursion stack leading up to and including the error block.
* Errored blocks and stack are printed without needing any -d options.
Note that two -d opts will dump the full stack during the scan, which
could end up being terrabytes of text so... maybe don't do that.
etc/Makefile: Skip directories in 'check-deprecated-files'
Skip directories so we don't list the directories containing the
deprecated files in the end.
For example, the line `/usr/lib/gcc47 is deprecated` will not appear
after this change:
```
===> Checking for deprecated files
(harmless ELF linker warnings may appear here)
/lib/libprivate_crypto.so.45 is deprecated
/lib/libprivate_crypto.so.46 is deprecated
/lib/libprivate_ssl.so.47 is deprecated
/lib/libprivate_ssl.so.48 is deprecated
/usr/lib/gcc47/libgomp.so.1 is deprecated
/usr/lib/gcc47/libssp.so.0 is deprecated
/usr/lib/gcc47/libstdc++.so.9 is deprecated
/usr/lib/gcc47 is deprecated
==================================================================
[2 lines not shown]
gcc47: Unhook build and remove makefiles
We had been keeping GCC 4.7.4 for a long time because it's the last GCC
that was written in pure C and thus can be bootstrapped with a C
compiler. However, GCC 4.7.4 only has experimental C++11 support, so
it's unable to compile the newly imported GCC 12.5.
There are too many missing pieces in GCC 4.7.4 for it to be able to
compile GCC 12.5. A more feasible method would be to patch GCC 12.5
sources to avoid the unsupported C++11 features. Even we could tweak
the GCC 12.5 source to make it compilable by GCC 4.7.4, it's a big
burden to maintain it and to import a newer GCC like 14.x/15.x.
In conclusion, there is really no much point in keeping GCC 4.7.4
anymore given that it cannot build the world now.
Discussed-with: swildner
gcc80: Add MKDEPCC=${CXX} for drivers/{c++,cc,cpp,gcov}
The four drivers define ${SRCS} of .c files but actually use/require a
C++ compiler to compile them, so add MKDEPCC=${CXX} to ensure "mkdep"
working correctly for future-proof.
Meanwhile, add the 'hack to force c++ compiler' comment to libcommon and
libcommon-target makefiles as they're already doing so.
Suggested-by: swildner
stand: Fix zf_open() by providing 'zalloc' and 'zfree' hooks
When Z_SOLO is defined, zlib is built for a standalone environment,
where there is no host memory management, so the caller must provides
the 'zalloc' and 'zfree' hooks. Otherwise, inflateInit2() would return
-2 (Z_STREAM_ERROR).
This fixes the failure of booting into rescue mode because loader failed
to decompress 'initrd.img.gz':
```
zf_open: inflateInit returned -2 : (null)
Unable to load /kernel/initrd.img
```
gcc120: Adjust LDADD and add DPADD for libstdcxx/product
* Adjust LDADD to move '-lm' out of --whole-archive scope, aligning with
the GCC's own Makefile rules.
* Add DPADD to define the necessary library dependencies.
gcc120: Add '.ORDER' to fix race in libstdcxx/headers
Add '.ORDER' rules to create directories before generating the header
files. I observed the race failure on my 3700X desktop with -j16.
share/mk: Allow per-group flags to override default compile flags
Per-group flags support was introduced in commit
6d68f83fef807ce255df27c2482db0d58ff71744, but the per-group flags (i.e.,
${${_FG}_FLAGS} and ${_${.IMPSRC}_FLAGS}) were listed *before* the
default/common compile flags (e.g., ${CFLAGS}). As a result, there was
no way for per-group flags to override the default compile flags, which
was counter-intuitive and made the feature less useful.
This commit splits the per-group flags into '-I' flags and non-'-I'
flags, and reorders the non-'-I' flags *after* the default compile flags,
allowing them to be overridden on a per-group basis as needed.
An immediate beneficiary will be gnu/lib/gccXX/libstdcxx, which requires
multiple file groups to override the default compile flags.
gcc120: Clean up libstdcxx/libconv_supc's Makefile
The 'gnu11', 'gnu14', and 'gnu1z' flags groups were inherited from gcc80
and are not needed for gcc120, so just remove them.
gcc120: Simplify libstdcxx makefiles
With the last commit allowing the per-group flags to override the
default flags, the libstdcxx makefiles can be simplified a lot.
gcc80: Fix libstdcxx/product/Makefile similar to gcc120's
Similar to the same adjustments to gcc120's, apply the same LDADD and
DPADD changes to gcc80's libstdcxx/product/Makefile. In addition,
remove the unused ARADD, because we're using custom AR script to create
the static archive.
vendor/GCC80: Bring in two fixes from upstream.
These fix -Wmissing-template-keyword and -Wregister warnings we were
getting when building gcc-8.3 with gcc-12.5.
commit 642dc602f89b2c11d5d833a52f37b04427a27cab
Author: Marek Polacek <polacek at redhat.com>
Date: Fri May 15 17:54:05 2020 -0400
c++: Regenerate cp/cfns.h.
Current cfns.h includes register-qualified variables and that wouldn't
play well when bootstrapping with GCC that uses the C++17 dialect,
because 'register' was removed in C++17. Regenerating it using the
command specified in cfns.h luckily cleaned this up.
* cfns.h: Regenerated.
commit fccd5b48adf568f0aabe5d5f51206a9d42da095a
[12 lines not shown]
Fix the two -Wdangling-pointer warnings in world.
Move line[] to function scope.
-Wdangling-pointer was introduced in GCC 12 and is part of -Wall.
Taken-from: FreeBSD
gcc120: Fix compatibility.So building in libstdcxx
My previous commit 1f0bbf647d9751967ce37b93246695bb2c7e819c actually
fixed the building of the extra .So objects for libstdcxx by adding the
missing '-D_GLIBCXX_SHARED' CXXFLAGS. However, the 'compatibility.So'
object failed to build after the commit because of the two reasons:
- The <bits/compatibility.h> header was missing. It was even removed on
the vendor branch.
- The '-std=gnu++98' was missing on the compilation command.
This commit prepares the needed <bits/compatibility.h> header, and adds
the 'gnu98' flags group for the ${cxx98_sources}.
vendor/GCC120: Add back libstdc++-v3/config/abi/compatibility.h
It's required to build 'libstdc++-v3/src/c++98/compatibility.cc' in
shared mode (-D_GLIBCXX_SHARED).
make.conf(5): Remove legacy obsolete MAKE_SHELL description
The MAKE_SHELL variable is unused in our bmake framework. I guess it's
a legacy from the FreeBSD fmake framework.
<sys.mk>: Fix ${SHELL} to ignore the environment
From the POSIX standard [1]:
> The SHELL macro shall be treated specially. It shall be provided by
> make and set to the pathname of the shell command language interpreter
> (see sh). The SHELL environment variable shall not affect the value of
> the SHELL macro. If SHELL is defined in the makefile or is specified
> on the command line, it shall replace the original value of the SHELL
> macro, but shall not affect the SHELL environment variable. Other
> effects of defining SHELL in the makefile or on the command line are
> implementation-defined.
So fix ${SHELL} to be ${.SHELL:Ush}, making it a Bourne/POSIX shell
regardless of the user's interactive shell, so that it's suitable for
use in the makefiles. This is obtained from 'contrib/bmake/mk/sys.mk'.
[1] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html#tag_20_76_13_05
<bsd.dep.mk>: Always create the depend file in the end
In case that the custom ${MKDEPCMD} does not create the depend file for
empty dependency.
While there, tweak '${_ALL_DEPENDS}' to use the ':N*.[csS]' modifier to
align with the subsequent '.if' expressions filtering on the files.
Suggested-by: swildner
<sys.mk>: Fix ${NXCXXFLAGS} to base on ${CXXFLAGS}
${CXXFLAGS} is already defined above in <sys.mk>, so it's better and
more correct to define ${NXCXXFLAGS} based on ${CXXFLAGS}.
Actually, this fixes ${NXCXXFLAGS} to obtain the correct '-std' flag
from ${CXXFLAGS}.
kernel: Ignore GCC 12.5's -Winfinite-recursion for stack_guard_panic2().
It's a function that we actually want to recurse infinitely (to force
a kernel stack guard panic).
-Winfinite-recursion was introduced in GCC 12 and is part of -Wall.
Tested-by: aly
Sync ACPICA with Intel's version 20251212 (from previously 20211217).
Numerous changes, too many to list.
For a detailed list, please see sys/contrib/dev/acpica/changes.txt.
It also fixes a few of GCC 12.5's -Wdangling-pointer warnings.