summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorkettenis <>2026-06-30 19:18:54 +0000
committerkettenis <>2026-06-30 19:18:54 +0000
commit4f7531f655fae2d0cc481ba74ba6fba7ba4a3908 (patch)
tree7bf512e249d98bf8ac83ccd2034ded380eb8be9c /src/lib
parentb5822f67972652bc629b0b43dd2d13ae6c7efe01 (diff)
downloadopenbsd-4f7531f655fae2d0cc481ba74ba6fba7ba4a3908.tar.gz
openbsd-4f7531f655fae2d0cc481ba74ba6fba7ba4a3908.tar.bz2
openbsd-4f7531f655fae2d0cc481ba74ba6fba7ba4a3908.zip
LLVM now emits calls to strlen(3) and wcslen(3). Redirect those calls to
our hidden aliases to prevent unnecessary PLT entries (like we already do for memmove(3), memcpy(4) and memset(3)). ok deraadt@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libc/include/namespace.h6
-rw-r--r--src/lib/libc/string/strlen.c4
-rw-r--r--src/lib/libc/string/wcslen.c4
3 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/libc/include/namespace.h b/src/lib/libc/include/namespace.h
index cc83735b90..9058230429 100644
--- a/src/lib/libc/include/namespace.h
+++ b/src/lib/libc/include/namespace.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: namespace.h,v 1.17 2025/10/23 19:06:10 miod Exp $ */ 1/* $OpenBSD: namespace.h,v 1.18 2026/06/30 19:18:53 kettenis Exp $ */
2 2
3#ifndef _LIBC_NAMESPACE_H_ 3#ifndef _LIBC_NAMESPACE_H_
4#define _LIBC_NAMESPACE_H_ 4#define _LIBC_NAMESPACE_H_
@@ -85,11 +85,15 @@
85BUILTIN void *memmove(void *, const void *, __size_t); 85BUILTIN void *memmove(void *, const void *, __size_t);
86BUILTIN void *memcpy(void *__restrict, const void *__restrict, __size_t); 86BUILTIN void *memcpy(void *__restrict, const void *__restrict, __size_t);
87BUILTIN void *memset(void *, int, __size_t); 87BUILTIN void *memset(void *, int, __size_t);
88BUILTIN __size_t strlen(const char *);
89BUILTIN __size_t wcslen(const __wchar_t *);
88BUILTIN void __stack_smash_handler(const char [], int __unused); 90BUILTIN void __stack_smash_handler(const char [], int __unused);
89#if !defined(__clang__) 91#if !defined(__clang__)
90PROTO_NORMAL(memmove); 92PROTO_NORMAL(memmove);
91PROTO_NORMAL(memcpy); 93PROTO_NORMAL(memcpy);
92PROTO_NORMAL(memset); 94PROTO_NORMAL(memset);
95PROTO_NORMAL(strlen);
96PROTO_NORMAL(wcslen);
93PROTO_NORMAL(__stack_smash_handler); 97PROTO_NORMAL(__stack_smash_handler);
94#endif 98#endif
95#undef BUILTIN 99#undef BUILTIN
diff --git a/src/lib/libc/string/strlen.c b/src/lib/libc/string/strlen.c
index a5721d3e7f..cf3cd8cf86 100644
--- a/src/lib/libc/string/strlen.c
+++ b/src/lib/libc/string/strlen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: strlen.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ 1/* $OpenBSD: strlen.c,v 1.10 2026/06/30 19:18:54 kettenis Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1990, 1993 4 * Copyright (c) 1990, 1993
@@ -41,4 +41,4 @@ strlen(const char *str)
41 return (s - str); 41 return (s - str);
42} 42}
43 43
44DEF_STRONG(strlen); 44DEF_BUILTIN(strlen);
diff --git a/src/lib/libc/string/wcslen.c b/src/lib/libc/string/wcslen.c
index 16d4bba128..937d352e31 100644
--- a/src/lib/libc/string/wcslen.c
+++ b/src/lib/libc/string/wcslen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: wcslen.c,v 1.4 2015/09/12 16:23:14 guenther Exp $ */ 1/* $OpenBSD: wcslen.c,v 1.5 2026/06/30 19:18:54 kettenis Exp $ */
2/* $NetBSD: wcslen.c,v 1.2 2001/01/03 14:29:36 lukem Exp $ */ 2/* $NetBSD: wcslen.c,v 1.2 2001/01/03 14:29:36 lukem Exp $ */
3 3
4/*- 4/*-
@@ -42,4 +42,4 @@ wcslen(const wchar_t *s)
42 42
43 return p - s; 43 return p - s;
44} 44}
45DEF_STRONG(wcslen); 45DEF_BUILTIN(wcslen);