Avoid a deadlock between vnode reclamation and lfs_writevnodes(). A vnode
being reclaimed will be in state VS_RECLAIMING, while it attemmpts to get the
segment lock. lfs_writevnodes() holds the segment lock while traversing the
list of vnodes; so it must skip vnodes in the process of reclamation in order
to avoid a deadlock.
do what summitfb does and track read- and write modes separately, in order to
avoid unnecessary register writes and pipeline stalls
we will need this later...
disable lint for libgfortran.
looks like all the 4 builds failed for it, though 2 were a build issue,
testing them shows it fails anyway.
on x86 it fails with eg:
/usr/src3/external/gpl3/gcc/dist/libquadmath/quadmath.h(33): error: invalid type for _Complex [308]
included from /usr/src3/external/gpl3/gcc/dist/libquadmath/quadmath_weak.h(24)
included from /usr/src3/external/gpl3/gcc/dist/libgfortran/libgfortran.h(62)
included from /usr/src3/external/gpl3/gcc/dist/libgfortran/runtime/ISO_Fortran_binding.c(29)
on sparc/sparc64 we have:
sparc64--netbsd-lint: /home/builds/ab/HEAD-lint/sparc64/20260119052522Z-tools/libexec/sparc64--netbsd-lint1 got signal 6
sparc--netbsdelf-lint: /home/builds/ab/HEAD-lint/sparc/20260119052522Z-tools/libexec/sparc--netbsdelf-lint1 got signal 6
from the build infrastructure.
fix more recently introduced build errors.
libquadmath, if used, needs to be built before libgfortran, so make sure
there's a .WAIT between them, not between libquadmath and priors.
riscv64 may have the same ptrdiff_t issue has riscv32.
fix some vax and riscv build issues.
finclude/ieee*.mod are not used on vax.
use a vax-OK "min" for c99_functions.c
disable warnings for some things on vax (some seem valid-ish.)
there may be a riscv32 issue with PTRDIFF_TYPE, ignore warning for now
enable gfortran builds
add gfortran headers (there are some libgomp ones missing still).
build libquadmath (maybe) and libgfortran. add sets entries.
install a missed libgomp file (now derived from fetched variables.)
build the f951 and gfortran programs. add fortran to the frontend
language specs.
tested on i386, amd64, sparc, arm64, arm32 (v7hfel), sparc64, and
mipsn64eb. many others build.
mips switched to GCC 14 a while back.
leaves alpha, sh3, and m68*. (we could probably switch sun2, it
does not include gcc itself which is what fails on m68k building
pkgsrc nbcompat.)
port the __c99_cabs*() rename fixes into GCC 12.
almost identical to the GCC 14 version, riscv-builtins.cc needed a new
#include of tm_p.h to get netbsd-protos.h.