Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107612089
D32774.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D32774.diff
View Options
diff --git a/lib/libc/aarch64/string/Makefile.inc b/lib/libc/aarch64/string/Makefile.inc
--- a/lib/libc/aarch64/string/Makefile.inc
+++ b/lib/libc/aarch64/string/Makefile.inc
@@ -1,20 +1,41 @@
# $FreeBSD$
#
-# String handling from the Cortex Strings library
-# https://git.linaro.org/toolchain/cortex-strings.git
+# String handling from the Arm Optimized Routines
+# https://github.com/ARM-software/optimized-routines
#
-.PATH: ${SRCTOP}/contrib/cortex-strings/src/aarch64
+AARCH64_STRING_FUNCS= \
+ memchr \
+ memcmp \
+ memcpy \
+ memmove \
+ memrchr \
+ memset \
+ stpcpy \
+ strchr \
+ strchrnul \
+ strcmp \
+ strcpy \
+ strlen \
+ strncmp \
+ strnlen \
+ strrchr
-MDSRCS+= \
- memchr.S \
- memcmp.S \
- memcpy.S \
- memmove.S \
- memset.S \
- strchr.S \
- strcmp.S \
- strcpy.S \
- strlen.S \
- strncmp.S \
- strnlen.S
+#
+# Add the above functions. Generate an asm file that includes the needed
+# Arm Optimized Routines file defining the function name to the libc name.
+# Some file need multiple macros defined or a weak symbol added we can
+# override the generated file in these cases.
+#
+.for FUNC in ${AARCH64_STRING_FUNCS}
+.if !exists(${FUNC}.S)
+${FUNC}.S:
+ printf '/* %sgenerated by libc/aarch64/string/Makefile.inc */\n' @ > ${.TARGET}
+ printf '#define __%s_aarch64 %s\n' ${FUNC} ${FUNC} >> ${.TARGET}
+ printf '#include "aarch64/%s.S"\n' ${FUNC} >> ${.TARGET}
+CLEANFILES+= ${FUNC}.S
+.endif
+
+MDSRCS+= ${FUNC}.S
+CFLAGS.${FUNC}.S+=-I${SRCTOP}/contrib/arm-optimized-routines/string
+.endfor
diff --git a/lib/libc/aarch64/string/memcpy.S b/lib/libc/aarch64/string/memcpy.S
new file mode 100644
--- /dev/null
+++ b/lib/libc/aarch64/string/memcpy.S
@@ -0,0 +1,6 @@
+#define __memcpy_aarch64 memcpy
+#define __memmove_aarch64 memmove
+#include "aarch64/memcpy.S"
+
+.weak index
+.equ index, strchr
diff --git a/lib/libc/aarch64/string/memmove.S b/lib/libc/aarch64/string/memmove.S
new file mode 100644
--- /dev/null
+++ b/lib/libc/aarch64/string/memmove.S
@@ -0,0 +1,5 @@
+/*
+ * memmove is implemented in memcpy.S. Having this file simplifies the build
+ * as it stops MISRCS from picking up the C implementation and rtld expects
+ * to copy the memmove object file into its object directory.
+ */
diff --git a/lib/libc/aarch64/string/strchr.S b/lib/libc/aarch64/string/strchr.S
new file mode 100644
--- /dev/null
+++ b/lib/libc/aarch64/string/strchr.S
@@ -0,0 +1,5 @@
+#define __strchr_aarch64 strchr
+#include "aarch64/strchr.S"
+
+.weak index
+.equ index, strchr
diff --git a/lib/libc/aarch64/string/strrchr.S b/lib/libc/aarch64/string/strrchr.S
new file mode 100644
--- /dev/null
+++ b/lib/libc/aarch64/string/strrchr.S
@@ -0,0 +1,5 @@
+#define __strrchr_aarch64 strrchr
+#include "aarch64/strrchr.S"
+
+.weak rindex
+.equ rindex, strrchr
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 17, 4:03 PM (21 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15840358
Default Alt Text
D32774.diff (2 KB)
Attached To
Mode
D32774: Switch to Arm Optimized Routines for mem* & str*
Attached
Detach File
Event Timeline
Log In to Comment