https://gcc.gnu.org/g:940db23b6b8461a97eead393a1adf85ef0905862
commit r17-2318-g940db23b6b8461a97eead393a1adf85ef0905862 Author: Rainer Orth <[email protected]> Date: Fri Jul 10 19:12:55 2026 +0200 c++: modules: Allow for EOPNOTSUPP error from posix_fallocate All g++/modules tests SEGV on NetBSD/amd64 in a ZFS build directory. This is similar to the FreeBSD case: commit a94156b8ee7165c32f73f9cd11c9b8f3b8687d3b Author: Rainer Orth <[email protected]> Date: Tue May 5 10:23:12 2026 +0200 c++: modules: Fix posix_fallocate error handling However, posix_fallocate returns EOPNOTSUPP here, which is distinct from ENOTSUP. This patch allows for both, providing a fallback definition since EOPNOTSUPP may be missing. Bootstrapped without regressions on amd64-pc-netbsd10.1, x86_64-pc-linux-gnu, and i386-pc-solaris2.11. 2026-07-08 Rainer Orth <[email protected]> gcc/cp: * module.cc (EOPNOTSUPP): Provide fallback. (elf_out::create_mapping) [HAVE_POSIX_FALLOCATE]: Allow for EOPNOTSUPP result. Diff: --- gcc/cp/module.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index f250dc3e9dfe..da0e0e0aae3a 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -258,6 +258,11 @@ Classes used: #endif #endif +/* Provide fallback. */ +#ifndef EOPNOTSUPP +#define EOPNOTSUPP ENOTSUP +#endif + /* Some open(2) flag differences, what a colourful world it is! */ #if defined (O_CLOEXEC) // OK @@ -1912,7 +1917,7 @@ elf_out::create_mapping (unsigned ext, bool extending) { #ifdef HAVE_POSIX_FALLOCATE int result = posix_fallocate (fd, offset, length); - if (result != EINVAL && result != ENOTSUP) + if (result != EINVAL && result != ENOTSUP && result != EOPNOTSUPP) return result == 0; /* Not supported by the underlying filesystem, fallback to ftruncate. */ #endif
