Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162638411
D57662.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D57662.diff
View Options
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1616,6 +1616,8 @@
mdchain.9 md_get_uio.9 \
mdchain.9 md_initm.9 \
mdchain.9 md_next_record.9
+MLINKS+=memcpy.9 memcpy_data.9
+MLINKS+=memmove.9 memmove_data.9
MLINKS+=microtime.9 bintime.9 \
microtime.9 getbintime.9 \
microtime.9 getmicrotime.9 \
diff --git a/share/man/man9/bcopy.9 b/share/man/man9/bcopy.9
--- a/share/man/man9/bcopy.9
+++ b/share/man/man9/bcopy.9
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd June 19, 2026
+.Dd July 1, 2026
.Dt BCOPY 9
.Os
.Sh NAME
@@ -46,7 +46,9 @@
bytes from object
.Fa src
to object
-.Fa dst .
+.Fa dst
+preserving the provenance of pointers in the copied object
+.Pq see Xr memory_model 7 for further information .
The two objects may overlap.
If
.Fa len
diff --git a/share/man/man9/memcpy.9 b/share/man/man9/memcpy.9
--- a/share/man/man9/memcpy.9
+++ b/share/man/man9/memcpy.9
@@ -29,16 +29,19 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd June 19, 2026
+.Dd July 1, 2026
.Dt MEMCPY 9
.Os
.Sh NAME
-.Nm memcpy
+.Nm memcpy ,
+.Nm memcpy_data
.Nd copy bytes in memory
.Sh SYNOPSIS
.In sys/systm.h
.Ft void *
.Fn memcpy "void *dst" "const void *src" "size_t len"
+.Ft void *
+.Fn memcpy_data "void *dst" "const void *src" "size_t len"
.Sh DESCRIPTION
The
.Fn memcpy
@@ -47,22 +50,31 @@
bytes from object
.Fa src
to object
-.Fa dst .
+.Fa dst
+in a manner that preserves the provenance of pointers in the copied object
+.Pq see Xr memory_model 7 for further information .
If
.Fa src
and
.Fa dst
overlap, the results are not defined.
+The
+.Fn memcpy_data
+function does the same except that it does not preserve the provenance
+of pointers in the copied object.
+On CHERI targets, the validity tag of any copied capability is
+explicitly cleared.
.Sh RETURN VALUES
The
.Fn memcpy
-function
-returns the original value of
+and
+.Fn memcpy_data
+functions return the original value of
.Fa dst .
-.Pp
.Sh SEE ALSO
.Xr bcopy 9 ,
-.Xr memmove 9
+.Xr memmove 9 ,
+.Xr memmove_data 9
.Sh STANDARDS
The
.Fn memcpy
@@ -76,3 +88,7 @@
.At V
and was reimplemented for
.Bx 4.3 Tahoe .
+The
+.Fn memcpy_data
+function first appeared in
+.Fx 16.0 .
diff --git a/share/man/man9/memmove.9 b/share/man/man9/memmove.9
--- a/share/man/man9/memmove.9
+++ b/share/man/man9/memmove.9
@@ -29,16 +29,19 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd June 19, 2026
+.Dd July 1, 2026
.Dt MEMMOVE 9
.Os
.Sh NAME
-.Nm memmove
+.Nm memmove ,
+.Nm memmove_data
.Nd copy bytes in memory
.Sh SYNOPSIS
.In sys/systm.h
.Ft void *
.Fn memmove "void *dst" "const void *src" "size_t len"
+.Ft void *
+.Fn memmove_data "void *dst" "const void *src" "size_t len"
.Sh DESCRIPTION
The
.Fn memmove
@@ -49,18 +52,34 @@
to object
.Fa dst .
The two objects may overlap;
-the copy is always done in a non-destructive manner.
+the copy is always done in a non-destructive manner and preserves
+the provenance of pointers in the copied object
+.Pq see Xr memory_model 7 for further information .
+The
+.Fn memmove_data
+function does the same except that it does not preserve the provenance
+of pointers in the copied object.
+On CHERI targets, the validity tag of any copied capability is
+explicitly cleared.
.Sh RETURN VALUES
The
.Fn memmove
-function returns the original value of
+and
+.Fn memmove_data
+functions return the original value of
.Fa dst .
.Sh SEE ALSO
.Xr bcopy 9 ,
-.Xr memcpy 9
+.Xr memcpy 9 ,
+.Xr memcpy_data 9
.Sh STANDARDS
The
.Fn memmove
function
conforms to
.St -isoC .
+.Sh HISTORY
+The
+.Fn memmove_data
+function first appeared in
+.Fx 16.0 .
diff --git a/sys/sys/systm.h b/sys/sys/systm.h
--- a/sys/sys/systm.h
+++ b/sys/sys/systm.h
@@ -256,6 +256,15 @@
void *memcpy(void * _Nonnull to, const void * _Nonnull from, size_t len);
void *memmove(void * _Nonnull dest, const void * _Nonnull src, size_t n);
int memcmp(const void *b1, const void *b2, size_t len);
+#ifdef __CHERI__
+void *memcpy_data(void * _Nonnull to, const void * _Nonnull from,
+ size_t len);
+void *memmove_data(void * _Nonnull dest, const void * _Nonnull src,
+ size_t n);
+#else
+#define memcpy_data memcpy
+#define memmove_data memmove
+#endif
#ifdef SAN_NEEDS_INTERCEPTORS
#define SAN_INTERCEPTOR(func) \
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 16, 7:26 AM (6 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35129350
Default Alt Text
D57662.diff (4 KB)
Attached To
Mode
D57662: CHERI: add mem{cpy,move}_data
Attached
Detach File
Event Timeline
Log In to Comment