When linking a program that uses copy_file_range on GNU/Hurd you will
see the following warning:
gcc -std=gnu23 -Wno-error -g -O2 -o test-copy-file test-copy-file.o
libtests.a ../gllib/libgnu.a libtests.a ../gllib/libgnu.a libtests.a -lacl
-lattr -lacl -lbacktrace -lm -lm -lm -lm -lm -lm -lm -lm -lm -lm -lm
/usr/bin/ld: ../gllib/libgnu.a(copy-file.o): in function
`copy_file_internal':
/home/collin/testdir-all/gllib/copy-file.c:88:(.text+0xa7): warning:
copy_file_range is not implemented and will always fail
This is because Hurd does not implement it and the version included by
glibc just returns ENOSYS, with a link warning.
Nothing needing fixing in Gnulib, since our "replacement" can only
return ENOSYS as well.
But I thought it was worth documenting. Done with the attached.
Collin
>From 07610f0dbe3d209206918af76dea6d1e061e4425 Mon Sep 17 00:00:00 2001
Message-ID: <07610f0dbe3d209206918af76dea6d1e061e4425.1752635988.git.collin.fu...@gmail.com>
From: Collin Funk <[email protected]>
Date: Tue, 15 Jul 2025 20:16:46 -0700
Subject: [PATCH] doc: Mention copy_file_range stub on GNU/Hurd.
* doc/glibc-functions/copy_file_range.texi: Use @code around errno
constants. Mention that the GNU/Hurd version of this function is just a
stub.
---
ChangeLog | 7 +++++++
doc/glibc-functions/copy_file_range.texi | 8 ++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 806e273cf8..d2b4e6c14e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2025-07-15 Collin Funk <[email protected]>
+
+ doc: Mention copy_file_range stub on GNU/Hurd.
+ * doc/glibc-functions/copy_file_range.texi: Use @code around errno
+ constants. Mention that the GNU/Hurd version of this function is just a
+ stub.
+
2025-07-15 Bruno Haible <[email protected]>
nstrftime: Add support for non-Gregorian calendars.
diff --git a/doc/glibc-functions/copy_file_range.texi b/doc/glibc-functions/copy_file_range.texi
index 19f180652b..0878fd50fc 100644
--- a/doc/glibc-functions/copy_file_range.texi
+++ b/doc/glibc-functions/copy_file_range.texi
@@ -24,12 +24,16 @@ @node copy_file_range
This function exists only on Linux and FreeBSD and is therefore
missing on many platforms:
glibc 2.26, macOS 14, FreeBSD 12.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 33.
-But the replacement function is only a stub: It always fails with error ENOSYS.
+But the replacement function is only a stub: It always fails with error @code{ENOSYS}.
@item
This function has many problems on Linux kernel versions before 5.3.
On these kernel versions, the replacement function always fails with
-error ENOSYS.
+error @code{ENOSYS}.
+
+@item
+This function is provided on GNU/Hurd but it is only a stub: It always
+fails with error @code{ENOSYS}.
@end itemize
Portability problems not fixed by Gnulib:
--
2.50.1