libs/libc: Breakdown LIBC_BUILD_STRING into specific string operations macro.

Provide a way to only customize specific string operations,
such as for memcpy with the DMA capability by ROM.

Signed-off-by: yangdongdong <yangdongdong@xiaomi.com>
This commit is contained in:
yangdongdong 2023-08-25 22:38:35 +08:00 committed by Xiang Xiao
parent 4ec7af779d
commit 1956385a7d
71 changed files with 676 additions and 78 deletions

View File

@ -56,9 +56,123 @@
#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
((!defined(CONFIG_LIBC_PREVENT_MEMCHR_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_MEMCHR_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_MEMCHR
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_MEMCMP_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_MEMCMP_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_MEMCMP
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_MEMCPY_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_MEMCPY_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_MEMCPY
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_MEMMOVE_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_MEMMOVE_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_MEMMOVE
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_MEMSET_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_MEMSET_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_MEMSET
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCAT_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCAT_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCAT
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCASECMP_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCASECMP_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCASECMP
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCHR_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCHR_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCHR
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCHRNUL_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCHRNUL_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCHRNUL
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCMP_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCMP_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCMP
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRCPY_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRCPY_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRCPY
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRLCAT_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRLCAT_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRLCAT
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRLEN_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRLEN_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRLEN
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRLCPY_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRLCPY_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRLCPY
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRNCASECMP_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRNCASECMP_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRNCASECMP
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRNCAT_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRNCAT_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRNCAT
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRNLEN_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRNLEN_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRNLEN
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRNCMP_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRNCMP_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRNCMP
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRNCPY_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRNCPY_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRNCPY
#endif
#if defined(CONFIG_BUILD_FLAT) || \
((!defined(CONFIG_LIBC_PREVENT_STRRCHR_USER) && !defined(__KERNEL__)) || \
(!defined(CONFIG_LIBC_PREVENT_STRRCHR_KERNEL) && defined(__KERNEL__)))
# define LIBC_BUILD_STRRCHR
#endif
/****************************************************************************

View File

@ -138,11 +138,450 @@ config LIBC_ARCH_ELF_64BIT
depends on LIBC_ARCH_ELF
config LIBC_PREVENT_STRING_KERNEL
bool
default n
select LIBC_PREVENT_MEMCHR_KERNEL
select LIBC_PREVENT_MEMCMP_KERNEL
select LIBC_PREVENT_MEMCPY_KERNEL
select LIBC_PREVENT_MEMMOVE_KERNEL
select LIBC_PREVENT_MEMSET_KERNEL
select LIBC_PREVENT_STRCAT_KERNEL
select LIBC_PREVENT_STRCASECMP_KERNEL
select LIBC_PREVENT_STRCHR_KERNEL
select LIBC_PREVENT_STRCHRNUL_KERNEL
select LIBC_PREVENT_STRCMP_KERNEL
select LIBC_PREVENT_STRCPY_KERNEL
select LIBC_PREVENT_STRLCAT_KERNEL
select LIBC_PREVENT_STRLEN_KERNEL
select LIBC_PREVENT_STRLCPY_KERNEL
select LIBC_PREVENT_STRNCASECMP_KERNEL
select LIBC_PREVENT_STRNCAT_KERNEL
select LIBC_PREVENT_STRNLEN_KERNEL
select LIBC_PREVENT_STRNCMP_KERNEL
select LIBC_PREVENT_STRNCPY_KERNEL
select LIBC_PREVENT_STRRCHR_KERNEL
config LIBC_PREVENT_STRING_USER
bool
default n
select LIBC_PREVENT_MEMCHR_USER
select LIBC_PREVENT_MEMCMP_USER
select LIBC_PREVENT_MEMCPY_USER
select LIBC_PREVENT_MEMMOVE_USER
select LIBC_PREVENT_MEMSET_USER
select LIBC_PREVENT_STRCAT_USER
select LIBC_PREVENT_STRCASECMP_USER
select LIBC_PREVENT_STRCHR_USER
select LIBC_PREVENT_STRCHRNUL_USER
select LIBC_PREVENT_STRCMP_USER
select LIBC_PREVENT_STRCPY_USER
select LIBC_PREVENT_STRLCAT_USER
select LIBC_PREVENT_STRLEN_USER
select LIBC_PREVENT_STRLCPY_USER
select LIBC_PREVENT_STRNCASECMP_USER
select LIBC_PREVENT_STRNCAT_USER
select LIBC_PREVENT_STRNLEN_USER
select LIBC_PREVENT_STRNCMP_USER
select LIBC_PREVENT_STRNCPY_USER
select LIBC_PREVENT_STRRCHR_USER
config LIBC_PREVENT_MEMCHR_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
Prevent any implementation of the libc memchr from being built and linked
in the kernel, including NuttX's software-defined version of the libc memchr
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 memchr 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 memchr or arch-specific
assembly version is built instead.
config LIBC_PREVENT_MEMCHR_USER
bool
default n
---help---
Prevent any implementation of the libc memchr from being built and linked
in the userspace, including NuttX's software-defined version of the
libc memchr or any other architecture-specific version of it. A ROM-defined
version of the libc memchr may be linked to the userspace by the linker.
config LIBC_PREVENT_MEMCMP_KERNEL
bool
default n
---help---
Prevent any implementation of the libc memcmp from being built and linked
in the kernel, including NuttX's software-defined version of the libc memcmp
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 memcmp or arch-specific
assembly version is built instead.
config LIBC_PREVENT_MEMCMP_USER
bool
default n
---help---
Prevent any implementation of the libc memcmp from being built and linked
in the userspace, including NuttX's software-defined version of the
libc memcmp or any other architecture-specific version of it. A ROM-defined
version of the libc memcmp may be linked to the userspace by the linker.
config LIBC_PREVENT_MEMCPY_KERNEL
bool
default n
---help---
Prevent any implementation of the libc memcpy from being built and linked
in the kernel, including NuttX's software-defined version of the libc memcpy
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 memcpy 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 memcpy or arch-specific
assembly version is built instead.
config LIBC_PREVENT_MEMCPY_USER
bool
default n
---help---
Prevent any implementation of the libc memcpy from being built and linked
in the userspace, including NuttX's software-defined version of the
libc memcpy or any other architecture-specific version of it. A ROM-defined
version of the libc memcpy may be linked to the userspace by the linker.
config LIBC_PREVENT_MEMMOVE_KERNEL
bool
default n
---help---
Prevent any implementation of the libc memmove from being built and linked
in the kernel, including NuttX's software-defined version of the libc memmove
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 memmove 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 memmove or arch-specific
assembly version is built instead.
config LIBC_PREVENT_MEMMOVE_USER
bool
default n
---help---
Prevent any implementation of the libc memmove from being built and linked
in the userspace, including NuttX's software-defined version of the
libc memmove or any other architecture-specific version of it. A ROM-defined
version of the libc memmove may be linked to the userspace by the linker.
config LIBC_PREVENT_MEMSET_KERNEL
bool
default n
---help---
Prevent any implementation of the libc memset from being built and linked
in the kernel, including NuttX's software-defined version of the libc memset
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 memset or arch-specific
assembly version is built instead.
config LIBC_PREVENT_MEMSET_USER
bool
default n
---help---
Prevent any implementation of the libc memset from being built and linked
in the userspace, including NuttX's software-defined version of the
libc memset or any other architecture-specific version of it. A ROM-defined
version of the libc memset may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCAT_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strcat from being built and linked
in the kernel, including NuttX's software-defined version of the libc strcat
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 strcat 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 strcat or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCAT_USER
bool
default n
---help---
Prevent any implementation of the libc strcat from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strcat or any other architecture-specific version of it. A ROM-defined
version of the libc strcat may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCASECMP_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strcasecmp from being built and linked
in the kernel, including NuttX's software-defined version of the libc strcasecmp
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 strcasecmp 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 strcasecmp or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCASECMP_USER
bool
default n
---help---
Prevent any implementation of the libc strcasecmp from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strcasecmp or any other architecture-specific version of it. A ROM-defined
version of the libc strcasecmp may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCHR_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strchr from being built and linked
in the kernel, including NuttX's software-defined version of the libc strchr
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 strchr or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCHR_USER
bool
default n
---help---
Prevent any implementation of the libc strchr from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strchr or any other architecture-specific version of it. A ROM-defined
version of the libc strchr may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCHRNUL_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strchrnul from being built and linked
in the kernel, including NuttX's software-defined version of the libc strchrnul
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 strchrnul 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 strchrnul or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCHRNUL_USER
bool
default n
---help---
Prevent any implementation of the libc strchrnul from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strchrnul or any other architecture-specific version of it. A ROM-defined
version of the libc strchrnul may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCMP_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strcmp from being built and linked
in the kernel, including NuttX's software-defined version of the libc strcmp
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 strcmp 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 strcmp or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCMP_USER
bool
default n
---help---
Prevent any implementation of the libc strcmp from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strcmp or any other architecture-specific version of it. A ROM-defined
version of the libc strcmp may be linked to the userspace by the linker.
config LIBC_PREVENT_STRCPY_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strcpy from being built and linked
in the kernel, including NuttX's software-defined version of the libc strcpy
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 strcpy 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 strcpy or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRCPY_USER
bool
default n
---help---
Prevent any implementation of the libc strcpy from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strcpy or any other architecture-specific version of it. A ROM-defined
version of the libc strcpy may be linked to the userspace by the linker.
config LIBC_PREVENT_STRLCAT_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strlcat from being built and linked
in the kernel, including NuttX's software-defined version of the libc strlcat
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 strlcat 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 strlcat or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRLCAT_USER
bool
default n
---help---
Prevent any implementation of the libc strlcat from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strlcat or any other architecture-specific version of it. A ROM-defined
version of the libc strlcat may be linked to the userspace by the linker.
config LIBC_PREVENT_STRLEN_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strlen from being built and linked
in the kernel, including NuttX's software-defined version of the libc strlen
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 strlen 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 strlen or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRLEN_USER
bool
default n
---help---
Prevent any implementation of the libc strlen from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strlen or any other architecture-specific version of it. A ROM-defined
version of the libc strlen may be linked to the userspace by the linker.
config LIBC_PREVENT_STRLCPY_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strlcpy from being built and linked
in the kernel, including NuttX's software-defined version of the libc strlcpy
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 strlcpy 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 strlcpy or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRLCPY_USER
bool
default n
---help---
Prevent any implementation of the libc strlcpy from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strlcpy or any other architecture-specific version of it. A ROM-defined
version of the libc strlcpy may be linked to the userspace by the linker.
config LIBC_PREVENT_STRNCASECMP_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strncasecmp from being built and linked
in the kernel, including NuttX's software-defined version of the libc strncasecmp
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 strncasecmp 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 strncasecmp or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRNCASECMP_USER
bool
default n
---help---
Prevent any implementation of the libc strncasecmp from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strncasecmp or any other architecture-specific version of it. A ROM-defined
version of the libc strncasecmp may be linked to the userspace by the linker.
config LIBC_PREVENT_STRNCAT_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strncat from being built and linked
in the kernel, including NuttX's software-defined version of the libc strncat
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 strncat 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 strncat or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRNCAT_USER
bool
default n
---help---
Prevent any implementation of the libc strncat from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strncat or any other architecture-specific version of it. A ROM-defined
version of the libc strncat may be linked to the userspace by the linker.
config LIBC_PREVENT_STRNLEN_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strnlen from being built and linked
in the kernel, including NuttX's software-defined version of the libc strnlen
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 strnlen 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 strnlen or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRNLEN_USER
bool
default n
---help---
Prevent any implementation of the libc strnlen from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strnlen or any other architecture-specific version of it. A ROM-defined
version of the libc strnlen may be linked to the userspace by the linker.
config LIBC_PREVENT_STRNCMP_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strncmp from being built and linked
in the kernel, including NuttX's software-defined version of the libc strncmp
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
@ -151,15 +590,60 @@ config LIBC_PREVENT_STRING_KERNEL
NuttX's software-defined version of the libc or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRING_USER
config LIBC_PREVENT_STRNCMP_USER
bool
default n
---help---
Prevent any implementation of the libc from being built and linked
Prevent any implementation of the libc strncmp 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.
libc strncmp or any other architecture-specific version of it. A ROM-defined
version of the libc strncmp may be linked to the userspace by the linker.
config LIBC_PREVENT_STRNCPY_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strncpy from being built and linked
in the kernel, including NuttX's software-defined version of the libc strncpy
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 strncpy 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 strncpy or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRNCPY_USER
bool
default n
---help---
Prevent any implementation of the libc strncpy from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strncpy or any other architecture-specific version of it. A ROM-defined
version of the libc strncpy may be linked to the userspace by the linker.
config LIBC_PREVENT_STRRCHR_KERNEL
bool
default n
---help---
Prevent any implementation of the libc strrchr from being built and linked
in the kernel, including NuttX's software-defined version of the libc strrchr
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 strrchr 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 strrchr or arch-specific
assembly version is built instead.
config LIBC_PREVENT_STRRCHR_USER
bool
default n
---help---
Prevent any implementation of the libc strrchr from being built and linked
in the userspace, including NuttX's software-defined version of the
libc strrchr or any other architecture-specific version of it. A ROM-defined
version of the libc strrchr may be linked to the userspace by the linker.
# One or more the of above may be selected by architecture specific logic

View File

@ -68,7 +68,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCHR
@ 2011-02-07 david.gilbert@linaro.org
@ Extracted from local git a5b438d861

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/*
* This memcpy routine is optimised for Cortex-A15 cores and takes advantage

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
.thumb
.syntax unified

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
.arm
.syntax unified

View File

@ -32,7 +32,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
#ifdef __ARMEB__
#define SHFT2LSB lsl

View File

@ -64,7 +64,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
#include "acle-compat.h"

View File

@ -68,7 +68,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCHR
@ 2011-02-07 david.gilbert@linaro.org
@ Extracted from local git a5b438d861

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/* This memcpy routine is optimised for Cortex-M3/M4 cores with/without
unaligned access.

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
.thumb
.syntax unified

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
.thumb
.syntax unified

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
/* Very similar to the generic code, but uses Thumb2 as implemented
in ARMv7-M. */

View File

@ -20,7 +20,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCPY
/* This strcpy borrowed some ideas from arch_strcmp.S(). */

View File

@ -64,7 +64,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
#include "acle-compat.h"

View File

@ -68,7 +68,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCHR
@ 2011-02-07 david.gilbert@linaro.org
@ Extracted from local git a5b438d861

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/*
* This memcpy routine is optimised for Cortex-A15 cores and takes advantage

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
.thumb
.syntax unified

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
.arm
.syntax unified

View File

@ -32,7 +32,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
#ifdef __ARMEB__
#define SHFT2LSB lsl

View File

@ -64,7 +64,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
#include "acle-compat.h"

View File

@ -68,7 +68,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCHR
@ 2011-02-07 david.gilbert@linaro.org
@ Extracted from local git a5b438d861

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
#ifndef __ARM_FEATURE_MVE
/* This memcpy routine is optimised for Cortex-M3/M4 cores with/without

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
.thumb
.syntax unified

View File

@ -57,7 +57,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
.thumb
.syntax unified

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
#ifdef __ARM_BIG_ENDIAN
#define S2LO lsl

View File

@ -64,7 +64,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
.macro def_fn f p2align=0
.text

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCHR
/* Assumptions:
*

View File

@ -61,7 +61,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCMP
/* Assumptions:
*

View File

@ -61,7 +61,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/* Assumptions:
*

View File

@ -61,7 +61,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
/* Assumptions:
*

View File

@ -61,7 +61,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
/* Assumptions:
*

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCHR
/* Assumptions:
*

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCHRNUL
/* Assumptions:
*

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
/* Assumptions:
*

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCPY
/* Assumptions:
*

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
/* Assumptions:
*

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRNCMP
/* Assumptions:
*

View File

@ -35,7 +35,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRNLEN
/* Assumptions:
*

View File

@ -31,7 +31,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRRCHR
/* Assumptions:
*

View File

@ -24,7 +24,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/************************************************************************************
* Public Symbols

View File

@ -15,7 +15,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
.text
.global memset

View File

@ -15,7 +15,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
#include "asm.h"

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMCPY
/****************************************************************************
* Pre-processor Macros

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMMOVE
/****************************************************************************
* Pre-processor Macros

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_MEMSET
/****************************************************************************
* Public Functions

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCMP
/****************************************************************************
* Pre-processor Macros

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRCPY
/****************************************************************************
* Public Functions

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRLEN
/****************************************************************************
* Public Functions

View File

@ -29,7 +29,7 @@
#include "libc.h"
#ifdef LIBC_BUILD_STRING
#ifdef LIBC_BUILD_STRNCPY
/****************************************************************************
* Public Functions

View File

@ -46,7 +46,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_MEMCHR) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMCHR) && defined(LIBC_BUILD_MEMCHR)
#undef memchr /* See mm/README.txt */
FAR void *memchr(FAR const void *s, int c, size_t n)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_MEMCMP) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMCMP) && defined(LIBC_BUILD_MEMCMP)
#undef memcmp /* See mm/README.txt */
no_builtin("memcmp")
int memcmp(FAR const void *s1, FAR const void *s2, size_t n)

View File

@ -36,7 +36,7 @@
* Name: memcpy
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_MEMCPY)
#undef memcpy /* See mm/README.txt */
no_builtin("memcpy")
FAR void *memcpy(FAR void *dest, FAR const void *src, size_t n)

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_MEMMOVE) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMMOVE) && defined(LIBC_BUILD_MEMMOVE)
#undef memmove /* See mm/README.txt */
no_builtin("memmove")
FAR void *memmove(FAR void *dest, FAR const void *src, size_t count)

