xref: /rk3399_ARM-atf/include/lib/libc/string.h (revision 25002a0042382f641f228e7045f55539d7d1103b)
127989a8eSAntonio Nino Diaz /*
227989a8eSAntonio Nino Diaz  * Copyright (c) 2012-2017 Roberto E. Vargas Caballero
327989a8eSAntonio Nino Diaz  *
427989a8eSAntonio Nino Diaz  * SPDX-License-Identifier: BSD-3-Clause
527989a8eSAntonio Nino Diaz  */
67c0ff9c4SAntonio Nino Diaz /*
7*34d7f196SBoyan Karatotev  * Portions copyright (c) 2018-2025, Arm Limited and Contributors.
8f328bff6SJit Loon Lim  * Portions copyright (c) 2023, Intel Corporation. All rights reserved.
97c0ff9c4SAntonio Nino Diaz  * All rights reserved.
107c0ff9c4SAntonio Nino Diaz  */
1127989a8eSAntonio Nino Diaz 
122fb88cb2SAntonio Nino Diaz #ifndef STRING_H
132fb88cb2SAntonio Nino Diaz #define STRING_H
1427989a8eSAntonio Nino Diaz 
15d45c323aSBence Szépkúti #include <stddef.h>
1627989a8eSAntonio Nino Diaz 
17*34d7f196SBoyan Karatotev /*
18*34d7f196SBoyan Karatotev  * When conditions are right, the compiler may have a baked-in call that can be
19*34d7f196SBoyan Karatotev  * inlined and that will be much more optimal than our generic implementation.
20*34d7f196SBoyan Karatotev  * When it doesn't, it will emit a call to the original function for which we
21*34d7f196SBoyan Karatotev  * provide an implementation.
22*34d7f196SBoyan Karatotev  */
23*34d7f196SBoyan Karatotev #define memcpy  __builtin_memcpy
24*34d7f196SBoyan Karatotev #define memset  __builtin_memset
25*34d7f196SBoyan Karatotev #define memcmp  __builtin_memcmp
26*34d7f196SBoyan Karatotev #define memchr  __builtin_memchr
27*34d7f196SBoyan Karatotev #define strcmp  __builtin_strcmp
28*34d7f196SBoyan Karatotev #define strncmp __builtin_strncmp
29*34d7f196SBoyan Karatotev #define strchr  __builtin_strchr
30*34d7f196SBoyan Karatotev #define strlen  __builtin_strlen
31*34d7f196SBoyan Karatotev #define strrchr __builtin_strrchr
32*34d7f196SBoyan Karatotev 
33f328bff6SJit Loon Lim int memcpy_s(void *dst, size_t dsize, void *src, size_t ssize);
342fb88cb2SAntonio Nino Diaz void *memmove(void *dst, const void *src, size_t len);
35ebff1072SAmbroise Vincent void *memrchr(const void *src, int c, size_t len);
362fb88cb2SAntonio Nino Diaz size_t strnlen(const char *s, size_t maxlen);
37b4cf974aSAntonio Nino Diaz size_t strlcpy(char * dst, const char * src, size_t dsize);
381123a5e2SMadhukar Pappireddy size_t strlcat(char * dst, const char * src, size_t dsize);
39374eef02SMadhukar Pappireddy char *strtok_r(char *s, const char *delim, char **last);
40eb088894SJit Loon Lim size_t strnlen_secure(const char *str, size_t maxlen);
41eb088894SJit Loon Lim int strcpy_secure(char *restrict dest, size_t dest_size, const char *restrict src);
4227989a8eSAntonio Nino Diaz 
432fb88cb2SAntonio Nino Diaz #endif /* STRING_H */
44