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.
<bsd.dep.mk>: Several tweaks and style cleanups
* Remove duplicate ':N*.cpp' from ${_ALL_DEPENDS}.
* Simplify '!empty(${_FG:M_})' to be '${_FG} == "_"'.
* Replace `cmd` with $(cmd), which is clearer in expressing nested
command substitution.
* Adjust indentations and add comments to help read the complex flow.
<bsd.subdir.mk>: Fix SUBDIR ordering for non-parallel mode
As documented in make(1) man page as well as my tests, the '.ORDER'
directive only applies to the parallel mode (even -j1), so the
${SUBDIR_ORDERED} is actually ignored in the non-parallel mode. As a
result, the build ordering for the subdirectories is their order in
${SUBDIR}, which may be different from ${SUBDIR_ORDERED}, and this can
lead to build failures. For example, gnu/lib/gcc120/libstd++fs failed
to build because it was built before the dependent libstdcxx/headers.
Discussed-with: swildner
gcc120: Fix "make depend" failure in libgcc_eh
libgcc_eh pulled the 'FLAGS_GROUPS=sse2' from libgcc/Makefile.src and
thus "make depend" would call mkdep(1) on the 'sse2' group, but it would
fail because the 'sfp-machine.h' header was not generated.
Fix the problem by moving the 'FLAGS_GROUPS=sse2' and related variables
from libgcc/Makefile.src to {libgcc,libgcc_pic}/Makefile, where they're
actually used.
Discussed-with: swildner
<bsd.dep.mk>: Apply .NOPATH to .depend_${group} files as well
Each group defined in ${FLAGS_GROUPS} will have its own depend file
named '.depend_${group}'. Apply the '.NOPATH' attribute to them as well
as the main '.depend'.
Meanwhile, tweak the '.NOPATH' syntax as source/attribute to align
better with the make(1) man page.
<bsd.dep.mk>: Fix issues in generating depend files
* Remove the '> ${.TARGET}' command so that a repeat 'make depend' would
not falsely succeed.
Before this change, an empty '.depend' file would be created even if
the mkdep(1) fails, and then another 'make depend' (e.g., from
'make quickworld') would skip creating the depend files and thus
falsely succeed.
* Remove the '-' prefix from the 'rm -f ${.TARGET}' command. This fixes
that the mkdep(1) failure was ignored in the jobs mode (i.e., make -jN).
In the jobs mode, all the commands of a target is executed by one
single shell instance. When the shell does not have ErrCtl enabled
(which is the default), the '-' prefix affects the entire job rather
than specific commands prefixed with '-'. See make(1) for more
details.
[4 lines not shown]
kernel/pci: Use ACPI's ACPI_PWR_FOR_SLEEP().
__HAVE_ACPI was never defined in DragonFly because the PCI upgrade
that brought in this check (4d28e78f7e70287ae03930ce9e16ba027ca69477)
missed actually defining it.
It only affects _suspend() and _resume() functions so in practice it
shouldn't cause any functional change.
mtree(8): Teach about the 'xlink' flag.
This fixes, for now, a confusing warning message during installworld
to be more meaningful:
empty: flags ("schg" is not "schg", modified to "schg")
becomes
empty: flags ("schg" is not "xlink,schg", modified to "schg")
pc64: Move 4 file-scope static variables into create_pagetables()
The KPTbase/KPTphys/KPDbase/KPDphys file-scope static variables are now
only used by create_pagetables(), so just move them into the function.
After this change, the BSS size of the compiled object becomes the same
for GCC 8.3 and GCC 12.5. Otherwise, GCC 12.5 would always place these
4 static variables in BSS, resulting in 32 bytes bigger BSS than the
object compiled by GCC 8.3.
While there, auto trim the trailing whitespaces.