View File

@ -48,7 +48,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_MEMSET) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMSET) && defined(LIBC_BUILD_MEMSET)
#undef memset /* See mm/README.txt */
no_builtin("memset")
FAR void *memset(FAR void *s, int c, size_t n)

View File

@ -33,7 +33,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCASECMP) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCASECMP) && defined(LIBC_BUILD_STRCASECMP)
#undef strcasecmp /* See mm/README.txt */
int strcasecmp(FAR const char *cs, FAR const char *ct)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCAT) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCAT) && defined(LIBC_BUILD_STRCAT)
#undef strcat /* See mm/README.txt */
FAR char *strcat(FAR char *dest, FAR const char *src)
{

View File

@ -46,7 +46,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCHR) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCHR) && defined(LIBC_BUILD_STRCHR)
#undef strchr /* See mm/README.txt */
FAR char *strchr(FAR const char *s, int c)
{

View File

@ -46,7 +46,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCHRNUL) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCHRNUL) && defined(LIBC_BUILD_STRCHRNUL)
#undef strchrnul /* See mm/README.txt */
FAR char *strchrnul(FAR const char *s, int c)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCMP) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCMP) && defined(LIBC_BUILD_STRCMP)
#undef strcmp /* See mm/README.txt */
int strcmp(FAR const char *cs, FAR const char *ct)
{

View File

@ -44,7 +44,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRCPY) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRCPY) && defined(LIBC_BUILD_STRCPY)
#undef strcpy /* See mm/README.txt */
FAR char *strcpy(FAR char *dest, FAR const char *src)
{

View File

@ -46,7 +46,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRLCAT) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRLCAT) && defined(LIBC_BUILD_STRLCAT)
#undef strlcat /* See mm/README.txt */
size_t strlcat(FAR char *dst, FAR const char *src, size_t dsize)
{

View File

@ -45,7 +45,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRLCPY) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRLCPY) && defined(LIBC_BUILD_STRLCPY)
#undef strlcpy /* See mm/README.txt */
size_t strlcpy(FAR char *dst, FAR const char *src, size_t dsize)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRLEN) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRLEN) && defined(LIBC_BUILD_STRLEN)
#undef strlen /* See mm/README.txt */
size_t strlen(FAR const char *s)
{

View File

@ -34,7 +34,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRNCASECMP) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRNCASECMP) && defined(LIBC_BUILD_STRNCASECMP)
#undef strncasecmp /* See mm/README.txt */
int strncasecmp(FAR const char *cs, FAR const char *ct, size_t nb)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRNCAT) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRNCAT) && defined(LIBC_BUILD_STRNCAT)
#undef strncat /* See mm/README.txt */
FAR char *strncat(FAR char *dest, FAR const char *src, size_t n)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRNCMP) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRNCMP) && defined(LIBC_BUILD_STRNCMP)
#undef strncmp /* See mm/README.txt */
int strncmp(FAR const char *cs, FAR const char *ct, size_t nb)
{

View File

@ -53,7 +53,7 @@
*
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRNCPY) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRNCPY) && defined(LIBC_BUILD_STRNCPY)
#undef strncpy /* See mm/README.txt */
FAR char *strncpy(FAR char *dest, FAR const char *src, size_t n)
{

View File

@ -32,7 +32,7 @@
* Public Functions
****************************************************************************/
#if !defined(CONFIG_LIBC_ARCH_STRNLEN) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRNLEN) && defined(LIBC_BUILD_STRNLEN)
#undef strnlen /* See mm/README.txt */
size_t strnlen(FAR const char *s, size_t maxlen)
{

View File

@ -36,7 +36,7 @@
* occurrence of the character c in the string s.
*/
#if !defined(CONFIG_LIBC_ARCH_STRRCHR) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_STRRCHR) && defined(LIBC_BUILD_STRRCHR)
#undef strrchr /* See mm/README.txt */
FAR char *strrchr(FAR const char *s, int c)
{

View File

@ -64,7 +64,7 @@
#include "libc.h"
#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_STRING)
#if !defined(CONFIG_LIBC_ARCH_MEMCPY) && defined(LIBC_BUILD_MEMCPY)
/****************************************************************************
* Pre-processor Definitions