diff options
author | guenther <> | 2015-08-31 02:53:57 +0000 |
---|---|---|
committer | guenther <> | 2015-08-31 02:53:57 +0000 |
commit | 9bfe2450029c26d54ebb48f0d8c01d35b63865d3 (patch) | |
tree | bb414296df7d65acc4ba9b4159bf5979ae934d04 | |
parent | 4f937c61ae895d4e27690c1e2bb8bc911a3b4a12 (diff) | |
download | openbsd-9bfe2450029c26d54ebb48f0d8c01d35b63865d3.tar.gz openbsd-9bfe2450029c26d54ebb48f0d8c01d35b63865d3.tar.bz2 openbsd-9bfe2450029c26d54ebb48f0d8c01d35b63865d3.zip |
Add framework for resolving (pun intended) libc namespace issues, using
wrapper .h files and asm labels to let internal calls resolve directly and
not be overridable or use the PLT. Then, apply that framework to most of
the functions in stdio.h, string.h, err.h, and wchar.h. Delete the
should-have-been-hidden-all-along _v?(err|warn)[cx]? symbols while here.
tests clean on i386, amd64, sparc64, powerpc, and mips64
naming feedback from kettenis@ and millert@
ok kettenis@
43 files changed, 233 insertions, 49 deletions
diff --git a/src/lib/libc/include/namespace.h b/src/lib/libc/include/namespace.h index 4a51f15ddf..b0cad502a3 100644 --- a/src/lib/libc/include/namespace.h +++ b/src/lib/libc/include/namespace.h | |||
@@ -1,18 +1,158 @@ | |||
1 | /* $OpenBSD: namespace.h,v 1.2 1996/08/19 08:28:08 tholo Exp $ */ | 1 | /* $OpenBSD: namespace.h,v 1.3 2015/08/31 02:53:56 guenther Exp $ */ |
2 | 2 | ||
3 | #ifndef _LIBC_NAMESPACE_H_ | ||
4 | #define _LIBC_NAMESPACE_H_ | ||
5 | |||
6 | /* These will be replaced with symbol renaming ala PROTO_NORMAL */ | ||
3 | #define catclose _catclose | 7 | #define catclose _catclose |
4 | #define catgets _catgets | 8 | #define catgets _catgets |
5 | #define catopen _catopen | 9 | #define catopen _catopen |
6 | #define err _err | ||
7 | #define errx _errx | ||
8 | #define strtoq _strtoq | 10 | #define strtoq _strtoq |
9 | #define strtouq _strtouq | 11 | #define strtouq _strtouq |
10 | #define sys_errlist _sys_errlist | 12 | #define sys_errlist _sys_errlist |
11 | #define sys_nerr _sys_nerr | 13 | #define sys_nerr _sys_nerr |
12 | #define sys_siglist _sys_siglist | 14 | #define sys_siglist _sys_siglist |
13 | #define verr _verr | 15 | |
14 | #define verrx _verrx | 16 | /* |
15 | #define vwarn _vwarn | 17 | * Copyright (c) 2015 Philip Guenther <guenther@openbsd.org> |
16 | #define vwarnx _vwarnx | 18 | * |
17 | #define warn _warn | 19 | * Permission to use, copy, modify, and distribute this software for any |
18 | #define warnx _warnx | 20 | * purpose with or without fee is hereby granted, provided that the above |
21 | * copyright notice and this permission notice appear in all copies. | ||
22 | * | ||
23 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
24 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
25 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
26 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
27 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
28 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
29 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
30 | */ | ||
31 | |||
32 | /* | ||
33 | * The goal: calls from inside libc to other libc functions should be via | ||
34 | * identifiers that are of hidden visibility and--to avoid confusion--are | ||
35 | * in the reserved namespace. By doing this these calls are protected | ||
36 | * from overriding by applications and on many platforms can avoid creation | ||
37 | * or use of GOT or PLT entries. I've chosen a prefix of underbar-C-underbar | ||
38 | * ("_libc_") for this. These will not be declared directly; instead, the | ||
39 | * gcc "asm labels" extension will be used rename the function. | ||
40 | * | ||
41 | * For syscalls which are cancellation points, such as wait4(), there | ||
42 | * are identifiers that do not provide cancellation: | ||
43 | * _libc_wait4 hidden alias, for use internal to libc only | ||
44 | * _thread_sys_wait4 global name, for use outside libc only | ||
45 | * ...and identifiers that do provide cancellation: | ||
46 | * wait4 weak alias, for general use | ||
47 | * _libc_wait4_cancel hidden alias, for use internal to libc only | ||
48 | * Inside libc, the bare name ("wait4") binds to the version *without* | ||
49 | * cancellation; the few times where cancellation is desired it can be | ||
50 | * obtained by calling CANCEL(x) instead of just x. | ||
51 | * | ||
52 | * Some other calls need to be wrapped for reasons other than cancellation, | ||
53 | * such as to provide functionality beyond the underlying syscall (e.g., | ||
54 | * setlogin). For these, there are identifiers for the raw call, without | ||
55 | * the wrapping: | ||
56 | * _libc_setlogin hidden alias, for use internal to libc only | ||
57 | * _thread_sys_setlogin global name, for use outside libc only | ||
58 | * ...and identifiers that do provide the libc wrapping: | ||
59 | * setlogin weak alias, for general use | ||
60 | * _libc_setlogin_wrap hidden alias, for use internal to libc only | ||
61 | * Inside libc, the bare name ("setlogin") binds to the wrapper; when the | ||
62 | * raw version is necessary it can be obtained by calling HIDDEN(x) instead of | ||
63 | * just x. | ||
64 | * | ||
65 | * For syscalls which are not cancellation points, such as getpid(), | ||
66 | * the identifiers are just: | ||
67 | * _libc_getpid hidden alias, for use internal to libc only | ||
68 | * _thread_sys_getpid global name, for use outside libc only | ||
69 | * getpid weak alias, for use outside libc only | ||
70 | * | ||
71 | * By using gcc's "asm label" extension, we can usually avoid having | ||
72 | * to type those prefixes in the .h and .c files. However, for those | ||
73 | * cases where a non-default binding is necessary we can use these macros | ||
74 | * to get the desired identifier: | ||
75 | * | ||
76 | * CANCEL(x) | ||
77 | * This expands to the internal, hidden name of a cancellation | ||
78 | * wrapper: _libc_x_cancel. ex: CANCEL(fsync)(fd) | ||
79 | * | ||
80 | * WRAP(x) | ||
81 | * This expands to the internal, hidden name of a non-cancellation | ||
82 | * wrapper: _libc_x_wrap. ex: WRAP(sigpending)(set) | ||
83 | * | ||
84 | * | ||
85 | * In order to actually set up the desired asm labels, we use these in | ||
86 | * the internal .h files: | ||
87 | * PROTO_NORMAL(x) Symbols used both internally and externally | ||
88 | * This makes gcc convert use of x to use _libc_x instead | ||
89 | * ex: PROTO_NORMAL(getpid) | ||
90 | * | ||
91 | * PROTO_STD_DEPRECATED(x) Standard C symbols that we don't want to use | ||
92 | * This just marks the symbol as deprecated, with no renaming. | ||
93 | * ex: PROTO_STD_DEPRECATED(strcpy) | ||
94 | * | ||
95 | * PROTO_DEPRECATED(x) Symbols not in ISO C that we don't want to use | ||
96 | * This marks the symbol as both weak and deprecated, with no renaming | ||
97 | * ex: PROTO_DEPRECATED(creat) | ||
98 | * | ||
99 | * PROTO_CANCEL(x) Functions that have cancellation wrappers | ||
100 | * Like PROTO_NORMAL(x), but also declares _libc_x_cancel | ||
101 | * ex: PROTO_CANCEL(wait4) | ||
102 | * | ||
103 | * PROTO_WRAP(x) Functions that have wrappers for other reasons | ||
104 | * This makes gcc convert use of x to use _libc_x_wrap instead. | ||
105 | * ex: PROTO_WRAP(setlogin) | ||
106 | * | ||
107 | * | ||
108 | * Finally, to create the expected aliases, we use these in the .c files | ||
109 | * where the definitions are: | ||
110 | * DEF_STRONG(x) Symbols reserved to or specified by ISO C | ||
111 | * This defines x as a strong alias for _libc_x; this must only | ||
112 | * be used for symbols that are reserved by the C standard | ||
113 | * (or reserved in the external identifier namespace). | ||
114 | * Matches with PROTO_NORMAL() | ||
115 | * ex: DEF_STRONG(fopen) | ||
116 | * | ||
117 | * DEF_WEAK(x) Symbols used internally and not in ISO C | ||
118 | * This defines x as a weak alias for _libc_x | ||
119 | * Matches with PROTO_NORMAL() | ||
120 | * ex: DEF_WEAK(lseek) | ||
121 | * | ||
122 | * DEF_CANCEL(x) Symbols that have a cancellation wrapper | ||
123 | * This defines x as a weak alias for _libc_x_cancel. | ||
124 | * Matches with PROTO_CANCEL() | ||
125 | * ex: DEF_CANCEL(read) | ||
126 | * | ||
127 | * DEF_WRAP(x) | ||
128 | * This defines x as a weak alias for _libc_x_wrap. | ||
129 | * Matches with PROTO_WRAP() | ||
130 | * ex: DEF_WRAP(setlogin) | ||
131 | * | ||
132 | * DEF_SYS(x) | ||
133 | * This defines _thread_sys_x as a strong alias for _libc_x. This should | ||
134 | * only be needed for syscalls that have C instead of asm stubs. | ||
135 | * Matches with PROTO_NORMAL(), PROTO_CANCEL(), or PROTO_WRAP() | ||
136 | * ex: DEF_SYS(pread) | ||
137 | */ | ||
138 | |||
139 | #define HIDDEN(x) _libc_##x | ||
140 | #define CANCEL(x) _libc_##x##_cancel | ||
141 | #define WRAP(x) _libc_##x##_wrap | ||
142 | #define HIDDEN_STRING(x) "_libc_" __STRING(x) | ||
143 | #define WRAP_STRING(x) "_libc_" __STRING(x) "_wrap" | ||
144 | |||
145 | #define PROTO_NORMAL(x) __dso_hidden typeof(x) x asm(HIDDEN_STRING(x)) | ||
146 | #define PROTO_STD_DEPRECATED(x) typeof(x) x __attribute__((deprecated)) | ||
147 | #define PROTO_DEPRECATED(x) typeof(x) x __attribute__((deprecated, weak)) | ||
148 | #define PROTO_CANCEL(x) PROTO_NORMAL(x), CANCEL(x) | ||
149 | #define PROTO_WRAP(x) __dso_hidden typeof(x) x asm(WRAP_STRING(x)) | ||
150 | |||
151 | #define DEF_STRONG(x) __strong_alias(x, HIDDEN(x)) | ||
152 | #define DEF_WEAK(x) __weak_alias(x, HIDDEN(x)) | ||
153 | #define DEF_CANCEL(x) __weak_alias(x, CANCEL(x)) | ||
154 | #define DEF_WRAP(x) __weak_alias(x, WRAP(x)) | ||
155 | #define DEF_SYS(x) __strong_alias(_thread_sys_##x, HIDDEN(x)) | ||
156 | |||
157 | #endif /* _LIBC_NAMESPACE_H_ */ | ||
158 | |||
diff --git a/src/lib/libc/string/bcmp.c b/src/lib/libc/string/bcmp.c index f64672990c..5d446bf096 100644 --- a/src/lib/libc/string/bcmp.c +++ b/src/lib/libc/string/bcmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bcmp.c,v 1.10 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: bcmp.c,v 1.11 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1987 Regents of the University of California. | 4 | * Copyright (c) 1987 Regents of the University of California. |
@@ -49,3 +49,4 @@ bcmp(const void *b1, const void *b2, size_t length) | |||
49 | while (--length); | 49 | while (--length); |
50 | return (0); | 50 | return (0); |
51 | } | 51 | } |
52 | DEF_WEAK(bcmp); | ||
diff --git a/src/lib/libc/string/bcopy.c b/src/lib/libc/string/bcopy.c index fcaa843c71..ef0d368053 100644 --- a/src/lib/libc/string/bcopy.c +++ b/src/lib/libc/string/bcopy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bcopy.c,v 1.6 2014/11/30 19:43:56 deraadt Exp $ */ | 1 | /* $OpenBSD: bcopy.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -110,3 +110,4 @@ bcopy(const void *src0, void *dst0, size_t length) | |||
110 | done: | 110 | done: |
111 | return; | 111 | return; |
112 | } | 112 | } |
113 | DEF_WEAK(bcopy); | ||
diff --git a/src/lib/libc/string/bzero.c b/src/lib/libc/string/bzero.c index fdd3d9cc8d..5173de26dd 100644 --- a/src/lib/libc/string/bzero.c +++ b/src/lib/libc/string/bzero.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bzero.c,v 1.8 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: bzero.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1987 Regents of the University of California. | 4 | * Copyright (c) 1987 Regents of the University of California. |
@@ -42,3 +42,4 @@ bzero(void *b, size_t length) | |||
42 | for (p = b; length--;) | 42 | for (p = b; length--;) |
43 | *p++ = '\0'; | 43 | *p++ = '\0'; |
44 | } | 44 | } |
45 | DEF_WEAK(bzero); | ||
diff --git a/src/lib/libc/string/explicit_bzero.c b/src/lib/libc/string/explicit_bzero.c index 3e33ca85b8..003ea7cc4c 100644 --- a/src/lib/libc/string/explicit_bzero.c +++ b/src/lib/libc/string/explicit_bzero.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: explicit_bzero.c,v 1.3 2014/06/21 02:34:26 matthew Exp $ */ | 1 | /* $OpenBSD: explicit_bzero.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Public domain. | 3 | * Public domain. |
4 | * Written by Matthew Dempsky. | 4 | * Written by Matthew Dempsky. |
@@ -17,3 +17,4 @@ explicit_bzero(void *buf, size_t len) | |||
17 | memset(buf, 0, len); | 17 | memset(buf, 0, len); |
18 | __explicit_bzero_hook(buf, len); | 18 | __explicit_bzero_hook(buf, len); |
19 | } | 19 | } |
20 | DEF_WEAK(explicit_bzero); | ||
diff --git a/src/lib/libc/string/ffs.c b/src/lib/libc/string/ffs.c index de4480a7ef..a75fd9d79f 100644 --- a/src/lib/libc/string/ffs.c +++ b/src/lib/libc/string/ffs.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ffs.c,v 1.8 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: ffs.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Public domain. | 4 | * Public domain. |
@@ -38,3 +38,4 @@ ffs(int mask) | |||
38 | 38 | ||
39 | return (bit + t[ r & 0xf ]); | 39 | return (bit + t[ r & 0xf ]); |
40 | } | 40 | } |
41 | DEF_WEAK(ffs); | ||
diff --git a/src/lib/libc/string/memccpy.c b/src/lib/libc/string/memccpy.c index 485c55fcab..635061b8cb 100644 --- a/src/lib/libc/string/memccpy.c +++ b/src/lib/libc/string/memccpy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memccpy.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: memccpy.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990, 1993 | 4 | * Copyright (c) 1990, 1993 |
@@ -46,3 +46,4 @@ memccpy(void *t, const void *f, int c, size_t n) | |||
46 | } | 46 | } |
47 | return (0); | 47 | return (0); |
48 | } | 48 | } |
49 | DEF_WEAK(memccpy); | ||
diff --git a/src/lib/libc/string/memchr.c b/src/lib/libc/string/memchr.c index 4573e3ceb1..a6a4bd60d0 100644 --- a/src/lib/libc/string/memchr.c +++ b/src/lib/libc/string/memchr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memchr.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: memchr.c,v 1.8 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -46,3 +46,4 @@ memchr(const void *s, int c, size_t n) | |||
46 | } | 46 | } |
47 | return (NULL); | 47 | return (NULL); |
48 | } | 48 | } |
49 | DEF_STRONG(memchr); | ||
diff --git a/src/lib/libc/string/memcmp.c b/src/lib/libc/string/memcmp.c index 49384a6fb9..0df2c54d2a 100644 --- a/src/lib/libc/string/memcmp.c +++ b/src/lib/libc/string/memcmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memcmp.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: memcmp.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -49,3 +49,4 @@ memcmp(const void *s1, const void *s2, size_t n) | |||
49 | } | 49 | } |
50 | return (0); | 50 | return (0); |
51 | } | 51 | } |
52 | DEF_STRONG(memcmp); | ||
diff --git a/src/lib/libc/string/memcpy.c b/src/lib/libc/string/memcpy.c index 1b9715e471..73136edd72 100644 --- a/src/lib/libc/string/memcpy.c +++ b/src/lib/libc/string/memcpy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memcpy.c,v 1.1 2014/11/30 19:43:56 deraadt Exp $ */ | 1 | /* $OpenBSD: memcpy.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -97,3 +97,4 @@ memcpy(void *dst0, const void *src0, size_t length) | |||
97 | done: | 97 | done: |
98 | return (dst0); | 98 | return (dst0); |
99 | } | 99 | } |
100 | DEF_STRONG(memcpy); | ||
diff --git a/src/lib/libc/string/memmem.c b/src/lib/libc/string/memmem.c index 5793a7dfd7..823443b08a 100644 --- a/src/lib/libc/string/memmem.c +++ b/src/lib/libc/string/memmem.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memmem.c,v 1.3 2013/05/30 01:10:45 ajacoutot Exp $ */ | 1 | /* $OpenBSD: memmem.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 2005 Pascal Gloor <pascal.gloor@spale.com> | 3 | * Copyright (c) 2005 Pascal Gloor <pascal.gloor@spale.com> |
4 | * | 4 | * |
@@ -61,3 +61,4 @@ memmem(const void *l, size_t l_len, const void *s, size_t s_len) | |||
61 | 61 | ||
62 | return NULL; | 62 | return NULL; |
63 | } | 63 | } |
64 | DEF_WEAK(memmem); | ||
diff --git a/src/lib/libc/string/memmove.c b/src/lib/libc/string/memmove.c index 1baad53544..2f1deb2c70 100644 --- a/src/lib/libc/string/memmove.c +++ b/src/lib/libc/string/memmove.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memmove.c,v 1.1 2014/11/30 19:43:56 deraadt Exp $ */ | 1 | /* $OpenBSD: memmove.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -110,3 +110,4 @@ memmove(void *dst0, const void *src0, size_t length) | |||
110 | done: | 110 | done: |
111 | return (dst0); | 111 | return (dst0); |
112 | } | 112 | } |
113 | DEF_STRONG(memmove); | ||
diff --git a/src/lib/libc/string/memrchr.c b/src/lib/libc/string/memrchr.c index bd27ebc620..26a33995b7 100644 --- a/src/lib/libc/string/memrchr.c +++ b/src/lib/libc/string/memrchr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memrchr.c,v 1.2 2007/11/27 16:22:12 martynas Exp $ */ | 1 | /* $OpenBSD: memrchr.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2007 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 2007 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -36,3 +36,4 @@ memrchr(const void *s, int c, size_t n) | |||
36 | } | 36 | } |
37 | return(NULL); | 37 | return(NULL); |
38 | } | 38 | } |
39 | DEF_WEAK(memrchr); | ||
diff --git a/src/lib/libc/string/memset.c b/src/lib/libc/string/memset.c index 61709c139d..242529ee0f 100644 --- a/src/lib/libc/string/memset.c +++ b/src/lib/libc/string/memset.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: memset.c,v 1.6 2008/03/15 21:40:39 ray Exp $ */ | 1 | /* $OpenBSD: memset.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -45,3 +45,4 @@ memset(void *dst, int c, size_t n) | |||
45 | } | 45 | } |
46 | return (dst); | 46 | return (dst); |
47 | } | 47 | } |
48 | DEF_STRONG(memset); | ||
diff --git a/src/lib/libc/string/stpncpy.c b/src/lib/libc/string/stpncpy.c index c7c2a57c4c..6bdee5de16 100644 --- a/src/lib/libc/string/stpncpy.c +++ b/src/lib/libc/string/stpncpy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: stpncpy.c,v 1.2 2012/07/11 10:44:59 naddy Exp $ */ | 1 | /* $OpenBSD: stpncpy.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990 The Regents of the University of California. | 4 | * Copyright (c) 1990 The Regents of the University of California. |
@@ -54,3 +54,4 @@ stpncpy(char *dst, const char *src, size_t n) | |||
54 | } | 54 | } |
55 | return (dst); | 55 | return (dst); |
56 | } | 56 | } |
57 | DEF_WEAK(stpncpy); | ||
diff --git a/src/lib/libc/string/strcasecmp.c b/src/lib/libc/string/strcasecmp.c index 2be09136c0..edbd638722 100644 --- a/src/lib/libc/string/strcasecmp.c +++ b/src/lib/libc/string/strcasecmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strcasecmp.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strcasecmp.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1987, 1993 | 4 | * Copyright (c) 1987, 1993 |
@@ -85,6 +85,7 @@ strcasecmp(const char *s1, const char *s2) | |||
85 | return (0); | 85 | return (0); |
86 | return (cm[*us1] - cm[*--us2]); | 86 | return (cm[*us1] - cm[*--us2]); |
87 | } | 87 | } |
88 | DEF_WEAK(strcasecmp); | ||
88 | 89 | ||
89 | int | 90 | int |
90 | strncasecmp(const char *s1, const char *s2, size_t n) | 91 | strncasecmp(const char *s1, const char *s2, size_t n) |
@@ -103,3 +104,4 @@ strncasecmp(const char *s1, const char *s2, size_t n) | |||
103 | } | 104 | } |
104 | return (0); | 105 | return (0); |
105 | } | 106 | } |
107 | DEF_WEAK(strncasecmp); | ||
diff --git a/src/lib/libc/string/strcasestr.c b/src/lib/libc/string/strcasestr.c index aa74c0176d..abb3e15549 100644 --- a/src/lib/libc/string/strcasestr.c +++ b/src/lib/libc/string/strcasestr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strcasestr.c,v 1.3 2006/03/31 05:34:55 deraadt Exp $ */ | 1 | /* $OpenBSD: strcasestr.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink Exp $ */ | 2 | /* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink Exp $ */ |
3 | 3 | ||
4 | /*- | 4 | /*- |
@@ -58,3 +58,4 @@ strcasestr(const char *s, const char *find) | |||
58 | } | 58 | } |
59 | return ((char *)s); | 59 | return ((char *)s); |
60 | } | 60 | } |
61 | DEF_WEAK(strcasestr); | ||
diff --git a/src/lib/libc/string/strchr.c b/src/lib/libc/string/strchr.c index 596e407c9b..b396b45b3b 100644 --- a/src/lib/libc/string/strchr.c +++ b/src/lib/libc/string/strchr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strchr.c,v 1.2 2015/05/15 22:29:37 millert Exp $ */ | 1 | /* $OpenBSD: strchr.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -43,3 +43,4 @@ strchr(const char *p, int ch) | |||
43 | } | 43 | } |
44 | /* NOTREACHED */ | 44 | /* NOTREACHED */ |
45 | } | 45 | } |
46 | DEF_STRONG(strchr); | ||
diff --git a/src/lib/libc/string/strcmp.c b/src/lib/libc/string/strcmp.c index d1b6c50d79..be175563d4 100644 --- a/src/lib/libc/string/strcmp.c +++ b/src/lib/libc/string/strcmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strcmp.c,v 1.8 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: strcmp.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990 The Regents of the University of California. | 4 | * Copyright (c) 1990 The Regents of the University of California. |
@@ -45,3 +45,4 @@ strcmp(const char *s1, const char *s2) | |||
45 | return (0); | 45 | return (0); |
46 | return (*(unsigned char *)s1 - *(unsigned char *)--s2); | 46 | return (*(unsigned char *)s1 - *(unsigned char *)--s2); |
47 | } | 47 | } |
48 | DEF_STRONG(strcmp); | ||
diff --git a/src/lib/libc/string/strcoll.c b/src/lib/libc/string/strcoll.c index 2df983bd65..47a6ea4f24 100644 --- a/src/lib/libc/string/strcoll.c +++ b/src/lib/libc/string/strcoll.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strcoll.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strcoll.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -42,3 +42,4 @@ strcoll(const char *s1, const char *s2) | |||
42 | /* LC_COLLATE is unimplemented, hence always "C" */ | 42 | /* LC_COLLATE is unimplemented, hence always "C" */ |
43 | return (strcmp(s1, s2)); | 43 | return (strcmp(s1, s2)); |
44 | } | 44 | } |
45 | DEF_STRONG(strcoll); | ||
diff --git a/src/lib/libc/string/strcspn.c b/src/lib/libc/string/strcspn.c index 1eb233614d..3c1f5a4cec 100644 --- a/src/lib/libc/string/strcspn.c +++ b/src/lib/libc/string/strcspn.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strcspn.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strcspn.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -56,3 +56,4 @@ strcspn(const char *s1, const char *s2) | |||
56 | } | 56 | } |
57 | /* NOTREACHED */ | 57 | /* NOTREACHED */ |
58 | } | 58 | } |
59 | DEF_STRONG(strcspn); | ||
diff --git a/src/lib/libc/string/strdup.c b/src/lib/libc/string/strdup.c index a6aa1e03b0..9aebf399c1 100644 --- a/src/lib/libc/string/strdup.c +++ b/src/lib/libc/string/strdup.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strdup.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strdup.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1988, 1993 | 4 | * Copyright (c) 1988, 1993 |
@@ -47,3 +47,4 @@ strdup(const char *str) | |||
47 | (void)memcpy(copy, str, siz); | 47 | (void)memcpy(copy, str, siz); |
48 | return(copy); | 48 | return(copy); |
49 | } | 49 | } |
50 | DEF_WEAK(strdup); | ||
diff --git a/src/lib/libc/string/strerror.c b/src/lib/libc/string/strerror.c index 13996f08e9..c6f05446fd 100644 --- a/src/lib/libc/string/strerror.c +++ b/src/lib/libc/string/strerror.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strerror.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strerror.c,v 1.8 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 1988 Regents of the University of California. | 3 | * Copyright (c) 1988 Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -39,3 +39,4 @@ strerror(int num) | |||
39 | (void)strerror_r(num, buf, sizeof(buf)); | 39 | (void)strerror_r(num, buf, sizeof(buf)); |
40 | return (buf); | 40 | return (buf); |
41 | } | 41 | } |
42 | DEF_STRONG(strerror); | ||
diff --git a/src/lib/libc/string/strerror_r.c b/src/lib/libc/string/strerror_r.c index b85136055b..90aa012360 100644 --- a/src/lib/libc/string/strerror_r.c +++ b/src/lib/libc/string/strerror_r.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strerror_r.c,v 1.8 2013/06/01 21:26:18 stsp Exp $ */ | 1 | /* $OpenBSD: strerror_r.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* Public Domain <marc@snafu.org> */ | 2 | /* Public Domain <marc@snafu.org> */ |
3 | 3 | ||
4 | #ifdef NLS | 4 | #ifdef NLS |
@@ -125,6 +125,7 @@ strerror_r(int errnum, char *strerrbuf, size_t buflen) | |||
125 | errno = ret_errno ? ret_errno : save_errno; | 125 | errno = ret_errno ? ret_errno : save_errno; |
126 | return (ret_errno); | 126 | return (ret_errno); |
127 | } | 127 | } |
128 | DEF_WEAK(strerror_r); | ||
128 | 129 | ||
129 | #define USIGPREFIX "Unknown signal: " | 130 | #define USIGPREFIX "Unknown signal: " |
130 | 131 | ||
diff --git a/src/lib/libc/string/strlcat.c b/src/lib/libc/string/strlcat.c index 14c53a1f69..073b0d4259 100644 --- a/src/lib/libc/string/strlcat.c +++ b/src/lib/libc/string/strlcat.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strlcat.c,v 1.15 2015/03/02 21:41:08 millert Exp $ */ | 1 | /* $OpenBSD: strlcat.c,v 1.16 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -53,3 +53,4 @@ strlcat(char *dst, const char *src, size_t dsize) | |||
53 | 53 | ||
54 | return(dlen + (src - osrc)); /* count does not include NUL */ | 54 | return(dlen + (src - osrc)); /* count does not include NUL */ |
55 | } | 55 | } |
56 | DEF_WEAK(strlcat); | ||
diff --git a/src/lib/libc/string/strlcpy.c b/src/lib/libc/string/strlcpy.c index e9a7fe4be7..5fcf084aaa 100644 --- a/src/lib/libc/string/strlcpy.c +++ b/src/lib/libc/string/strlcpy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strlcpy.c,v 1.12 2015/01/15 03:54:12 millert Exp $ */ | 1 | /* $OpenBSD: strlcpy.c,v 1.13 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -48,3 +48,4 @@ strlcpy(char *dst, const char *src, size_t dsize) | |||
48 | 48 | ||
49 | return(src - osrc - 1); /* count does not include NUL */ | 49 | return(src - osrc - 1); /* count does not include NUL */ |
50 | } | 50 | } |
51 | DEF_WEAK(strlcpy); | ||
diff --git a/src/lib/libc/string/strlen.c b/src/lib/libc/string/strlen.c index 7e0e27b1d8..a5721d3e7f 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.8 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: strlen.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990, 1993 | 4 | * Copyright (c) 1990, 1993 |
@@ -41,3 +41,4 @@ strlen(const char *str) | |||
41 | return (s - str); | 41 | return (s - str); |
42 | } | 42 | } |
43 | 43 | ||
44 | DEF_STRONG(strlen); | ||
diff --git a/src/lib/libc/string/strmode.c b/src/lib/libc/string/strmode.c index 6f0fa34ed8..609b8931fb 100644 --- a/src/lib/libc/string/strmode.c +++ b/src/lib/libc/string/strmode.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strmode.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strmode.c,v 1.8 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -138,3 +138,4 @@ strmode(int mode, char *p) | |||
138 | *p++ = ' '; /* will be a '+' if ACL's implemented */ | 138 | *p++ = ' '; /* will be a '+' if ACL's implemented */ |
139 | *p = '\0'; | 139 | *p = '\0'; |
140 | } | 140 | } |
141 | DEF_WEAK(strmode); | ||
diff --git a/src/lib/libc/string/strncat.c b/src/lib/libc/string/strncat.c index c4df4f2fad..b3388accf3 100644 --- a/src/lib/libc/string/strncat.c +++ b/src/lib/libc/string/strncat.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strncat.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strncat.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -55,3 +55,4 @@ strncat(char *dst, const char *src, size_t n) | |||
55 | } | 55 | } |
56 | return (dst); | 56 | return (dst); |
57 | } | 57 | } |
58 | DEF_STRONG(strncat); | ||
diff --git a/src/lib/libc/string/strncmp.c b/src/lib/libc/string/strncmp.c index 0a4ddc1d9e..535d2a60fd 100644 --- a/src/lib/libc/string/strncmp.c +++ b/src/lib/libc/string/strncmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strncmp.c,v 1.8 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: strncmp.c,v 1.9 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1989 The Regents of the University of California. | 4 | * Copyright (c) 1989 The Regents of the University of California. |
@@ -45,3 +45,4 @@ strncmp(const char *s1, const char *s2, size_t n) | |||
45 | } while (--n != 0); | 45 | } while (--n != 0); |
46 | return (0); | 46 | return (0); |
47 | } | 47 | } |
48 | DEF_STRONG(strncmp); | ||
diff --git a/src/lib/libc/string/strncpy.c b/src/lib/libc/string/strncpy.c index 5003a199a9..d6d8647fc7 100644 --- a/src/lib/libc/string/strncpy.c +++ b/src/lib/libc/string/strncpy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strncpy.c,v 1.7 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: strncpy.c,v 1.8 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990 The Regents of the University of California. | 4 | * Copyright (c) 1990 The Regents of the University of California. |
@@ -56,3 +56,4 @@ strncpy(char *dst, const char *src, size_t n) | |||
56 | } | 56 | } |
57 | return (dst); | 57 | return (dst); |
58 | } | 58 | } |
59 | DEF_STRONG(strncpy); | ||
diff --git a/src/lib/libc/string/strndup.c b/src/lib/libc/string/strndup.c index 27701ac555..a6e5bff7ca 100644 --- a/src/lib/libc/string/strndup.c +++ b/src/lib/libc/string/strndup.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strndup.c,v 1.1 2010/05/18 22:24:55 tedu Exp $ */ | 1 | /* $OpenBSD: strndup.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -37,3 +37,4 @@ strndup(const char *str, size_t maxlen) | |||
37 | 37 | ||
38 | return copy; | 38 | return copy; |
39 | } | 39 | } |
40 | DEF_WEAK(strndup); | ||
diff --git a/src/lib/libc/string/strnlen.c b/src/lib/libc/string/strnlen.c index 872cfa6cce..26e9743f18 100644 --- a/src/lib/libc/string/strnlen.c +++ b/src/lib/libc/string/strnlen.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strnlen.c,v 1.5 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: strnlen.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -30,3 +30,4 @@ strnlen(const char *str, size_t maxlen) | |||
30 | 30 | ||
31 | return (size_t)(cp - str); | 31 | return (size_t)(cp - str); |
32 | } | 32 | } |
33 | DEF_WEAK(strnlen); | ||
diff --git a/src/lib/libc/string/strpbrk.c b/src/lib/libc/string/strpbrk.c index cd3b71c0d3..336c22dedd 100644 --- a/src/lib/libc/string/strpbrk.c +++ b/src/lib/libc/string/strpbrk.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strpbrk.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strpbrk.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 1985 Regents of the University of California. | 3 | * Copyright (c) 1985 Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -46,3 +46,4 @@ strpbrk(const char *s1, const char *s2) | |||
46 | } | 46 | } |
47 | return (NULL); | 47 | return (NULL); |
48 | } | 48 | } |
49 | DEF_STRONG(strpbrk); | ||
diff --git a/src/lib/libc/string/strrchr.c b/src/lib/libc/string/strrchr.c index 181f56ea69..9375572144 100644 --- a/src/lib/libc/string/strrchr.c +++ b/src/lib/libc/string/strrchr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strrchr.c,v 1.2 2015/05/15 22:29:37 millert Exp $ */ | 1 | /* $OpenBSD: strrchr.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 1988 Regents of the University of California. | 3 | * Copyright (c) 1988 Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -45,3 +45,4 @@ strrchr(const char *p, int ch) | |||
45 | } | 45 | } |
46 | /* NOTREACHED */ | 46 | /* NOTREACHED */ |
47 | } | 47 | } |
48 | DEF_STRONG(strrchr); | ||
diff --git a/src/lib/libc/string/strsep.c b/src/lib/libc/string/strsep.c index 2ffc4b4c46..97c3cbf1f5 100644 --- a/src/lib/libc/string/strsep.c +++ b/src/lib/libc/string/strsep.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strsep.c,v 1.7 2014/02/05 20:42:32 stsp Exp $ */ | 1 | /* $OpenBSD: strsep.c,v 1.8 2015/08/31 02:53:57 guenther Exp $ */ |
2 | 2 | ||
3 | /*- | 3 | /*- |
4 | * Copyright (c) 1990, 1993 | 4 | * Copyright (c) 1990, 1993 |
@@ -68,3 +68,4 @@ strsep(char **stringp, const char *delim) | |||
68 | } | 68 | } |
69 | /* NOTREACHED */ | 69 | /* NOTREACHED */ |
70 | } | 70 | } |
71 | DEF_WEAK(strsep); | ||
diff --git a/src/lib/libc/string/strsignal.c b/src/lib/libc/string/strsignal.c index aa541cefed..a71a291fbc 100644 --- a/src/lib/libc/string/strsignal.c +++ b/src/lib/libc/string/strsignal.c | |||
@@ -39,3 +39,4 @@ strsignal(int sig) | |||
39 | 39 | ||
40 | return __strsignal(sig, buf); | 40 | return __strsignal(sig, buf); |
41 | } | 41 | } |
42 | DEF_WEAK(strsignal); | ||
diff --git a/src/lib/libc/string/strspn.c b/src/lib/libc/string/strspn.c index 385649c041..0ce41cbb49 100644 --- a/src/lib/libc/string/strspn.c +++ b/src/lib/libc/string/strspn.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strspn.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strspn.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 1989 The Regents of the University of California. | 3 | * Copyright (c) 1989 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -49,3 +49,4 @@ cont: | |||
49 | goto cont; | 49 | goto cont; |
50 | return (p - 1 - s1); | 50 | return (p - 1 - s1); |
51 | } | 51 | } |
52 | DEF_STRONG(strspn); | ||
diff --git a/src/lib/libc/string/strstr.c b/src/lib/libc/string/strstr.c index 95a865bf79..ccd0871700 100644 --- a/src/lib/libc/string/strstr.c +++ b/src/lib/libc/string/strstr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strstr.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strstr.c,v 1.6 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -54,3 +54,4 @@ strstr(const char *s, const char *find) | |||
54 | } | 54 | } |
55 | return ((char *)s); | 55 | return ((char *)s); |
56 | } | 56 | } |
57 | DEF_STRONG(strstr); | ||
diff --git a/src/lib/libc/string/strtok.c b/src/lib/libc/string/strtok.c index 6ba6b21cd6..c5765756fc 100644 --- a/src/lib/libc/string/strtok.c +++ b/src/lib/libc/string/strtok.c | |||
@@ -36,6 +36,7 @@ strtok(char *s, const char *delim) | |||
36 | 36 | ||
37 | return strtok_r(s, delim, &last); | 37 | return strtok_r(s, delim, &last); |
38 | } | 38 | } |
39 | DEF_STRONG(strtok); | ||
39 | 40 | ||
40 | char * | 41 | char * |
41 | strtok_r(char *s, const char *delim, char **last) | 42 | strtok_r(char *s, const char *delim, char **last) |
@@ -83,3 +84,4 @@ cont: | |||
83 | } | 84 | } |
84 | /* NOTREACHED */ | 85 | /* NOTREACHED */ |
85 | } | 86 | } |
87 | DEF_WEAK(strtok_r); | ||
diff --git a/src/lib/libc/string/strxfrm.c b/src/lib/libc/string/strxfrm.c index 6f289c901e..97df097b29 100644 --- a/src/lib/libc/string/strxfrm.c +++ b/src/lib/libc/string/strxfrm.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: strxfrm.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */ | 1 | /* $OpenBSD: strxfrm.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /*- | 2 | /*- |
3 | * Copyright (c) 1990 The Regents of the University of California. | 3 | * Copyright (c) 1990 The Regents of the University of California. |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -49,3 +49,4 @@ strxfrm(char *dst, const char *src, size_t n) | |||
49 | return (strlen(src)); | 49 | return (strlen(src)); |
50 | return (strlcpy(dst, src, n)); | 50 | return (strlcpy(dst, src, n)); |
51 | } | 51 | } |
52 | DEF_STRONG(strxfrm); | ||
diff --git a/src/lib/libc/string/timingsafe_bcmp.c b/src/lib/libc/string/timingsafe_bcmp.c index 0b736154ca..0409ec3244 100644 --- a/src/lib/libc/string/timingsafe_bcmp.c +++ b/src/lib/libc/string/timingsafe_bcmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: timingsafe_bcmp.c,v 1.2 2014/06/10 04:17:37 deraadt Exp $ */ | 1 | /* $OpenBSD: timingsafe_bcmp.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 3 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
4 | * | 4 | * |
@@ -27,3 +27,4 @@ timingsafe_bcmp(const void *b1, const void *b2, size_t n) | |||
27 | ret |= *p1++ ^ *p2++; | 27 | ret |= *p1++ ^ *p2++; |
28 | return (ret != 0); | 28 | return (ret != 0); |
29 | } | 29 | } |
30 | DEF_WEAK(timingsafe_bcmp); | ||
diff --git a/src/lib/libc/string/timingsafe_memcmp.c b/src/lib/libc/string/timingsafe_memcmp.c index 04e2ac5e20..373f8cb197 100644 --- a/src/lib/libc/string/timingsafe_memcmp.c +++ b/src/lib/libc/string/timingsafe_memcmp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: timingsafe_memcmp.c,v 1.1 2014/06/13 02:12:17 matthew Exp $ */ | 1 | /* $OpenBSD: timingsafe_memcmp.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Google Inc. | 3 | * Copyright (c) 2014 Google Inc. |
4 | * | 4 | * |
@@ -44,3 +44,4 @@ timingsafe_memcmp(const void *b1, const void *b2, size_t len) | |||
44 | 44 | ||
45 | return (res); | 45 | return (res); |
46 | } | 46 | } |
47 | DEF_WEAK(timingsafe_memcmp); | ||