riscv64: fix ODR violations.
Rather than do the work to fix the ODR violations while preserving non-V,
let's just remove the non-V code. Android will require V anyway, and
anyone trying to work on a non-V system in the meantime already needs
a bunch of patches to the build system and ART, so one more shouldn't
hurt too much.
Test: treehugger
Change-Id: Iab43d8a80d99a4d045b0008dbea4e7e8696d1167
diff --git a/libc/Android.bp b/libc/Android.bp
index fe5f6de..390cc0c 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -136,6 +136,8 @@
},
apex_available: ["com.android.runtime"],
+
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
}
libc_scudo_product_variables = {
@@ -251,7 +253,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"tzcode/**/*.c",
"tzcode/bionic.cpp",
@@ -302,7 +303,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"dns/**/*.c*",
@@ -345,7 +345,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-freebsd/lib/libc/stdlib/getopt_long.c",
"upstream-freebsd/lib/libc/stdlib/hcreate.c",
@@ -411,7 +410,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-freebsd/lib/libc/gen/glob.c",
],
@@ -439,7 +437,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-netbsd/common/lib/libc/stdlib/random.c",
"upstream-netbsd/lib/libc/gen/nice.c",
@@ -497,7 +494,6 @@
cc_library_static {
name: "libc_openbsd_ndk",
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-openbsd/lib/libc/gen/alarm.c",
"upstream-openbsd/lib/libc/gen/ctype_.c",
@@ -616,7 +612,6 @@
cc_library_static {
name: "libc_openbsd_large_stack",
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"stdio/vfprintf.cpp",
"stdio/vfwprintf.cpp",
@@ -646,78 +641,54 @@
// automatically included.
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
// These two depend on getentropy, which isn't in libc_ndk.a.
"upstream-openbsd/lib/libc/crypt/arc4random.c",
"upstream-openbsd/lib/libc/crypt/arc4random_uniform.c",
-
- // May be overriden by per-arch optimized versions
- "upstream-openbsd/lib/libc/string/memchr.c",
- "upstream-openbsd/lib/libc/string/memrchr.c",
- "upstream-openbsd/lib/libc/string/stpcpy.c",
- "upstream-openbsd/lib/libc/string/stpncpy.c",
- "upstream-openbsd/lib/libc/string/strcat.c",
- "upstream-openbsd/lib/libc/string/strcpy.c",
- "upstream-openbsd/lib/libc/string/strlcat.c",
- "upstream-openbsd/lib/libc/string/strlcpy.c",
- "upstream-openbsd/lib/libc/string/strncat.c",
- "upstream-openbsd/lib/libc/string/strncmp.c",
- "upstream-openbsd/lib/libc/string/strncpy.c",
],
+ // Each architecture has optimized versions of some routines,
+ // and only includes the portable C versions of ones it's missing.
arch: {
arm: {
- exclude_srcs: [
- "upstream-openbsd/lib/libc/string/strcpy.c",
- "upstream-openbsd/lib/libc/string/stpcpy.c",
- "upstream-openbsd/lib/libc/string/strcat.c",
+ srcs: [
+ "upstream-openbsd/lib/libc/string/memchr.c",
+ "upstream-openbsd/lib/libc/string/memrchr.c",
+ "upstream-openbsd/lib/libc/string/stpncpy.c",
+ "upstream-openbsd/lib/libc/string/strlcat.c",
+ "upstream-openbsd/lib/libc/string/strlcpy.c",
+ "upstream-openbsd/lib/libc/string/strncat.c",
+ "upstream-openbsd/lib/libc/string/strncmp.c",
+ "upstream-openbsd/lib/libc/string/strncpy.c",
],
},
arm64: {
- exclude_srcs: [
- "upstream-openbsd/lib/libc/string/memchr.c",
- "upstream-openbsd/lib/libc/string/memrchr.c",
- "upstream-openbsd/lib/libc/string/stpcpy.c",
- "upstream-openbsd/lib/libc/string/strcpy.c",
- "upstream-openbsd/lib/libc/string/strncmp.c",
+ srcs: [
+ "upstream-openbsd/lib/libc/string/stpncpy.c",
+ "upstream-openbsd/lib/libc/string/strcat.c",
+ "upstream-openbsd/lib/libc/string/strlcat.c",
+ "upstream-openbsd/lib/libc/string/strlcpy.c",
+ "upstream-openbsd/lib/libc/string/strncat.c",
+ "upstream-openbsd/lib/libc/string/strncpy.c",
],
},
riscv64: {
srcs: [
- "upstream-freebsd/lib/libc/string/memcmp.c",
- "upstream-freebsd/lib/libc/string/memcpy.c",
- "upstream-freebsd/lib/libc/string/memmove.c",
- "upstream-freebsd/lib/libc/string/memset.c",
- "upstream-openbsd/lib/libc/string/strcmp.c",
- "upstream-openbsd/lib/libc/string/strlen.c",
+ "upstream-openbsd/lib/libc/string/memrchr.c",
+ "upstream-openbsd/lib/libc/string/stpncpy.c",
+ "upstream-openbsd/lib/libc/string/strlcat.c",
+ "upstream-openbsd/lib/libc/string/strlcpy.c",
],
},
x86: {
- exclude_srcs: [
+ // This space intentionally left blank.
+ },
+ x86_64: {
+ srcs: [
"upstream-openbsd/lib/libc/string/memchr.c",
"upstream-openbsd/lib/libc/string/memrchr.c",
- "upstream-openbsd/lib/libc/string/stpcpy.c",
- "upstream-openbsd/lib/libc/string/stpncpy.c",
- "upstream-openbsd/lib/libc/string/strcat.c",
- "upstream-openbsd/lib/libc/string/strcpy.c",
- "upstream-openbsd/lib/libc/string/strncmp.c",
- "upstream-openbsd/lib/libc/string/strncpy.c",
"upstream-openbsd/lib/libc/string/strlcat.c",
"upstream-openbsd/lib/libc/string/strlcpy.c",
- "upstream-openbsd/lib/libc/string/strncat.c",
- ],
- },
-
- x86_64: {
- exclude_srcs: [
- "upstream-openbsd/lib/libc/string/stpcpy.c",
- "upstream-openbsd/lib/libc/string/stpncpy.c",
- "upstream-openbsd/lib/libc/string/strcat.c",
- "upstream-openbsd/lib/libc/string/strcpy.c",
- "upstream-openbsd/lib/libc/string/strncat.c",
- "upstream-openbsd/lib/libc/string/strncmp.c",
- "upstream-openbsd/lib/libc/string/strncpy.c",
],
},
},
@@ -745,7 +716,6 @@
cc_library_static {
defaults: ["libc_defaults"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-openbsd/android/gdtoa_support.cpp",
"upstream-openbsd/lib/libc/gdtoa/dmisc.c",
@@ -861,26 +831,12 @@
// The following must not be statically linked into libc_ndk.a, because
// debuggerd will look for the abort message in libc.so's copy.
"bionic/android_set_abort_message.cpp",
-
- "bionic/strchr.cpp",
- "bionic/strchrnul.cpp",
- "bionic/strnlen.c",
- "bionic/strrchr.cpp",
],
arch: {
arm: {
asflags: libc_common_flags + ["-mno-restrict-it"],
srcs: [
- "arch-arm/generic/bionic/memcmp.S",
- "arch-arm/generic/bionic/memmove.S",
- "arch-arm/generic/bionic/memset.S",
- "arch-arm/generic/bionic/stpcpy.c",
- "arch-arm/generic/bionic/strcat.c",
- "arch-arm/generic/bionic/strcmp.S",
- "arch-arm/generic/bionic/strcpy.S",
- "arch-arm/generic/bionic/strlen.c",
-
"arch-arm/bionic/__aeabi_read_tp.S",
"arch-arm/bionic/__bionic_clone.S",
"arch-arm/bionic/__restore.S",
@@ -893,6 +849,20 @@
"arch-arm/bionic/syscall.S",
"arch-arm/bionic/vfork.S",
+ "bionic/strchr.cpp",
+ "bionic/strchrnul.cpp",
+ "bionic/strnlen.c",
+ "bionic/strrchr.cpp",
+
+ "arch-arm/generic/bionic/memcmp.S",
+ "arch-arm/generic/bionic/memmove.S",
+ "arch-arm/generic/bionic/memset.S",
+ "arch-arm/generic/bionic/stpcpy.c",
+ "arch-arm/generic/bionic/strcat.c",
+ "arch-arm/generic/bionic/strcmp.S",
+ "arch-arm/generic/bionic/strcpy.S",
+ "arch-arm/generic/bionic/strlen.c",
+
"arch-arm/cortex-a15/bionic/memcpy.S",
"arch-arm/cortex-a15/bionic/memmove.S",
"arch-arm/cortex-a15/bionic/memset.S",
@@ -930,12 +900,6 @@
"arch-arm64/bionic/syscall.S",
"arch-arm64/bionic/vfork.S",
],
- exclude_srcs: [
- "bionic/strchr.cpp",
- "bionic/strchrnul.cpp",
- "bionic/strnlen.c",
- "bionic/strrchr.cpp",
- ],
},
riscv64: {
@@ -946,26 +910,40 @@
"arch-riscv64/bionic/syscall.S",
"arch-riscv64/bionic/vfork.S",
- "arch-riscv64/string/memchr_vext.S",
- "arch-riscv64/string/memcmp_vext.S",
- "arch-riscv64/string/memcpy_vext.S",
- "arch-riscv64/string/memmove_vext.S",
- "arch-riscv64/string/memset_vext.S",
- "arch-riscv64/string/stpcpy_vext.S",
- "arch-riscv64/string/strcat_vext.S",
- "arch-riscv64/string/strchr_vext.S",
- "arch-riscv64/string/strcmp_vext.S",
- "arch-riscv64/string/strcpy_vext.S",
- "arch-riscv64/string/strlen_vext.S",
- "arch-riscv64/string/strncat_vext.S",
- "arch-riscv64/string/strncmp_vext.S",
- "arch-riscv64/string/strncpy_vext.S",
- "arch-riscv64/string/strnlen_vext.S",
+ "bionic/strchrnul.cpp",
+ "bionic/strrchr.cpp",
+
+ "arch-riscv64/string/memchr.S",
+ "arch-riscv64/string/memcmp.S",
+ "arch-riscv64/string/memcpy.S",
+ "arch-riscv64/string/memmove.S",
+ "arch-riscv64/string/memset.S",
+ "arch-riscv64/string/stpcpy.S",
+ "arch-riscv64/string/strcat.S",
+ "arch-riscv64/string/strchr.S",
+ "arch-riscv64/string/strcmp.S",
+ "arch-riscv64/string/strcpy.S",
+ "arch-riscv64/string/strlen.S",
+ "arch-riscv64/string/strncat.S",
+ "arch-riscv64/string/strncmp.S",
+ "arch-riscv64/string/strncpy.S",
+ "arch-riscv64/string/strnlen.S",
],
},
x86: {
srcs: [
+ "arch-x86/bionic/__bionic_clone.S",
+ "arch-x86/bionic/_exit_with_stack_teardown.S",
+ "arch-x86/bionic/libcrt_compat.c",
+ "arch-x86/bionic/__restore.S",
+ "arch-x86/bionic/setjmp.S",
+ "arch-x86/bionic/syscall.S",
+ "arch-x86/bionic/vfork.S",
+ "arch-x86/bionic/__x86.get_pc_thunk.S",
+
+ "bionic/strchrnul.cpp",
+
"arch-x86/generic/string/memcmp.S",
"arch-x86/generic/string/strcmp.S",
"arch-x86/generic/string/strncmp.S",
@@ -1013,25 +991,22 @@
"arch-x86/string/sse4-memcmp-slm.S",
"arch-x86/string/sse4-wmemcmp-slm.S",
-
- "arch-x86/bionic/__bionic_clone.S",
- "arch-x86/bionic/_exit_with_stack_teardown.S",
- "arch-x86/bionic/libcrt_compat.c",
- "arch-x86/bionic/__restore.S",
- "arch-x86/bionic/setjmp.S",
- "arch-x86/bionic/syscall.S",
- "arch-x86/bionic/vfork.S",
- "arch-x86/bionic/__x86.get_pc_thunk.S",
- ],
-
- exclude_srcs: [
- "bionic/strchr.cpp",
- "bionic/strnlen.c",
- "bionic/strrchr.cpp",
],
},
x86_64: {
srcs: [
+ "arch-x86_64/bionic/__bionic_clone.S",
+ "arch-x86_64/bionic/_exit_with_stack_teardown.S",
+ "arch-x86_64/bionic/__restore_rt.S",
+ "arch-x86_64/bionic/setjmp.S",
+ "arch-x86_64/bionic/syscall.S",
+ "arch-x86_64/bionic/vfork.S",
+
+ "bionic/strchr.cpp",
+ "bionic/strchrnul.cpp",
+ "bionic/strnlen.c",
+ "bionic/strrchr.cpp",
+
"arch-x86_64/string/avx2-memset-kbl.S",
"arch-x86_64/string/sse2-memmove-slm.S",
"arch-x86_64/string/sse2-memset-slm.S",
@@ -1045,13 +1020,6 @@
"arch-x86_64/string/sse4-memcmp-slm.S",
"arch-x86_64/string/ssse3-strcmp-slm.S",
"arch-x86_64/string/ssse3-strncmp-slm.S",
-
- "arch-x86_64/bionic/__bionic_clone.S",
- "arch-x86_64/bionic/_exit_with_stack_teardown.S",
- "arch-x86_64/bionic/__restore_rt.S",
- "arch-x86_64/bionic/setjmp.S",
- "arch-x86_64/bionic/syscall.S",
- "arch-x86_64/bionic/vfork.S",
],
},
},
@@ -1569,9 +1537,6 @@
arm64: {
srcs: ["arch-arm64/static_function_dispatch.S"],
},
- riscv64: {
- srcs: ["arch-riscv64/static_function_dispatch.S"]
- },
},
}
@@ -1600,9 +1565,6 @@
arm64: {
srcs: ["arch-arm64/dynamic_function_dispatch.cpp"],
},
- riscv64: {
- srcs: ["arch-riscv64/dynamic_function_dispatch.cpp"]
- },
},
}
@@ -2921,7 +2883,6 @@
cc_library_host_static {
name: "libfts",
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"bionic/fts.c",
"upstream-openbsd/lib/libc/stdlib/recallocarray.c",
@@ -2964,7 +2925,6 @@
cc_library_host_static {
name: "libb64",
visibility: ["//external/musl"],
- tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: ["upstream-openbsd/lib/libc/net/base64.c"],
export_include_dirs: ["b64/include"],
local_include_dirs: [
diff --git a/libc/NOTICE b/libc/NOTICE
index d464e1d..b345544 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -2077,38 +2077,6 @@
Copyright (c) 1990, 1993
The Regents of the University of California. All rights reserved.
-
-This code is derived from software contributed to Berkeley by
-Mike Hibler and Chris Torek.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
--------------------------------------------------------------------
-
-Copyright (c) 1990, 1993
- The Regents of the University of California. All rights reserved.
(c) UNIX System Laboratories, Inc.
All or some portions of this file are derived from material licensed
to the University of California by American Telephone and Telegraph
diff --git a/libc/arch-riscv64/dynamic_function_dispatch.cpp b/libc/arch-riscv64/dynamic_function_dispatch.cpp
deleted file mode 100644
index 5866fe4..0000000
--- a/libc/arch-riscv64/dynamic_function_dispatch.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <private/bionic_ifuncs.h>
-#include <stddef.h>
-#include <sys/auxv.h>
-
-#if defined(__riscv_v)
-extern "C" {
-
-typedef void* memchr_func(const void*, int, size_t);
-DEFINE_IFUNC_FOR(memchr) {
- RETURN_FUNC(memchr_func, memchr_vext);
-}
-
-typedef int memcmp_func(const void*, const void*, size_t);
-DEFINE_IFUNC_FOR(memcmp) {
- RETURN_FUNC(memcmp_func, memcmp_vext);
-}
-
-typedef void* memcpy_func(void*, const void*, size_t);
-DEFINE_IFUNC_FOR(memcpy) {
- RETURN_FUNC(memcpy_func, memcpy_vext);
-}
-
-typedef void* memmove_func(void*, const void*, size_t);
-DEFINE_IFUNC_FOR(memmove) {
- RETURN_FUNC(memmove_func, memmove_vext);
-}
-
-typedef void* memset_func(void*, int, size_t);
-DEFINE_IFUNC_FOR(memset) {
- RETURN_FUNC(memset_func, memset_vext);
-}
-
-typedef char* stpcpy_func(char*, const char*);
-DEFINE_IFUNC_FOR(stpcpy) {
- RETURN_FUNC(stpcpy_func, stpcpy_vext);
-}
-
-typedef char* strcat_func(char*, const char*);
-DEFINE_IFUNC_FOR(strcat) {
- RETURN_FUNC(strcat_func, strcat_vext);
-}
-
-typedef char* strchr_func(const char*, int);
-DEFINE_IFUNC_FOR(strchr) {
- RETURN_FUNC(strchr_func, strchr_vext);
-}
-
-typedef int strcmp_func(const char*, const char*);
-DEFINE_IFUNC_FOR(strcmp) {
- RETURN_FUNC(strcmp_func, strcmp_vext);
-}
-
-typedef char* strcpy_func(char*, const char*);
-DEFINE_IFUNC_FOR(strcpy) {
- RETURN_FUNC(strcpy_func, strcpy_vext);
-}
-
-typedef size_t strlen_func(const char*);
-DEFINE_IFUNC_FOR(strlen) {
- RETURN_FUNC(strlen_func, strlen_vext);
-}
-
-typedef char* strncat_func(char*, const char*, size_t);
-DEFINE_IFUNC_FOR(strncat) {
- RETURN_FUNC(strncat_func, strncat_vext);
-}
-
-typedef int strncmp_func(const char*, const char*, size_t);
-DEFINE_IFUNC_FOR(strncmp) {
- RETURN_FUNC(strncmp_func, strncmp_vext);
-}
-
-typedef char* strncpy_func(char*, const char*, size_t);
-DEFINE_IFUNC_FOR(strncpy) {
- RETURN_FUNC(strncpy_func, strncpy_vext);
-}
-
-typedef size_t strnlen_func(const char*, size_t);
-DEFINE_IFUNC_FOR(strnlen) {
- RETURN_FUNC(strnlen_func, strnlen_vext);
-}
-
-} // extern "C"
-#endif
diff --git a/libc/arch-riscv64/static_function_dispatch.S b/libc/arch-riscv64/static_function_dispatch.S
deleted file mode 100644
index f96d40e..0000000
--- a/libc/arch-riscv64/static_function_dispatch.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <private/bionic_asm.h>
-
-#define FUNCTION_DELEGATE(name, impl) \
-ENTRY(name); \
- j impl; \
-END(name)
-
-#if defined(__riscv_v)
-
-FUNCTION_DELEGATE(memchr, memchr_vext)
-FUNCTION_DELEGATE(memcmp, memcmp_vext)
-FUNCTION_DELEGATE(memcpy, memcpy_vext)
-FUNCTION_DELEGATE(memmove, memmove_vext)
-FUNCTION_DELEGATE(memset, memset_vext)
-FUNCTION_DELEGATE(stpcpy, stpcpy_vext)
-FUNCTION_DELEGATE(strcat, strcat_vext)
-FUNCTION_DELEGATE(strchr, strchr_vext)
-FUNCTION_DELEGATE(strcmp, strcmp_vext)
-FUNCTION_DELEGATE(strcpy, strcpy_vext)
-FUNCTION_DELEGATE(strlen, strlen_vext)
-FUNCTION_DELEGATE(strncat, strncat_vext)
-FUNCTION_DELEGATE(strncmp, strncmp_vext)
-FUNCTION_DELEGATE(strncpy, strncpy_vext)
-FUNCTION_DELEGATE(strnlen, strnlen_vext)
-
-#endif
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-riscv64/string/memchr_vext.S b/libc/arch-riscv64/string/memchr.S
similarity index 97%
rename from libc/arch-riscv64/string/memchr_vext.S
rename to libc/arch-riscv64/string/memchr.S
index ed76a05..8833436 100644
--- a/libc/arch-riscv64/string/memchr_vext.S
+++ b/libc/arch-riscv64/string/memchr.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define iResult a0
@@ -70,7 +68,7 @@
#define vData v0
#define vMask v8
-ENTRY(memchr_vext)
+ENTRY(memchr)
L(loop):
vsetvli iVL, iNum, e8, ELEM_LMUL_SETTING, ta, ma
@@ -95,6 +93,4 @@
add iResult, pSrc, iTemp
ret
-END(memchr_vext)
-
-#endif
+END(memchr)
diff --git a/libc/arch-riscv64/string/memcmp_vext.S b/libc/arch-riscv64/string/memcmp.S
similarity index 97%
rename from libc/arch-riscv64/string/memcmp_vext.S
rename to libc/arch-riscv64/string/memcmp.S
index 1bb381c..9c1ecdc 100644
--- a/libc/arch-riscv64/string/memcmp_vext.S
+++ b/libc/arch-riscv64/string/memcmp.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define iResult a0
@@ -73,7 +71,7 @@
#define vData2 v8
#define vMask v16
-ENTRY(memcmp_vext)
+ENTRY(memcmp)
L(loop):
vsetvli iVL, iNum, e8, ELEM_LMUL_SETTING, ta, ma
@@ -105,6 +103,4 @@
sub iResult, iTemp1, iTemp2
ret
-END(memcmp_vext)
-
-#endif
+END(memcmp)
diff --git a/libc/arch-riscv64/string/memcpy_vext.S b/libc/arch-riscv64/string/memcpy.S
similarity index 97%
rename from libc/arch-riscv64/string/memcpy_vext.S
rename to libc/arch-riscv64/string/memcpy.S
index 668973f..def1d9b 100644
--- a/libc/arch-riscv64/string/memcpy_vext.S
+++ b/libc/arch-riscv64/string/memcpy.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -67,7 +65,7 @@
#define ELEM_LMUL_SETTING m8
#define vData v0
-ENTRY(memcpy_vext)
+ENTRY(memcpy)
mv pDstPtr, pDst
@@ -84,6 +82,4 @@
ret
-END(memcpy_vext)
-
-#endif
+END(memcpy)
diff --git a/libc/arch-riscv64/string/memmove_vext.S b/libc/arch-riscv64/string/memmove.S
similarity index 97%
rename from libc/arch-riscv64/string/memmove_vext.S
rename to libc/arch-riscv64/string/memmove.S
index 03f10c5..fa70f76 100644
--- a/libc/arch-riscv64/string/memmove_vext.S
+++ b/libc/arch-riscv64/string/memmove.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -69,7 +67,7 @@
#define ELEM_LMUL_SETTING m8
#define vData v0
-ENTRY(memmove_vext)
+ENTRY(memmove)
mv pDstPtr, pDst
@@ -101,6 +99,4 @@
bnez iNum, L(backward_copy_loop)
ret
-END(memmove_vext)
-
-#endif
+END(memmove)
diff --git a/libc/arch-riscv64/string/memset_vext.S b/libc/arch-riscv64/string/memset.S
similarity index 97%
rename from libc/arch-riscv64/string/memset_vext.S
rename to libc/arch-riscv64/string/memset.S
index 554d6bd..5aa525e 100644
--- a/libc/arch-riscv64/string/memset_vext.S
+++ b/libc/arch-riscv64/string/memset.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -68,7 +66,7 @@
#define ELEM_LMUL_SETTING m8
#define vData v0
-ENTRY(memset_vext)
+ENTRY(memset)
mv pDstPtr, pDst
@@ -84,6 +82,4 @@
ret
-END(memset_vext)
-
-#endif
+END(memset)
diff --git a/libc/arch-riscv64/string/stpcpy_vext.S b/libc/arch-riscv64/string/stpcpy.S
similarity index 97%
rename from libc/arch-riscv64/string/stpcpy_vext.S
rename to libc/arch-riscv64/string/stpcpy.S
index e089938..c5d0945 100644
--- a/libc/arch-riscv64/string/stpcpy_vext.S
+++ b/libc/arch-riscv64/string/stpcpy.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDstPtr a0
@@ -70,7 +68,7 @@
#define vStr1 v8
#define vStr2 v16
-ENTRY(stpcpy_vext)
+ENTRY(stpcpy)
L(stpcpy_loop):
vsetvli iVL, zero, e8, ELEM_LMUL_SETTING, ta, ma
vle8ff.v vStr1, (pSrc)
@@ -87,6 +85,4 @@
sub pDstPtr, pDstPtr, iCurrentVL
add pDstPtr, pDstPtr, iActiveElemPos
ret
-END(stpcpy_vext)
-
-#endif
+END(stpcpy)
diff --git a/libc/arch-riscv64/string/strcat_vext.S b/libc/arch-riscv64/string/strcat.S
similarity index 97%
rename from libc/arch-riscv64/string/strcat_vext.S
rename to libc/arch-riscv64/string/strcat.S
index 05e0dfc..5abf295 100644
--- a/libc/arch-riscv64/string/strcat_vext.S
+++ b/libc/arch-riscv64/string/strcat.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -71,7 +69,7 @@
#define vStr1 v8
#define vStr2 v16
-ENTRY(strcat_vext)
+ENTRY(strcat)
mv pDstPtr, pDst
@@ -106,6 +104,4 @@
ret
-END(strcat_vext)
-
-#endif
+END(strcat)
diff --git a/libc/arch-riscv64/string/strchr_vext.S b/libc/arch-riscv64/string/strchr.S
similarity index 97%
rename from libc/arch-riscv64/string/strchr_vext.S
rename to libc/arch-riscv64/string/strchr.S
index 4c7bac1..ea13c5d 100644
--- a/libc/arch-riscv64/string/strchr_vext.S
+++ b/libc/arch-riscv64/string/strchr.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pStr a0
@@ -71,7 +69,7 @@
#define vMaskEnd v8
#define vMaskCh v9
-ENTRY(strchr_vext)
+ENTRY(strchr)
L(strchr_loop):
vsetvli iVL, zero, e8, ELEM_LMUL_SETTING, ta, ma
@@ -93,6 +91,4 @@
add pStr, pStr, iChOffset
ret
-END(strchr_vext)
-
-#endif
+END(strchr)
diff --git a/libc/arch-riscv64/string/strcmp_vext.S b/libc/arch-riscv64/string/strcmp.S
similarity index 98%
rename from libc/arch-riscv64/string/strcmp_vext.S
rename to libc/arch-riscv64/string/strcmp.S
index b793c9a..3332c83 100644
--- a/libc/arch-riscv64/string/strcmp_vext.S
+++ b/libc/arch-riscv64/string/strcmp.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define iResult a0
@@ -76,7 +74,7 @@
#define vMask1 v16
#define vMask2 v17
-ENTRY(strcmp_vext)
+ENTRY(strcmp)
# increase the lmul using the following sequences:
# 1/2, 1/2, 1, 2, 4, 4, 4, ...
@@ -168,6 +166,4 @@
sub iResult, iTemp1, iTemp2
ret
-END(strcmp_vext)
-
-#endif
+END(strcmp)
diff --git a/libc/arch-riscv64/string/strcpy_vext.S b/libc/arch-riscv64/string/strcpy.S
similarity index 97%
rename from libc/arch-riscv64/string/strcpy_vext.S
rename to libc/arch-riscv64/string/strcpy.S
index ab8da48..b89b1a8 100644
--- a/libc/arch-riscv64/string/strcpy_vext.S
+++ b/libc/arch-riscv64/string/strcpy.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -71,7 +69,7 @@
#define vStr1 v8
#define vStr2 v16
-ENTRY(strcpy_vext)
+ENTRY(strcpy)
mv pDstPtr, pDst
@@ -90,6 +88,4 @@
ret
-END(strcpy_vext)
-
-#endif
+END(strcpy)
diff --git a/libc/arch-riscv64/string/strlen_vext.S b/libc/arch-riscv64/string/strlen.S
similarity index 98%
rename from libc/arch-riscv64/string/strlen_vext.S
rename to libc/arch-riscv64/string/strlen.S
index 694f95c..7f7d2dd 100644
--- a/libc/arch-riscv64/string/strlen_vext.S
+++ b/libc/arch-riscv64/string/strlen.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define iResult a0
@@ -68,7 +66,7 @@
#define vStr v0
#define vMaskEnd v2
-ENTRY(strlen_vext)
+ENTRY(strlen)
mv pCopyStr, pStr
L(loop):
@@ -87,5 +85,3 @@
ret
END(strlen)
-
-#endif
diff --git a/libc/arch-riscv64/string/strncat_vext.S b/libc/arch-riscv64/string/strncat.S
similarity index 97%
rename from libc/arch-riscv64/string/strncat_vext.S
rename to libc/arch-riscv64/string/strncat.S
index 9fcd37d..01cb14f 100644
--- a/libc/arch-riscv64/string/strncat_vext.S
+++ b/libc/arch-riscv64/string/strncat.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -72,7 +70,7 @@
#define vStr1 v8
#define vStr2 v16
-ENTRY(strncat_vext)
+ENTRY(strncat)
mv pDstPtr, pDst
@@ -116,6 +114,4 @@
L(fill_zero_end):
ret
-END(strncat_vext)
-
-#endif
+END(strncat)
diff --git a/libc/arch-riscv64/string/strncmp_vext.S b/libc/arch-riscv64/string/strncmp.S
similarity index 97%
rename from libc/arch-riscv64/string/strncmp_vext.S
rename to libc/arch-riscv64/string/strncmp.S
index ec3ec50..b9e6ee2 100644
--- a/libc/arch-riscv64/string/strncmp_vext.S
+++ b/libc/arch-riscv64/string/strncmp.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define iResult a0
@@ -73,7 +71,7 @@
#define vMask1 v8
#define vMask2 v9
-ENTRY(strncmp_vext)
+ENTRY(strncmp)
beqz iLength, L(zero_length)
@@ -118,6 +116,4 @@
li iResult, 0
ret
-END(strncmp_vext)
-
-#endif
+END(strncmp)
diff --git a/libc/arch-riscv64/string/strncpy_vext.S b/libc/arch-riscv64/string/strncpy.S
similarity index 97%
rename from libc/arch-riscv64/string/strncpy_vext.S
rename to libc/arch-riscv64/string/strncpy.S
index eff6293..651a064 100644
--- a/libc/arch-riscv64/string/strncpy_vext.S
+++ b/libc/arch-riscv64/string/strncpy.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pDst a0
@@ -73,7 +71,7 @@
#define vStr1 v8
#define vStr2 v16
-ENTRY(strncpy_vext)
+ENTRY(strncpy)
mv pDstPtr, pDst
@@ -113,6 +111,4 @@
ret
-END(strncpy_vext)
-
-#endif
+END(strncpy)
diff --git a/libc/arch-riscv64/string/strnlen_vext.S b/libc/arch-riscv64/string/strnlen.S
similarity index 97%
rename from libc/arch-riscv64/string/strnlen_vext.S
rename to libc/arch-riscv64/string/strnlen.S
index ca07231..66366f0 100644
--- a/libc/arch-riscv64/string/strnlen_vext.S
+++ b/libc/arch-riscv64/string/strnlen.S
@@ -53,8 +53,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(__riscv_v)
-
#include <private/bionic_asm.h>
#define pStr a0
@@ -68,7 +66,7 @@
#define vStr v0
#define vMaskEnd v8
-ENTRY(strnlen_vext)
+ENTRY(strnlen)
mv pCopyStr, pStr
mv iRetValue, iMaxlen
@@ -88,6 +86,4 @@
L(end_strnlen_loop):
ret
-END(strnlen_vext)
-
-#endif
+END(strnlen)
diff --git a/libc/upstream-freebsd/lib/libc/string/bcopy.c b/libc/upstream-freebsd/lib/libc/string/bcopy.c
deleted file mode 100644
index 84715d0..0000000
--- a/libc/upstream-freebsd/lib/libc/string/bcopy.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)bcopy.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-
-typedef intptr_t word; /* "word" used for optimal copy speed */
-
-#define wsize sizeof(word)
-#define wmask (wsize - 1)
-
-/*
- * Copy a block of memory, handling overlap.
- * This is the routine that actually implements
- * (the portable versions of) bcopy, memcpy, and memmove.
- */
-#if defined(MEMCOPY) || defined(MEMMOVE)
-#include <string.h>
-
-void *
-#ifdef MEMCOPY
-memcpy
-#else
-memmove
-#endif
-(void *dst0, const void *src0, size_t length)
-#else
-#include <strings.h>
-
-void
-bcopy(const void *src0, void *dst0, size_t length)
-#endif
-{
- char *dst = dst0;
- const char *src = src0;
- size_t t;
-
- if (length == 0 || dst == src) /* nothing to do */
- goto done;
-
- /*
- * Macros: loop-t-times; and loop-t-times, t>0
- */
-#define TLOOP(s) if (t) TLOOP1(s)
-#define TLOOP1(s) do { s; } while (--t)
-
- if ((unsigned long)dst < (unsigned long)src) {
- /*
- * Copy forward.
- */
- t = (uintptr_t)src; /* only need low bits */
- if ((t | (uintptr_t)dst) & wmask) {
- /*
- * Try to align operands. This cannot be done
- * unless the low bits match.
- */
- if ((t ^ (uintptr_t)dst) & wmask || length < wsize)
- t = length;
- else
- t = wsize - (t & wmask);
- length -= t;
- TLOOP1(*dst++ = *src++);
- }
- /*
- * Copy whole words, then mop up any trailing bytes.
- */
- t = length / wsize;
- TLOOP(*(word *)(void *)dst = *(const word *)(const void *)src;
- src += wsize; dst += wsize);
- t = length & wmask;
- TLOOP(*dst++ = *src++);
- } else {
- /*
- * Copy backwards. Otherwise essentially the same.
- * Alignment works as before, except that it takes
- * (t&wmask) bytes to align, not wsize-(t&wmask).
- */
- src += length;
- dst += length;
- t = (uintptr_t)src;
- if ((t | (uintptr_t)dst) & wmask) {
- if ((t ^ (uintptr_t)dst) & wmask || length <= wsize)
- t = length;
- else
- t &= wmask;
- length -= t;
- TLOOP1(*--dst = *--src);
- }
- t = length / wsize;
- TLOOP(src -= wsize; dst -= wsize;
- *(word *)(void *)dst = *(const word *)(const void *)src);
- t = length & wmask;
- TLOOP(*--dst = *--src);
- }
-done:
-#if defined(MEMCOPY) || defined(MEMMOVE)
- return (dst0);
-#else
- return;
-#endif
-}
diff --git a/libc/upstream-freebsd/lib/libc/string/memcmp.c b/libc/upstream-freebsd/lib/libc/string/memcmp.c
deleted file mode 100644
index c8d5d92..0000000
--- a/libc/upstream-freebsd/lib/libc/string/memcmp.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)memcmp.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <string.h>
-
-/*
- * Compare memory regions.
- */
-int
-memcmp(const void *s1, const void *s2, size_t n)
-{
- if (n != 0) {
- const unsigned char *p1 = s1, *p2 = s2;
-
- do {
- if (*p1++ != *p2++)
- return (*--p1 - *--p2);
- } while (--n != 0);
- }
- return (0);
-}
diff --git a/libc/upstream-freebsd/lib/libc/string/memcpy.c b/libc/upstream-freebsd/lib/libc/string/memcpy.c
deleted file mode 100644
index ed03856..0000000
--- a/libc/upstream-freebsd/lib/libc/string/memcpy.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#define MEMCOPY
-#include "bcopy.c"
diff --git a/libc/upstream-freebsd/lib/libc/string/memmove.c b/libc/upstream-freebsd/lib/libc/string/memmove.c
deleted file mode 100644
index 05cf75a..0000000
--- a/libc/upstream-freebsd/lib/libc/string/memmove.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#define MEMMOVE
-#include "bcopy.c"
diff --git a/libc/upstream-freebsd/lib/libc/string/memset.c b/libc/upstream-freebsd/lib/libc/string/memset.c
deleted file mode 100644
index e2d4027..0000000
--- a/libc/upstream-freebsd/lib/libc/string/memset.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Mike Hibler and Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)memset.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-
-#include <limits.h>
-
-#define wsize sizeof(u_long)
-#define wmask (wsize - 1)
-
-#ifdef BZERO
-#include <strings.h>
-
-#define RETURN return
-#define VAL 0
-#define WIDEVAL 0
-
-void
-bzero(void *dst0, size_t length)
-#else
-#include <string.h>
-
-#define RETURN return (dst0)
-#define VAL c0
-#define WIDEVAL c
-
-void *
-memset(void *dst0, int c0, size_t length)
-#endif
-{
- size_t t;
-#ifndef BZERO
- u_long c;
-#endif
- u_char *dst;
-
- dst = dst0;
- /*
- * If not enough words, just fill bytes. A length >= 2 words
- * guarantees that at least one of them is `complete' after
- * any necessary alignment. For instance:
- *
- * |-----------|-----------|-----------|
- * |00|01|02|03|04|05|06|07|08|09|0A|00|
- * ^---------------------^
- * dst dst+length-1
- *
- * but we use a minimum of 3 here since the overhead of the code
- * to do word writes is substantial.
- *
- * TODO: This threshold might not be sensible for 64-bit u_long.
- * We should benchmark and revisit this decision.
- */
- if (length < 3 * wsize) {
- while (length != 0) {
- *dst++ = VAL;
- --length;
- }
- RETURN;
- }
-
-#ifndef BZERO
- if ((c = (u_char)c0) != 0) { /* Fill the word. */
- c = (c << 8) | c; /* u_long is 16 bits. */
-#if ULONG_MAX > 0xffff
- c = (c << 16) | c; /* u_long is 32 bits. */
-#endif
-#if ULONG_MAX > 0xffffffff
- c = (c << 32) | c; /* u_long is 64 bits. */
-#endif
- }
-#endif
- /* Align destination by filling in bytes. */
- if ((t = (long)dst & wmask) != 0) {
- t = wsize - t;
- length -= t;
- do {
- *dst++ = VAL;
- } while (--t != 0);
- }
-
- /* Fill words. Length was >= 2*words so we know t >= 1 here. */
- t = length / wsize;
- do {
- *(u_long *)(void *)dst = WIDEVAL;
- dst += wsize;
- } while (--t != 0);
-
- /* Mop up trailing bytes, if any. */
- t = length & wmask;
- if (t != 0)
- do {
- *dst++ = VAL;
- } while (--t != 0);
- RETURN;
-}
diff --git a/libc/upstream-openbsd/lib/libc/string/strcmp.c b/libc/upstream-openbsd/lib/libc/string/strcmp.c
deleted file mode 100644
index be17556..0000000
--- a/libc/upstream-openbsd/lib/libc/string/strcmp.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $OpenBSD: strcmp.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <string.h>
-
-/*
- * Compare strings.
- */
-int
-strcmp(const char *s1, const char *s2)
-{
- while (*s1 == *s2++)
- if (*s1++ == 0)
- return (0);
- return (*(unsigned char *)s1 - *(unsigned char *)--s2);
-}
-DEF_STRONG(strcmp);
diff --git a/libc/upstream-openbsd/lib/libc/string/strcpy.c b/libc/upstream-openbsd/lib/libc/string/strcpy.c
deleted file mode 100644
index 290eefe..0000000
--- a/libc/upstream-openbsd/lib/libc/string/strcpy.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* $OpenBSD: strcpy.c,v 1.10 2017/11/28 06:55:49 tb Exp $ */
-
-/*
- * Copyright (c) 1988 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <string.h>
-
-#if defined(APIWARN)
-__warn_references(strcpy,
- "strcpy() is almost always misused, please use strlcpy()");
-#endif
-
-char *
-strcpy(char *to, const char *from)
-{
- char *save = to;
-
- for (; (*to = *from) != '\0'; ++from, ++to);
- return(save);
-}
diff --git a/libc/upstream-openbsd/lib/libc/string/strlen.c b/libc/upstream-openbsd/lib/libc/string/strlen.c
deleted file mode 100644
index a5721d3..0000000
--- a/libc/upstream-openbsd/lib/libc/string/strlen.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $OpenBSD: strlen.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */
-
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <string.h>
-
-size_t
-strlen(const char *str)
-{
- const char *s;
-
- for (s = str; *s; ++s)
- ;
- return (s - str);
-}
-
-DEF_STRONG(strlen);