diff options
| author | kettenis <> | 2026-06-30 19:18:54 +0000 |
|---|---|---|
| committer | kettenis <> | 2026-06-30 19:18:54 +0000 |
| commit | 4f7531f655fae2d0cc481ba74ba6fba7ba4a3908 (patch) | |
| tree | 7bf512e249d98bf8ac83ccd2034ded380eb8be9c /src/lib | |
| parent | b5822f67972652bc629b0b43dd2d13ae6c7efe01 (diff) | |
| download | openbsd-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.h | 6 | ||||
| -rw-r--r-- | src/lib/libc/string/strlen.c | 4 | ||||
| -rw-r--r-- | src/lib/libc/string/wcslen.c | 4 |
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 @@ | |||
| 85 | BUILTIN void *memmove(void *, const void *, __size_t); | 85 | BUILTIN void *memmove(void *, const void *, __size_t); |
| 86 | BUILTIN void *memcpy(void *__restrict, const void *__restrict, __size_t); | 86 | BUILTIN void *memcpy(void *__restrict, const void *__restrict, __size_t); |
| 87 | BUILTIN void *memset(void *, int, __size_t); | 87 | BUILTIN void *memset(void *, int, __size_t); |
| 88 | BUILTIN __size_t strlen(const char *); | ||
| 89 | BUILTIN __size_t wcslen(const __wchar_t *); | ||
| 88 | BUILTIN void __stack_smash_handler(const char [], int __unused); | 90 | BUILTIN void __stack_smash_handler(const char [], int __unused); |
| 89 | #if !defined(__clang__) | 91 | #if !defined(__clang__) |
| 90 | PROTO_NORMAL(memmove); | 92 | PROTO_NORMAL(memmove); |
| 91 | PROTO_NORMAL(memcpy); | 93 | PROTO_NORMAL(memcpy); |
| 92 | PROTO_NORMAL(memset); | 94 | PROTO_NORMAL(memset); |
| 95 | PROTO_NORMAL(strlen); | ||
| 96 | PROTO_NORMAL(wcslen); | ||
| 93 | PROTO_NORMAL(__stack_smash_handler); | 97 | PROTO_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 | ||
| 44 | DEF_STRONG(strlen); | 44 | DEF_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 | } |
| 45 | DEF_STRONG(wcslen); | 45 | DEF_BUILTIN(wcslen); |
