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