Antonio Nino Diaz | cf0f805 | 2018-08-17 10:45:47 +0100 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2012-2017 Roberto E. Vargas Caballero |
| 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | */ |
Antonio Nino Diaz | 6ef1612 | 2018-08-15 19:51:09 +0100 | [diff] [blame] | 6 | /* |
Boyan Karatotev | 7ab3081 | 2025-03-17 10:31:03 +0000 | [diff] [blame^] | 7 | * Portions copyright (c) 2018-2025, Arm Limited and Contributors. |
Jit Loon Lim | 410c451 | 2023-05-28 16:33:28 +0800 | [diff] [blame] | 8 | * Portions copyright (c) 2023, Intel Corporation. All rights reserved. |
Antonio Nino Diaz | 6ef1612 | 2018-08-15 19:51:09 +0100 | [diff] [blame] | 9 | * All rights reserved. |
| 10 | */ |
Antonio Nino Diaz | cf0f805 | 2018-08-17 10:45:47 +0100 | [diff] [blame] | 11 | |
Antonio Nino Diaz | 17605e7 | 2018-08-14 13:39:29 +0100 | [diff] [blame] | 12 | #ifndef STRING_H |
| 13 | #define STRING_H |
Antonio Nino Diaz | cf0f805 | 2018-08-17 10:45:47 +0100 | [diff] [blame] | 14 | |
Bence Szépkúti | 92410c9 | 2019-10-25 18:12:41 +0200 | [diff] [blame] | 15 | #include <stddef.h> |
Antonio Nino Diaz | cf0f805 | 2018-08-17 10:45:47 +0100 | [diff] [blame] | 16 | |
Boyan Karatotev | 7ab3081 | 2025-03-17 10:31:03 +0000 | [diff] [blame^] | 17 | /* |
| 18 | * When conditions are right, the compiler may have a baked-in call that can be |
| 19 | * inlined and that will be much more optimal than our generic implementation. |
| 20 | * When it doesn't, it will emit a call to the original function for which we |
| 21 | * provide an implementation. |
| 22 | */ |
| 23 | #define memcpy __builtin_memcpy |
| 24 | #define memset __builtin_memset |
| 25 | #define memcmp __builtin_memcmp |
| 26 | #define memchr __builtin_memchr |
| 27 | #define strcmp __builtin_strcmp |
| 28 | #define strncmp __builtin_strncmp |
| 29 | #define strchr __builtin_strchr |
| 30 | #define strlen __builtin_strlen |
| 31 | #define strrchr __builtin_strrchr |
| 32 | |
Jit Loon Lim | 410c451 | 2023-05-28 16:33:28 +0800 | [diff] [blame] | 33 | int memcpy_s(void *dst, size_t dsize, void *src, size_t ssize); |
Antonio Nino Diaz | 17605e7 | 2018-08-14 13:39:29 +0100 | [diff] [blame] | 34 | void *memmove(void *dst, const void *src, size_t len); |
Ambroise Vincent | 35248f2 | 2019-06-19 17:14:09 +0100 | [diff] [blame] | 35 | void *memrchr(const void *src, int c, size_t len); |
Antonio Nino Diaz | 17605e7 | 2018-08-14 13:39:29 +0100 | [diff] [blame] | 36 | size_t strnlen(const char *s, size_t maxlen); |
Antonio Nino Diaz | bbf55f9 | 2018-09-27 09:22:19 +0100 | [diff] [blame] | 37 | size_t strlcpy(char * dst, const char * src, size_t dsize); |
Madhukar Pappireddy | af0cd5f | 2020-09-04 14:04:23 -0500 | [diff] [blame] | 38 | size_t strlcat(char * dst, const char * src, size_t dsize); |
Madhukar Pappireddy | d7e7be3 | 2020-09-16 18:58:49 -0500 | [diff] [blame] | 39 | char *strtok_r(char *s, const char *delim, char **last); |
Jit Loon Lim | 012a9d9 | 2025-03-17 16:25:53 +0800 | [diff] [blame] | 40 | size_t strnlen_secure(const char *str, size_t maxlen); |
| 41 | int strcpy_secure(char *restrict dest, size_t dest_size, const char *restrict src); |
Antonio Nino Diaz | cf0f805 | 2018-08-17 10:45:47 +0100 | [diff] [blame] | 42 | |
Antonio Nino Diaz | 17605e7 | 2018-08-14 13:39:29 +0100 | [diff] [blame] | 43 | #endif /* STRING_H */ |