git: f0516ed4652c - main - libc/aarch64: Split out the MOPS functions

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Tue, 03 Feb 2026 17:27:44 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=f0516ed4652cfb7435f8c5a16b46dc067779a1a8

commit f0516ed4652cfb7435f8c5a16b46dc067779a1a8
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2026-02-03 14:01:07 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2026-02-03 17:11:50 +0000

    libc/aarch64: Split out the MOPS functions
    
    This allows static binaries to only include the functions they
    reference.
    
    Reviewed by:    imp
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D54775
---
 lib/libc/aarch64/string/Makefile.inc | 14 ++++++++++++++
 lib/libc/aarch64/string/memcpy.S     |  2 --
 lib/libc/aarch64/string/memset.S     |  1 -
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/lib/libc/aarch64/string/Makefile.inc b/lib/libc/aarch64/string/Makefile.inc
index faf2f4566b30..20a844f80e17 100644
--- a/lib/libc/aarch64/string/Makefile.inc
+++ b/lib/libc/aarch64/string/Makefile.inc
@@ -14,6 +14,11 @@ AARCH64_STRING_FUNCS= \
 	strnlen \
 	strrchr
 
+AARCH64_STRING_IFUNC_FILES= \
+	memcpy-mops.S \
+	memmove-mops.S \
+	memset-mops.S
+
 # SIMD-enhanced routines not derived from Arm's code
 MDSRCS+= \
 	memchr.S \
@@ -58,6 +63,15 @@ MDSRCS+=	${FUNC}.S
 CFLAGS.${FUNC}.S+=-I${SRCTOP}/contrib/arm-optimized-routines/string
 .endfor
 
+.for FILE in ${AARCH64_STRING_IFUNC_FILES}
+${FILE}: ${LIBC_SRCTOP}/aarch64/string/Makefile.inc
+	printf '/* %sgenerated by libc/aarch64/string/Makefile.inc */\n' @ > ${.TARGET}
+	printf '#include "aarch64/%s"\n' ${FILE} >> ${.TARGET}
+CLEANFILES+=   ${FILE}
+MDSRCS+=       ${FILE}
+CFLAGS.${FILE}+=-I${SRCTOP}/contrib/arm-optimized-routines/string
+.endfor
+
 # Several files are wrappers in the src tree for the implementation from
 # arm-optimized-routines
 CFLAGS.memchr.S+=-I${SRCTOP}/contrib/arm-optimized-routines/string
diff --git a/lib/libc/aarch64/string/memcpy.S b/lib/libc/aarch64/string/memcpy.S
index 06598d59bcf2..c4601d158d6b 100644
--- a/lib/libc/aarch64/string/memcpy.S
+++ b/lib/libc/aarch64/string/memcpy.S
@@ -1,3 +1 @@
 #include "aarch64/memcpy-advsimd.S"
-#include "aarch64/memcpy-mops.S"
-#include "aarch64/memmove-mops.S"
diff --git a/lib/libc/aarch64/string/memset.S b/lib/libc/aarch64/string/memset.S
index dfe1c54273b9..acf707cdb7ec 100644
--- a/lib/libc/aarch64/string/memset.S
+++ b/lib/libc/aarch64/string/memset.S
@@ -1,2 +1 @@
 #include "aarch64/memset.S"
-#include "aarch64/memset-mops.S"