diff --git a/musl_template.gni b/musl_template.gni index c1f164d7f4457cf5e4d72997e87e73d6aa642b94..aae212a98bc3560713d774d9915d219d5f076cf7 100644 --- a/musl_template.gni +++ b/musl_template.gni @@ -281,13 +281,19 @@ template("musl_libs") { if (musl_arch == "arm") { sources_orig -= [ "src/thread/${musl_arch}/__set_thread_area.c", - "src/string/arm/memcpy.c", "src/string/arm/memcpy_le.S", + "src/string/memchr.c", + "src/string/strcmp.c", + "src/string/strlen.c", ] } else if (musl_arch == "aarch64") { sources_orig -= [ "src/thread/${musl_arch}/__set_thread_area.s", "src/string/memcpy.c", + "src/string/memchr.c", + "src/string/strcpy.c", + "src/string/strcmp.c", + "src/string/strlen.c", ] } @@ -299,11 +305,65 @@ template("musl_libs") { sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ] } if (musl_arch == "arm") { - sources += [ "$OPTRTDIR/string/arm/memcpy.S" ] - asmflags = [ "-D__memcpy_arm = memcpy" ] + sources += [ + "$OPTRTDIR/string/arm/memchr.S", + "$OPTRTDIR/string/arm/memcpy.S", + "$OPTRTDIR/string/arm/strcmp.S", + "$OPTRTDIR/string/arm/strlen-armv6t2.S", + ] + asmflags = [ + "-D__memcpy_arm = memcpy", + "-D__memchr_arm = memchr", + "-D__strcmp_arm = strcmp", + "-D__strlen_armv6t2 = strlen", + ] } else if (musl_arch == "aarch64") { - sources += [ "$OPTRTDIR/string/aarch64/memcpy.S" ] - asmflags = [ "-D__memcpy_aarch64 = memcpy" ] + if (defined(ARM_FEATURE_SVE)) { + sources += [ + "$OPTRTDIR/string/aarch64/memchr-sve.S", + "$OPTRTDIR/string/aarch64/memcpy.S", + "$OPTRTDIR/string/aarch64/strcmp-sve.S", + "$OPTRTDIR/string/aarch64/strcpy-sve.S", + "$OPTRTDIR/string/aarch64/strlen-sve.S", + ] + asmflags = [ + "-D__memcpy_aarch64 = memcpy", + "-D__memchr_aarch64_sve = memchr", + "-D__strcmp_aarch64_sve = strcmp", + "-D__strlen_aarch64_sve = strlen", + "-D__strcpy_aarch64_sve = strcpy", + ] + } else if (defined(ARM_FEATURE_MTE)) { + sources += [ + "$OPTRTDIR/string/aarch64/memchr-mte.S", + "$OPTRTDIR/string/aarch64/memcpy.S", + "$OPTRTDIR/string/aarch64/strcmp-mte.S", + "$OPTRTDIR/string/aarch64/strcpy-mte.S", + "$OPTRTDIR/string/aarch64/strlen-mte.S", + ] + asmflags = [ + "-D__memcpy_aarch64 = memcpy", + "-D__memchr_aarch64_mte = memchr", + "-D__strcmp_aarch64_mte = strcmp", + "-D__strlen_aarch64_mte = strlen", + "-D__strcpy_aarch64_mte = strcpy", + ] + } else { + sources += [ + "$OPTRTDIR/string/aarch64/memchr.S", + "$OPTRTDIR/string/aarch64/memcpy.S", + "$OPTRTDIR/string/aarch64/strcmp.S", + "$OPTRTDIR/string/aarch64/strcpy.S", + "$OPTRTDIR/string/aarch64/strlen.S", + ] + asmflags = [ + "-D__memcpy_aarch64 = memcpy", + "-D__memchr_aarch64 = memchr", + "-D__strcmp_aarch64 = strcmp", + "-D__strlen_aarch64 = strlen", + "-D__strcpy_aarch64 = strcpy", + ] + } } cflags = [