aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2026-02-03 14:01:07 +0000
committerAndrew Turner <andrew@FreeBSD.org>2026-02-03 17:11:50 +0000
commitf0516ed4652cfb7435f8c5a16b46dc067779a1a8 (patch)
tree72eb69d6ae5d32ca21430d42e108f3b4c1b07c7b
parent00f68392130cf597c7c76669c63dab26b31630c1 (diff)
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
-rw-r--r--lib/libc/aarch64/string/Makefile.inc14
-rw-r--r--lib/libc/aarch64/string/memcpy.S2
-rw-r--r--lib/libc/aarch64/string/memset.S1
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"