diff --git a/libs/libc/Makefile b/libs/libc/Makefile index a133cd4bf6..40e87f58fb 100644 --- a/libs/libc/Makefile +++ b/libs/libc/Makefile @@ -82,6 +82,7 @@ else endif CFLAGS += ${INCDIR_PREFIX}$(TOPDIR)$(DELIM)libs$(DELIM)libc +AFLAGS += ${INCDIR_PREFIX}$(TOPDIR)$(DELIM)libs$(DELIM)libc # Rule for the symbol table generation diff --git a/libs/libc/libc.h b/libs/libc/libc.h index 897e1f7df3..cb869043ee 100644 --- a/libs/libc/libc.h +++ b/libs/libc/libc.h @@ -27,15 +27,17 @@ #include -#include -#include -#include -#include -#include -#include +#ifndef __ASSEMBLY__ +# include +# include +# include +# include +# include +# include -#include -#include +# include +# include +#endif /**************************************************************************** * Pre-processor Definitions @@ -53,6 +55,12 @@ #define LIB_BUFLEN_UNKNOWN INT_MAX +#if defined(CONFIG_BUILD_FLAT) || \ + ((!defined(CONFIG_LIBC_PREVENT_STRING_USER) && !defined(__KERNEL__)) || \ + (!defined(CONFIG_LIBC_PREVENT_STRING_KERNEL) && defined(__KERNEL__))) +# define LIBC_BUILD_STRING +#endif + /**************************************************************************** * Public Types ****************************************************************************/ @@ -61,6 +69,8 @@ * Public Data ****************************************************************************/ +#ifndef __ASSEMBLY__ + #undef EXTERN #if defined(__cplusplus) #define EXTERN extern "C" @@ -157,4 +167,6 @@ void lib_cxx_initialize(void); } #endif +#endif /* __ASSEMBLY__ */ + #endif /* __LIBS_LIBC_LIBC_H */ diff --git a/libs/libc/machine/Kconfig b/libs/libc/machine/Kconfig index 8628534ff7..cb32809a18 100644 --- a/libs/libc/machine/Kconfig +++ b/libs/libc/machine/Kconfig @@ -137,6 +137,30 @@ config LIBC_ARCH_ELF_64BIT default n depends on LIBC_ARCH_ELF +config LIBC_PREVENT_STRING_KERNEL + bool + default n + ---help--- + Prevent any implementation of the libc from being built and linked + in the kernel, including NuttX's software-defined version of the libc + or any other architecture-specific version of it. The ROM-defined + version should be linked instead. This option is particularly useful + when it's required that the ROM-defined libc to be used by the kernel + (for accessing some driver resource, for instance) but the userspace + is forbidden to use the same ROM-defined versions. In this case, + NuttX's software-defined version of the libc or arch-specific + assembly version is built instead. + +config LIBC_PREVENT_STRING_USER + bool + default n + ---help--- + Prevent any implementation of the libc from being built and linked + in the userspace, including NuttX's software-defined version of the + libc or any other architecture-specific version of it. A ROM-defined + version of the libc may be linked to the userspace by the linker. + + # One or more the of above may be selected by architecture specific logic if ARCH_ARM diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_memchr.S b/libs/libc/machine/arm/armv7-a/gnu/arch_memchr.S index 338cb26f73..9d2d39e68a 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_memchr.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_memchr.S @@ -66,6 +66,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @@ -389,3 +393,5 @@ memchr: #else /* Defined in memchr-stub.c. */ #endif + +#endif diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_memcpy.S b/libs/libc/machine/arm/armv7-a/gnu/arch_memcpy.S index a7ebdebe0a..22a7a3556f 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_memcpy.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_memcpy.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* * This memcpy routine is optimised for Cortex-A15 cores and takes advantage * of VFP or NEON when built with the appropriate flags. @@ -624,3 +628,5 @@ def_fn memcpy p2align=6 bx lr .size memcpy, . - memcpy + +#endif diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_memmove.S b/libs/libc/machine/arm/armv7-a/gnu/arch_memmove.S index 61196052fc..058ccd9b39 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_memmove.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_memmove.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + .thumb .syntax unified .global memmove @@ -64,3 +68,5 @@ memmove: pop {r4} bx lr .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_memset.S b/libs/libc/machine/arm/armv7-a/gnu/arch_memset.S index 50aece2d63..383c505fdc 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_memset.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_memset.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + .arm .syntax unified .global memset @@ -144,3 +148,5 @@ memset: strbcs r1, [r3], #1 bx lr .size memset, . - memset + +#endif diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_strcmp.S b/libs/libc/machine/arm/armv7-a/gnu/arch_strcmp.S index d8d69192a6..b5b45d09e9 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_strcmp.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_strcmp.S @@ -30,6 +30,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #ifdef __ARMEB__ #define SHFT2LSB lsl #define SHFT2LSBEQ lsleq @@ -301,3 +305,5 @@ strcmp: ldr r5, [sp], #4 bx lr .size strcmp, . - strcmp + +#endif diff --git a/libs/libc/machine/arm/armv7-a/gnu/arch_strlen.S b/libs/libc/machine/arm/armv7-a/gnu/arch_strlen.S index 676302ce8a..6ce9aaf866 100644 --- a/libs/libc/machine/arm/armv7-a/gnu/arch_strlen.S +++ b/libs/libc/machine/arm/armv7-a/gnu/arch_strlen.S @@ -62,6 +62,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "acle-compat.h" .macro def_fn f p2align=0 @@ -182,3 +186,5 @@ def_fn strlen p2align=6 mov const_0, #0 b .Lstart_realigned .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_memchr.S b/libs/libc/machine/arm/armv7-m/gnu/arch_memchr.S index 261452e94e..986b0e1fb7 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_memchr.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_memchr.S @@ -66,6 +66,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @@ -427,3 +431,5 @@ memchr: #else /* Defined in memchr-stub.c. */ #endif + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_memcpy.S b/libs/libc/machine/arm/armv7-m/gnu/arch_memcpy.S index 1ab78f3066..e9761aee0d 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_memcpy.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_memcpy.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* This memcpy routine is optimised for Cortex-M3/M4 cores with/without unaligned access. @@ -345,3 +349,5 @@ memcpy: .cantunwind .fnend .size memcpy, .-memcpy + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_memmove.S b/libs/libc/machine/arm/armv7-m/gnu/arch_memmove.S index 0e51a2d2f3..67d10c9897 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_memmove.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_memmove.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm_asm.h" .thumb @@ -71,3 +75,5 @@ memmove: .cantunwind .fnend .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_memset.S b/libs/libc/machine/arm/armv7-m/gnu/arch_memset.S index 0f08db063f..f3fd46dfb1 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_memset.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_memset.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm_asm.h" .thumb @@ -114,3 +118,5 @@ memset: .cantunwind .fnend .size memset, . - memset + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_strcmp.S b/libs/libc/machine/arm/armv7-m/gnu/arch_strcmp.S index 7ae553be94..742bf96512 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_strcmp.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_strcmp.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Very similar to the generic code, but uses Thumb2 as implemented in ARMv7-M. */ @@ -419,3 +423,5 @@ def_fn strcmp .cantunwind .fnend .size strcmp, . - strcmp + +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_strcpy.S b/libs/libc/machine/arm/armv7-m/gnu/arch_strcpy.S index 873279e16a..c8345f80f2 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_strcpy.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_strcpy.S @@ -18,6 +18,10 @@ * ***************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* This strcpy borrowed some ideas from arch_strcmp.S(). */ /* Parameters and result. */ @@ -306,3 +310,4 @@ offset_3: *dst++ = 0; #endif /* Pseudo code end */ +#endif diff --git a/libs/libc/machine/arm/armv7-m/gnu/arch_strlen.S b/libs/libc/machine/arm/armv7-m/gnu/arch_strlen.S index d8cd7c7e1d..5c3e581c98 100644 --- a/libs/libc/machine/arm/armv7-m/gnu/arch_strlen.S +++ b/libs/libc/machine/arm/armv7-m/gnu/arch_strlen.S @@ -62,6 +62,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm-acle-compat.h" #include "arm_asm.h" @@ -193,3 +197,5 @@ def_fn strlen p2align=6 .cantunwind .fnend .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_memchr.S b/libs/libc/machine/arm/armv7-r/gnu/arch_memchr.S index 6e1ed88763..e6813f578b 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_memchr.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_memchr.S @@ -66,6 +66,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @@ -389,3 +393,5 @@ memchr: #else /* Defined in memchr-stub.c. */ #endif + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_memcpy.S b/libs/libc/machine/arm/armv7-r/gnu/arch_memcpy.S index a6a2d34094..61d8e94adf 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_memcpy.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_memcpy.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* * This memcpy routine is optimised for Cortex-A15 cores and takes advantage * of VFP or NEON when built with the appropriate flags. @@ -624,3 +628,5 @@ def_fn memcpy p2align=6 bx lr .size memcpy, . - memcpy + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_memmove.S b/libs/libc/machine/arm/armv7-r/gnu/arch_memmove.S index 38b3eee5d4..73e3012776 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_memmove.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_memmove.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + .thumb .syntax unified .global memmove @@ -64,3 +68,5 @@ memmove: pop {r4} bx lr .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_memset.S b/libs/libc/machine/arm/armv7-r/gnu/arch_memset.S index 109514283b..a1c601a2ca 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_memset.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_memset.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + .arm .syntax unified .global memset @@ -144,3 +148,5 @@ memset: strbcs r1, [r3], #1 bx lr .size memset, . - memset + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_strcmp.S b/libs/libc/machine/arm/armv7-r/gnu/arch_strcmp.S index 5fcdcb3d34..b56e3a39e8 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_strcmp.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_strcmp.S @@ -30,6 +30,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #ifdef __ARMEB__ #define SHFT2LSB lsl #define SHFT2LSBEQ lsleq @@ -301,3 +305,5 @@ strcmp: ldr r5, [sp], #4 bx lr .size strcmp, . - strcmp + +#endif diff --git a/libs/libc/machine/arm/armv7-r/gnu/arch_strlen.S b/libs/libc/machine/arm/armv7-r/gnu/arch_strlen.S index c5aa3bacb0..f6ed3266ed 100644 --- a/libs/libc/machine/arm/armv7-r/gnu/arch_strlen.S +++ b/libs/libc/machine/arm/armv7-r/gnu/arch_strlen.S @@ -62,6 +62,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "acle-compat.h" .macro def_fn f p2align=0 @@ -182,3 +186,5 @@ def_fn strlen p2align=6 mov const_0, #0 b .Lstart_realigned .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_memchr.S b/libs/libc/machine/arm/armv8-m/gnu/arch_memchr.S index 57f7caef9c..de60106ebe 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_memchr.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_memchr.S @@ -66,6 +66,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @@ -427,3 +431,5 @@ memchr: #else /* Defined in memchr-stub.c. */ #endif + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_memcpy.S b/libs/libc/machine/arm/armv8-m/gnu/arch_memcpy.S index 161072e212..2606ce111d 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_memcpy.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_memcpy.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* This memcpy routine is optimised for Cortex-M3/M4 cores with/without unaligned access. @@ -367,3 +371,5 @@ memcpy: .cantunwind .fnend .size memcpy, .-memcpy + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_memmove.S b/libs/libc/machine/arm/armv8-m/gnu/arch_memmove.S index fecfca6d89..10ec4429c3 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_memmove.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_memmove.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm_asm.h" .thumb @@ -71,3 +75,5 @@ memmove: .cantunwind .fnend .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_memset.S b/libs/libc/machine/arm/armv8-m/gnu/arch_memset.S index 82c3659d8a..d63bb7ee40 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_memset.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_memset.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm_asm.h" .thumb @@ -129,3 +133,5 @@ memset: .cantunwind .fnend .size memset, . - memset + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_strcmp.S b/libs/libc/machine/arm/armv8-m/gnu/arch_strcmp.S index 6b4d64bcf7..5e14800d69 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_strcmp.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_strcmp.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Very similar to the generic code, but uses Thumb2 as implemented in ARMv7-M. */ @@ -419,3 +423,5 @@ def_fn strcmp .cantunwind .fnend .size strcmp, . - strcmp + +#endif diff --git a/libs/libc/machine/arm/armv8-m/gnu/arch_strlen.S b/libs/libc/machine/arm/armv8-m/gnu/arch_strlen.S index 524ff36176..0987c5dcee 100644 --- a/libs/libc/machine/arm/armv8-m/gnu/arch_strlen.S +++ b/libs/libc/machine/arm/armv8-m/gnu/arch_strlen.S @@ -62,6 +62,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "arm-acle-compat.h" #include "arm_asm.h" @@ -193,3 +197,5 @@ def_fn strlen p2align=6 .cantunwind .fnend .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_memchr.S b/libs/libc/machine/arm64/gnu/arch_memchr.S index f999057413..9b21d68ce9 100644 --- a/libs/libc/machine/arm64/gnu/arch_memchr.S +++ b/libs/libc/machine/arm64/gnu/arch_memchr.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -171,3 +175,5 @@ def_fn memchr ret .size memchr, . - memchr + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_memcmp.S b/libs/libc/machine/arm64/gnu/arch_memcmp.S index 5e2c978c2b..6cf6533250 100644 --- a/libs/libc/machine/arm64/gnu/arch_memcmp.S +++ b/libs/libc/machine/arm64/gnu/arch_memcmp.S @@ -59,6 +59,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses. @@ -194,3 +198,5 @@ L(byte_loop): ret .size memcmp, . - memcmp + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_memcpy.S b/libs/libc/machine/arm64/gnu/arch_memcpy.S index b8f9d53d1d..2582ca5046 100644 --- a/libs/libc/machine/arm64/gnu/arch_memcpy.S +++ b/libs/libc/machine/arm64/gnu/arch_memcpy.S @@ -59,6 +59,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses. @@ -230,3 +234,5 @@ L(copy_long): ret .size memcpy, . - memcpy + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_memmove.S b/libs/libc/machine/arm64/gnu/arch_memmove.S index 71c0fef53b..3919382d42 100644 --- a/libs/libc/machine/arm64/gnu/arch_memmove.S +++ b/libs/libc/machine/arm64/gnu/arch_memmove.S @@ -59,6 +59,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses @@ -155,3 +159,5 @@ def_fn memmove, 6 3: ret .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_memset.S b/libs/libc/machine/arm64/gnu/arch_memset.S index a6b07ee975..de64b319a1 100644 --- a/libs/libc/machine/arm64/gnu/arch_memset.S +++ b/libs/libc/machine/arm64/gnu/arch_memset.S @@ -59,6 +59,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses @@ -240,3 +244,5 @@ L(zva_other): b L(tail64) .size memset, . - memset + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strchr.S b/libs/libc/machine/arm64/gnu/arch_strchr.S index 5ff53d5e05..f7b4baf472 100644 --- a/libs/libc/machine/arm64/gnu/arch_strchr.S +++ b/libs/libc/machine/arm64/gnu/arch_strchr.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -159,3 +163,5 @@ def_fn strchr ret .size strchr, . - strchr + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strchrnul.S b/libs/libc/machine/arm64/gnu/arch_strchrnul.S index 04186d7e23..335cfd53ce 100644 --- a/libs/libc/machine/arm64/gnu/arch_strchrnul.S +++ b/libs/libc/machine/arm64/gnu/arch_strchrnul.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -144,3 +148,5 @@ def_fn strchrnul ret .size strchrnul, . - strchrnul + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strcmp.S b/libs/libc/machine/arm64/gnu/arch_strcmp.S index 6860c15976..225698a04e 100644 --- a/libs/libc/machine/arm64/gnu/arch_strcmp.S +++ b/libs/libc/machine/arm64/gnu/arch_strcmp.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -203,3 +207,5 @@ L(done): sub result, data1, data2 ret .size strcmp, .-strcmp + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strcpy.S b/libs/libc/machine/arm64/gnu/arch_strcpy.S index 286f12715b..3acdff3460 100644 --- a/libs/libc/machine/arm64/gnu/arch_strcpy.S +++ b/libs/libc/machine/arm64/gnu/arch_strcpy.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses, min page size 4k. @@ -336,3 +340,5 @@ def_fn STRCPY p2align=6 b .Lfp_gt8 .size STRCPY, . - STRCPY + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strlen.S b/libs/libc/machine/arm64/gnu/arch_strlen.S index bece19b93f..3795381c87 100644 --- a/libs/libc/machine/arm64/gnu/arch_strlen.S +++ b/libs/libc/machine/arm64/gnu/arch_strlen.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses, min page size 4k. @@ -240,3 +244,5 @@ L(page_cross): b L(page_cross_entry) .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strncmp.S b/libs/libc/machine/arm64/gnu/arch_strncmp.S index 5b5fe7ab2a..af7e6442d9 100644 --- a/libs/libc/machine/arm64/gnu/arch_strncmp.S +++ b/libs/libc/machine/arm64/gnu/arch_strncmp.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -292,3 +296,5 @@ def_fn strncmp mov result, #0 ret .size strncmp, . - strncmp + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strnlen.S b/libs/libc/machine/arm64/gnu/arch_strnlen.S index 8623f033a6..a659f80598 100644 --- a/libs/libc/machine/arm64/gnu/arch_strnlen.S +++ b/libs/libc/machine/arm64/gnu/arch_strnlen.S @@ -33,6 +33,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -186,3 +190,5 @@ def_fn strnlen csel data2, data2, data2a, le b .Lrealigned .size strnlen, . - .Lstart /* Include pre-padding in size. */ + +#endif diff --git a/libs/libc/machine/arm64/gnu/arch_strrchr.S b/libs/libc/machine/arm64/gnu/arch_strrchr.S index 25daa316b7..212f20acc6 100644 --- a/libs/libc/machine/arm64/gnu/arch_strrchr.S +++ b/libs/libc/machine/arm64/gnu/arch_strrchr.S @@ -29,6 +29,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /* Assumptions: * * ARMv8-a, AArch64 @@ -177,3 +181,5 @@ def_fn strrchr ret .size strrchr, . - strrchr + +#endif diff --git a/libs/libc/machine/risc-v/gnu/arch_memcpy.S b/libs/libc/machine/risc-v/gnu/arch_memcpy.S index 74905ac313..12198d1741 100644 --- a/libs/libc/machine/risc-v/gnu/arch_memcpy.S +++ b/libs/libc/machine/risc-v/gnu/arch_memcpy.S @@ -18,6 +18,14 @@ * ****************************************************************************/ +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /************************************************************************************ * Public Symbols ************************************************************************************/ @@ -128,3 +136,5 @@ memcpy: bltu a1, a3, 5b 6: ret + +#endif diff --git a/libs/libc/machine/risc-v/gnu/arch_memset.S b/libs/libc/machine/risc-v/gnu/arch_memset.S index 08e797503f..c4130754ea 100644 --- a/libs/libc/machine/risc-v/gnu/arch_memset.S +++ b/libs/libc/machine/risc-v/gnu/arch_memset.S @@ -13,6 +13,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + .text .global memset .type memset, @function @@ -104,3 +108,5 @@ memset: bleu a2, t1, .Ltiny j .Laligned .size memset, .-memset + +#endif diff --git a/libs/libc/machine/risc-v/gnu/arch_strcmp.S b/libs/libc/machine/risc-v/gnu/arch_strcmp.S index b82dcd0103..178c139749 100644 --- a/libs/libc/machine/risc-v/gnu/arch_strcmp.S +++ b/libs/libc/machine/risc-v/gnu/arch_strcmp.S @@ -13,6 +13,10 @@ * ****************************************************************************/ +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + #include "asm.h" .text @@ -185,3 +189,5 @@ strcmp: mask: .dword 0x7f7f7f7f7f7f7f7f #endif + +#endif diff --git a/libs/libc/machine/xtensa/arch_memcpy.S b/libs/libc/machine/xtensa/arch_memcpy.S index b2e8eabf40..d73e3b127b 100644 --- a/libs/libc/machine/xtensa/arch_memcpy.S +++ b/libs/libc/machine/xtensa/arch_memcpy.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Pre-processor Macros ****************************************************************************/ @@ -276,3 +280,5 @@ __memcpy_aux: .end schedule .size memcpy, . - memcpy + +#endif diff --git a/libs/libc/machine/xtensa/arch_memmove.S b/libs/libc/machine/xtensa/arch_memmove.S index f3a1d89b68..cbfb50c585 100644 --- a/libs/libc/machine/xtensa/arch_memmove.S +++ b/libs/libc/machine/xtensa/arch_memmove.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Pre-processor Macros ****************************************************************************/ @@ -479,3 +483,5 @@ memmove: .end schedule .size memmove, . - memmove + +#endif diff --git a/libs/libc/machine/xtensa/arch_memset.S b/libs/libc/machine/xtensa/arch_memset.S index c01b7b4829..d1a0ab7ee7 100644 --- a/libs/libc/machine/xtensa/arch_memset.S +++ b/libs/libc/machine/xtensa/arch_memset.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -175,3 +179,5 @@ __memset_aux: .end schedule .size memset, . - memset + +#endif diff --git a/libs/libc/machine/xtensa/arch_strcmp.S b/libs/libc/machine/xtensa/arch_strcmp.S index 0fd2d1b525..01ea8276cc 100644 --- a/libs/libc/machine/xtensa/arch_strcmp.S +++ b/libs/libc/machine/xtensa/arch_strcmp.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Pre-processor Macros ****************************************************************************/ @@ -760,3 +764,4 @@ strcmp: .end schedule .size strcmp, . - strcmp +#endif diff --git a/libs/libc/machine/xtensa/arch_strcpy.S b/libs/libc/machine/xtensa/arch_strcpy.S index 64b51d3547..20b3076bf7 100644 --- a/libs/libc/machine/xtensa/arch_strcpy.S +++ b/libs/libc/machine/xtensa/arch_strcpy.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -240,3 +244,5 @@ strcpy: .end schedule .size strcpy, . - strcpy + +#endif diff --git a/libs/libc/machine/xtensa/arch_strlen.S b/libs/libc/machine/xtensa/arch_strlen.S index 2653689e7a..4e5e0765c7 100644 --- a/libs/libc/machine/xtensa/arch_strlen.S +++ b/libs/libc/machine/xtensa/arch_strlen.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -120,3 +124,5 @@ strlen: .end schedule .size strlen, . - strlen + +#endif diff --git a/libs/libc/machine/xtensa/arch_strncpy.S b/libs/libc/machine/xtensa/arch_strncpy.S index 93ca184027..24bca9aa06 100644 --- a/libs/libc/machine/xtensa/arch_strncpy.S +++ b/libs/libc/machine/xtensa/arch_strncpy.S @@ -27,6 +27,10 @@ #include #include +#include "libc.h" + +#ifdef LIBC_BUILD_STRING + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -261,3 +265,5 @@ strncpy: .end schedule .size strncpy, . - strncpy + +#endif diff --git a/libs/libc/string/Make.defs b/libs/libc/string/Make.defs index 36876f41a4..54989a901c 100644 --- a/libs/libc/string/Make.defs +++ b/libs/libc/string/Make.defs @@ -32,61 +32,15 @@ CSRCS += lib_strsep.c lib_strerrorr.c lib_explicit_bzero.c lib_strsignal.c CSRCS += lib_index.c lib_rindex.c lib_timingsafe_bcmp.c lib_strverscmp.c CSRCS += lib_mempcpy.c lib_rawmemchr.c lib_bzero.c -ifneq ($(CONFIG_LIBC_ARCH_MEMCHR),y) -CSRCS += lib_memchr.c -endif +CSRCS += lib_memchr.c lib_memcmp.c lib_memmove.c lib_memset.c +CSRCS += lib_strchr.c lib_strcmp.c lib_strcpy.c lib_strlcat.c +CSRCS += lib_strlcpy.c lib_strlen.c lib_strncpy.c lib_strnlen.c -ifneq ($(CONFIG_LIBC_ARCH_MEMCMP),y) -CSRCS += lib_memcmp.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_MEMCPY),y) ifeq ($(CONFIG_MEMCPY_VIK),y) CSRCS += lib_vikmemcpy.c else CSRCS += lib_memcpy.c endif -endif - -ifneq ($(CONFIG_LIBC_ARCH_MEMMOVE),y) -CSRCS += lib_memmove.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_MEMSET),y) -CSRCS += lib_memset.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRCHR),y) -CSRCS += lib_strchr.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRCMP),y) -CSRCS += lib_strcmp.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRCPY),y) -CSRCS += lib_strcpy.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRLCAT),y) -CSRCS += lib_strlcat.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRLCPY),y) -CSRCS += lib_strlcpy.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRLEN),y) -CSRCS += lib_strlen.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRNCPY),y) -CSRCS += lib_strncpy.c -endif - -ifneq ($(CONFIG_LIBC_ARCH_STRNLEN),y) -CSRCS += lib_strnlen.c -endif ifeq ($(CONFIG_LIBC_LOCALE),y) CSRCS += lib_strcoll.c lib_strxfrm.c diff --git a/libs/libc/string/lib_memchr.c b/libs/libc/string/lib_memchr.c index 1c58bb1bde..d4b2f87f01 100644 --- a/libs/libc/string/lib_memchr.c +++ b/libs/libc/string/lib_memchr.c @@ -26,6 +26,8 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -44,6 +46,7 @@ * ****************************************************************************/ +#if !defined(CONFIG_LIBC_ARCH_MEMCHR) && defined(LIBC_BUILD_STRING) #undef memchr /* See mm/README.txt */ FAR void *memchr(FAR const void *s, int c, size_t n) { @@ -61,3 +64,4 @@ FAR void *memchr(FAR const void *s, int c, size_t n) return NULL; } +#endif diff --git a/libs/libc/string/lib_memcmp.c b/libs/libc/string/lib_memcmp.c index 9602c9a254..95b2614a6f 100644 --- a/libs/libc/string/lib_memcmp.c +++ b/libs/libc/string/lib_memcmp.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_MEMCMP +#if !defined(CONFIG_LIBC_ARCH_MEMCMP) && defined(LIBC_BUILD_STRING) #undef memcmp /* See mm/README.txt */ no_builtin("memcmp") int memcmp(FAR const void *s1, FAR const void *s2, size_t n) diff --git a/libs/libc/string/lib_memcpy.c b/libs/libc/string/lib_memcpy.c index ba91d5abb1..d26e6054e3 100644 --- a/libs/libc/string/lib_memcpy.c +++ b/libs/libc/string/lib_memcpy.c @@ -26,6 +26,8 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -34,7 +36,7 @@ * Name: memcpy ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_MEMCPY +#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_STRING) #undef memcpy /* See mm/README.txt */ no_builtin("memcpy") FAR void *memcpy(FAR void *dest, FAR const void *src, size_t n) diff --git a/libs/libc/string/lib_memmove.c b/libs/libc/string/lib_memmove.c index afed8e0172..c2828dd468 100644 --- a/libs/libc/string/lib_memmove.c +++ b/libs/libc/string/lib_memmove.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_MEMMOVE +#if !defined(CONFIG_LIBC_ARCH_MEMMOVE) && defined(LIBC_BUILD_STRING) #undef memmove /* See mm/README.txt */ no_builtin("memmove") FAR void *memmove(FAR void *dest, FAR const void *src, size_t count) diff --git a/libs/libc/string/lib_memset.c b/libs/libc/string/lib_memset.c index 4f20f15f9e..934b4c1f6d 100644 --- a/libs/libc/string/lib_memset.c +++ b/libs/libc/string/lib_memset.c @@ -30,6 +30,8 @@ #include #include +#include "libc.h" + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -46,7 +48,7 @@ * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_MEMSET +#if !defined(CONFIG_LIBC_ARCH_MEMSET) && defined(LIBC_BUILD_STRING) #undef memset /* See mm/README.txt */ no_builtin("memset") FAR void *memset(FAR void *s, int c, size_t n) diff --git a/libs/libc/string/lib_strcasecmp.c b/libs/libc/string/lib_strcasecmp.c index 1717682c03..7d7f5dd5c5 100644 --- a/libs/libc/string/lib_strcasecmp.c +++ b/libs/libc/string/lib_strcasecmp.c @@ -27,11 +27,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCASECMP +#if !defined(CONFIG_LIBC_ARCH_STRCASECMP) && defined(LIBC_BUILD_STRING) #undef strcasecmp /* See mm/README.txt */ int strcasecmp(FAR const char *cs, FAR const char *ct) { diff --git a/libs/libc/string/lib_strcat.c b/libs/libc/string/lib_strcat.c index e6c3495549..ae0e39baa5 100644 --- a/libs/libc/string/lib_strcat.c +++ b/libs/libc/string/lib_strcat.c @@ -26,11 +26,13 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCAT +#if !defined(CONFIG_LIBC_ARCH_STRCAT) && defined(LIBC_BUILD_STRING) #undef strcat /* See mm/README.txt */ FAR char *strcat(FAR char *dest, FAR const char *src) { diff --git a/libs/libc/string/lib_strchr.c b/libs/libc/string/lib_strchr.c index 1942042e30..3d611c1471 100644 --- a/libs/libc/string/lib_strchr.c +++ b/libs/libc/string/lib_strchr.c @@ -26,6 +26,8 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -44,7 +46,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCHR +#if !defined(CONFIG_LIBC_ARCH_STRCHR) && defined(LIBC_BUILD_STRING) #undef strchr /* See mm/README.txt */ FAR char *strchr(FAR const char *s, int c) { diff --git a/libs/libc/string/lib_strchrnul.c b/libs/libc/string/lib_strchrnul.c index abafb54fa9..e6ad6aa59c 100644 --- a/libs/libc/string/lib_strchrnul.c +++ b/libs/libc/string/lib_strchrnul.c @@ -26,6 +26,8 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -44,7 +46,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCHRNUL +#if !defined(CONFIG_LIBC_ARCH_STRCHRNUL) && defined(LIBC_BUILD_STRING) FAR char *strchrnul(FAR const char *s, int c) { if (s) diff --git a/libs/libc/string/lib_strcmp.c b/libs/libc/string/lib_strcmp.c index 3067684698..aad048eaaa 100644 --- a/libs/libc/string/lib_strcmp.c +++ b/libs/libc/string/lib_strcmp.c @@ -26,11 +26,13 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCMP +#if !defined(CONFIG_LIBC_ARCH_STRCMP) && defined(LIBC_BUILD_STRING) #undef strcmp /* See mm/README.txt */ int strcmp(FAR const char *cs, FAR const char *ct) { diff --git a/libs/libc/string/lib_strcpy.c b/libs/libc/string/lib_strcpy.c index d66dc7e5a4..a602fab89f 100644 --- a/libs/libc/string/lib_strcpy.c +++ b/libs/libc/string/lib_strcpy.c @@ -26,6 +26,8 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -42,7 +44,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRCPY +#if !defined(CONFIG_LIBC_ARCH_STRCPY) && defined(LIBC_BUILD_STRING) #undef strcpy /* See mm/README.txt */ FAR char *strcpy(FAR char *dest, FAR const char *src) { diff --git a/libs/libc/string/lib_strlcat.c b/libs/libc/string/lib_strlcat.c index bc68885444..29365cdd9a 100644 --- a/libs/libc/string/lib_strlcat.c +++ b/libs/libc/string/lib_strlcat.c @@ -27,6 +27,8 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -44,7 +46,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRLCAT +#if !defined(CONFIG_LIBC_ARCH_STRLCAT) && defined(LIBC_BUILD_STRING) size_t strlcat(FAR char *dst, FAR const char *src, size_t dsize) { FAR const char *odst = dst; diff --git a/libs/libc/string/lib_strlcpy.c b/libs/libc/string/lib_strlcpy.c index ee6f20177b..b108af6cf0 100644 --- a/libs/libc/string/lib_strlcpy.c +++ b/libs/libc/string/lib_strlcpy.c @@ -27,6 +27,8 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -43,7 +45,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRLCPY +#if !defined(CONFIG_LIBC_ARCH_STRLCPY) && defined(LIBC_BUILD_STRING) size_t strlcpy(FAR char *dst, FAR const char *src, size_t dsize) { FAR const char *osrc = src; diff --git a/libs/libc/string/lib_strlen.c b/libs/libc/string/lib_strlen.c index 647c6d0643..de180e266f 100644 --- a/libs/libc/string/lib_strlen.c +++ b/libs/libc/string/lib_strlen.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRLEN +#if !defined(CONFIG_LIBC_ARCH_STRLEN) && defined(LIBC_BUILD_STRING) #undef strlen /* See mm/README.txt */ size_t strlen(const char *s) { diff --git a/libs/libc/string/lib_strncasecmp.c b/libs/libc/string/lib_strncasecmp.c index b2e8261e43..ab3c4595f4 100644 --- a/libs/libc/string/lib_strncasecmp.c +++ b/libs/libc/string/lib_strncasecmp.c @@ -28,11 +28,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRNCASECMP +#if !defined(CONFIG_LIBC_ARCH_STRNCASECMP) && defined(LIBC_BUILD_STRING) #undef strncasecmp /* See mm/README.txt */ int strncasecmp(FAR const char *cs, FAR const char *ct, size_t nb) { diff --git a/libs/libc/string/lib_strncat.c b/libs/libc/string/lib_strncat.c index aa05d4c871..379e503fc1 100644 --- a/libs/libc/string/lib_strncat.c +++ b/libs/libc/string/lib_strncat.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRNCAT +#if !defined(CONFIG_LIBC_ARCH_STRNCAT) && defined(LIBC_BUILD_STRING) #undef strncat /* See mm/README.txt */ FAR char *strncat(FAR char *dest, FAR const char *src, size_t n) { diff --git a/libs/libc/string/lib_strncmp.c b/libs/libc/string/lib_strncmp.c index 2af32e9856..58b6fbfde2 100644 --- a/libs/libc/string/lib_strncmp.c +++ b/libs/libc/string/lib_strncmp.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRNCMP +#if !defined(CONFIG_LIBC_ARCH_STRNCMP) && defined(LIBC_BUILD_STRING) #undef strncmp /* See mm/README.txt */ int strncmp(FAR const char *cs, FAR const char *ct, size_t nb) { diff --git a/libs/libc/string/lib_strncpy.c b/libs/libc/string/lib_strncpy.c index 1a7cf58bb2..7200ebadec 100644 --- a/libs/libc/string/lib_strncpy.c +++ b/libs/libc/string/lib_strncpy.c @@ -26,6 +26,8 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -51,7 +53,7 @@ * ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRNCPY +#if !defined(CONFIG_LIBC_ARCH_STRNCPY) && defined(LIBC_BUILD_STRING) #undef strncpy /* See mm/README.txt */ FAR char *strncpy(FAR char *dest, FAR const char *src, size_t n) { diff --git a/libs/libc/string/lib_strnlen.c b/libs/libc/string/lib_strnlen.c index 26f9419843..c81fcc6125 100644 --- a/libs/libc/string/lib_strnlen.c +++ b/libs/libc/string/lib_strnlen.c @@ -26,11 +26,13 @@ #include #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ -#ifndef CONFIG_LIBC_ARCH_STRNLEN +#if !defined(CONFIG_LIBC_ARCH_STRNLEN) && defined(LIBC_BUILD_STRING) size_t strnlen(const char *s, size_t maxlen) { const char *sc; diff --git a/libs/libc/string/lib_strrchr.c b/libs/libc/string/lib_strrchr.c index c690e94c3f..b8c3c05b5f 100644 --- a/libs/libc/string/lib_strrchr.c +++ b/libs/libc/string/lib_strrchr.c @@ -26,6 +26,8 @@ #include +#include "libc.h" + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -34,7 +36,7 @@ * occurrence of the character c in the string s. */ -#ifndef CONFIG_LIBC_ARCH_STRRCHR +#if !defined(CONFIG_LIBC_ARCH_STRRCHR) && defined(LIBC_BUILD_STRING) #undef strrchr /* See mm/README.txt */ FAR char *strrchr(FAR const char *s, int c) { diff --git a/libs/libc/string/lib_vikmemcpy.c b/libs/libc/string/lib_vikmemcpy.c index ce9a89a4e2..ef1f99afed 100644 --- a/libs/libc/string/lib_vikmemcpy.c +++ b/libs/libc/string/lib_vikmemcpy.c @@ -62,6 +62,10 @@ #include #include +#include "libc.h" + +#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_STRING) + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -342,3 +346,5 @@ FAR void *memcpy(FAR void *dest, FAR const void *src, size_t count) return dest; } + +#endif