clang doesn't propagate attributes like "asm labels" and "visibility(hidden)"
authorguenther <guenther@openbsd.org>
Wed, 29 Nov 2017 05:13:57 +0000 (05:13 +0000)
committerguenther <guenther@openbsd.org>
Wed, 29 Nov 2017 05:13:57 +0000 (05:13 +0000)
to builtins like mem{set,cpy,move} and __stack_smash_handler.  So, when
building with clang, instead mark those as protected visibility to get rid
of the PLT relocations.  We can't take the address of them then, but that's
ok: it's a build-time error not a run-time error.

ok kettenis@

31 files changed:
lib/libc/arch/amd64/DEFS.h
lib/libc/arch/amd64/string/memmove.S
lib/libc/arch/amd64/string/memset.S
lib/libc/arch/arm/DEFS.h
lib/libc/arch/arm/string/memcpy.S
lib/libc/arch/arm/string/memmove.S
lib/libc/arch/arm/string/memset.S
lib/libc/arch/i386/DEFS.h
lib/libc/arch/i386/SYS.h
lib/libc/arch/i386/gen/flt_rounds.S
lib/libc/arch/i386/stdlib/abs.S
lib/libc/arch/i386/stdlib/div.S
lib/libc/arch/i386/stdlib/labs.S
lib/libc/arch/i386/stdlib/ldiv.S
lib/libc/arch/i386/string/bcmp.S
lib/libc/arch/i386/string/bzero.S
lib/libc/arch/i386/string/ffs.S
lib/libc/arch/i386/string/memchr.S
lib/libc/arch/i386/string/memcmp.S
lib/libc/arch/i386/string/memmove.S
lib/libc/arch/i386/string/memset.S
lib/libc/arch/i386/string/strchr.S
lib/libc/arch/i386/string/strcmp.S
lib/libc/arch/i386/string/strncmp.S
lib/libc/arch/i386/string/strrchr.S
lib/libc/hidden/string.h
lib/libc/include/namespace.h
lib/libc/string/memcpy.c
lib/libc/string/memmove.c
lib/libc/string/memset.c
lib/libc/sys/stack_protector.c

index 9a2daa3..8e39fc5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: DEFS.h,v 1.1 2015/11/14 21:53:03 guenther Exp $       */
+/*     $OpenBSD: DEFS.h,v 1.2 2017/11/29 05:13:57 guenther Exp $       */
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * For functions implemented in ASM that aren't syscalls.
  *   END_STRONG(x)     Like DEF_STRONG() in C; for standard/reserved C names
  *   END_WEAK(x)       Like DEF_WEAK() in C; for non-ISO C names
+ *   END_BUILTIN(x)    If compiling with clang, then just END() and
+ *                     mark it .protected, else be like END_STRONG();
+ *                     for clang builtins like memcpy
  */
 #define        END_STRONG(x)   END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x))
 #define        END_WEAK(x)     END_STRONG(x); .weak x
 
+#ifdef __clang__
+#define        END_BUILTIN(x)  END(x); .protected x
+#else
+#define        END_BUILTIN(x)  END_STRONG(x)
+#endif
index f0e0165..da244c3 100644 (file)
@@ -51,12 +51,14 @@ ENTRY(memmove)
        subq    %rsi,%rax
        cmpq    %rcx,%rax       /* overlapping? */
        jb      1f
+#ifdef memcpy_in_asm
        jmp     2f              /* nope */
 
-// ENTRY(memcpy)
+ENTRY(memcpy)
        movq    %rdi,%r11       /* save dest */
        movq    %rdx,%rcx
 2:
+#endif
        cld                     /* copy forwards. */
        shrq    $3,%rcx         /* copy by words */
        rep
@@ -85,6 +87,8 @@ ENTRY(memmove)
        movq    %r11,%rax
        cld
        ret
-// END(memcpy)
-END_STRONG(memmove)
+#ifdef memcpy_in_asm
+END_BUILTIN(memcpy)
+#endif
+END_BUILTIN(memmove)
 END_WEAK(bcopy)
index b3f4ffa..2a8645c 100644 (file)
@@ -53,4 +53,4 @@ L1:   rep
        movq    %r11,%rax
 
        ret
-END_STRONG(memset)
+END_BUILTIN(memset)
index 828c9cd..4220bdf 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: DEFS.h,v 1.1 2016/08/06 19:16:09 guenther Exp $       */
+/*     $OpenBSD: DEFS.h,v 1.2 2017/11/29 05:13:57 guenther Exp $       */
 /*
  * Copyright (c) 2016 Philip Guenther <guenther@openbsd.org>
  *
  * For functions implemented in ASM that aren't syscalls.
  *   END_STRONG(x)     Like DEF_STRONG() in C; for standard/reserved C names
  *   END_WEAK(x)       Like DEF_WEAK() in C; for non-ISO C names
+ *   END_BUILTIN(x)    If compiling with clang, then just END() and
+ *                     mark it .protected, else be like END_STRONG();
+ *                     for clang builtins like memcpy
  */
 #define        END_STRONG(x)   END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x))
 #define        END_WEAK(x)     END_STRONG(x); .weak x
+#ifdef __clang__
+#define        END_BUILTIN(x)  END(x); .protected x
+#else
+#define        END_BUILTIN(x)  END_STRONG(x)
+#endif
index d1f5579..aba898b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memcpy.S,v 1.7 2017/10/29 02:21:33 guenther Exp $     */
+/*     $OpenBSD: memcpy.S,v 1.8 2017/11/29 05:13:57 guenther Exp $     */
 /*     $NetBSD: memcpy.S,v 1.3 2003/04/05 23:08:52 bjh21 Exp $ */
 
 /*-
@@ -42,4 +42,4 @@ ENTRY(memcpy)
        stmfd   sp!, {r0, lr}
        bl      _memcpy
        ldmfd   sp!, {r0, pc}
-END_STRONG(memcpy)
+END_BUILTIN(memcpy)
index 95eca35..1dfd410 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memmove.S,v 1.6 2017/10/29 02:21:33 guenther Exp $    */
+/*     $OpenBSD: memmove.S,v 1.7 2017/11/29 05:13:57 guenther Exp $    */
 /*     $NetBSD: memmove.S,v 1.3 2003/04/05 23:08:52 bjh21 Exp $        */
 
 /*-
@@ -36,4 +36,4 @@ ENTRY(memmove)
        stmfd   sp!, {r0, lr}
        bl      _memcpy
        ldmfd   sp!, {r0, pc}
-END_STRONG(memmove)
+END_BUILTIN(memmove)
index 573e924..91511f1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memset.S,v 1.5 2016/08/06 19:16:09 guenther Exp $     */
+/*     $OpenBSD: memset.S,v 1.6 2017/11/29 05:13:57 guenther Exp $     */
 /*     $NetBSD: memset.S,v 1.3 2003/04/05 23:08:52 bjh21 Exp $ */
 
 /*
@@ -127,4 +127,4 @@ ENTRY(memset)
 
        ldmfd   sp!, {r0}
        mov     pc, lr                  /* Exit */
-END_STRONG(memset)
+END_BUILTIN(memset)
index 0516133..db2d969 100644 (file)
@@ -1,3 +1,49 @@
-/*     $OpenBSD: DEFS.h,v 1.2 1996/08/19 08:12:09 tholo Exp $ */
+/*     $OpenBSD: DEFS.h,v 1.3 2017/11/29 05:13:57 guenther Exp $ */
+/*
+ * Copyright (c) 2017 Philip Guenther <guenther@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
 
 #include <machine/asm.h>
+
+/*
+ * We define a hidden alias with the prefix "_libc_" for each global symbol
+ * that may be used internally.  By referencing _libc_x instead of x, other
+ * parts of libc prevent overriding by the application and avoid unnecessary
+ * relocations.
+ */
+#define _HIDDEN(x)             _libc_##x
+#define _HIDDEN_ALIAS(x,y)                     \
+       STRONG_ALIAS(_HIDDEN(x),y);             \
+       .hidden _HIDDEN(x)
+#define _HIDDEN_FALIAS(x,y)                    \
+       _HIDDEN_ALIAS(x,y);                     \
+       .type _HIDDEN(x),@function
+
+/*
+ * For functions implemented in ASM that aren't syscalls.
+ *   END_STRONG(x)     Like DEF_STRONG() in C; for standard/reserved C names
+ *   END_WEAK(x)       Like DEF_WEAK() in C; for non-ISO C names
+ *   END_BUILTIN(x)    If compiling with clang, then just END() and
+ *                     mark it .protected, else be like END_STRONG();
+ *                     for clang builtins like memcpy
+ */
+#define        END_STRONG(x)   END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x))
+#define        END_WEAK(x)     END_STRONG(x); .weak x
+
+#ifdef __clang__
+#define        END_BUILTIN(x)  END(x); .protected x
+#else
+#define        END_BUILTIN(x)  END_STRONG(x)
+#endif
index 3ecba98..993ad31 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     $OpenBSD: SYS.h,v 1.26 2017/06/01 12:14:48 naddy Exp $
+ *     $OpenBSD: SYS.h,v 1.27 2017/11/29 05:13:57 guenther Exp $
  */
 
-#include <machine/asm.h>
+#include "DEFS.h"
 #include <sys/syscall.h>
 
 #define TCB_OFFSET_ERRNO       16
 
-/*
- * We define a hidden alias with the prefix "_libc_" for each global symbol
- * that may be used internally.  By referencing _libc_x instead of x, other
- * parts of libc prevent overriding by the application and avoid unnecessary
- * relocations.
- */
-#define _HIDDEN(x)             _libc_##x
-#define _HIDDEN_ALIAS(x,y)                     \
-       STRONG_ALIAS(_HIDDEN(x),y);             \
-       .hidden _HIDDEN(x)
-#define _HIDDEN_FALIAS(x,y)                    \
-       _HIDDEN_ALIAS(x,y);                     \
-       .type _HIDDEN(x),@function
-
-/*
- * For functions implemented in ASM that aren't syscalls.
- *   END_STRONG(x)     Like DEF_STRONG() in C; for standard/reserved C names
- *   END_WEAK(x)       Like DEF_WEAK() in C; for non-ISO C names
- */
-#define        END_STRONG(x)   END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x))
-#define        END_WEAK(x)     END_STRONG(x); .weak x
-
-
 /*
  * Design note:
  *
index a46fe91..7cba4a3 100644 (file)
@@ -1,10 +1,10 @@
-/* $OpenBSD: flt_rounds.S,v 1.6 2017/08/19 18:23:00 deraadt Exp $ */
+/* $OpenBSD: flt_rounds.S,v 1.7 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin, Apr 4, 1995
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
        .section .rodata
        .align 2
index 5403c64..235ce5d 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(abs)
        movl    4(%esp),%eax
index 6c05fc3..5227bfe 100644 (file)
@@ -3,7 +3,7 @@
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(div)
        movl    4(%esp),%eax
index 980ecf3..d7e5928 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(labs)
        movl    4(%esp),%eax
index 48db160..3c2e847 100644 (file)
@@ -3,7 +3,7 @@
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(ldiv)
        movl    4(%esp),%eax
index b55c93a..6a9772e 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: bcmp.S,v 1.4 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: bcmp.S,v 1.5 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(bcmp)
        pushl   %edi
index 43251b5..75cbf72 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: bzero.S,v 1.5 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: bzero.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(bzero)
        pushl   %edi
index 7befc0b..b02405e 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: ffs.S,v 1.5 2017/08/19 18:25:50 deraadt Exp $ */
+/*     $OpenBSD: ffs.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(ffs)
        bsfl    4(%esp),%eax
index b3d773b..660f037 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: memchr.S,v 1.5 2017/08/19 18:25:50 deraadt Exp $ */
+/*     $OpenBSD: memchr.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(memchr)
        pushl   %edi
index 171af07..a5f2c36 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: memcmp.S,v 1.5 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: memcmp.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(memcmp)
        pushl   %edi
index afa465a..8d124ad 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memmove.S,v 1.6 2015/08/31 02:53:56 guenther Exp $    */
+/*     $OpenBSD: memmove.S,v 1.7 2017/11/29 05:13:57 guenther Exp $    */
 
 /*-
  * Copyright (c) 1993, 1994, 1995 Charles M. Hannum.  All rights reserved.
@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 /*
  * Emulate bcopy() by swapping the first two arguments, and jumping
@@ -61,17 +61,20 @@ docopy:
        subl    %esi,%eax
        cmpl    %ecx,%eax               # overlapping?
        jb      1f
+#ifdef memcpy_in_asm
        jmp     docopyf                 # nope
+
 /*
  * memcpy() doesn't worry about overlap and always copies forward
  */
-// ENTRY(memcpy)
+ENTRY(memcpy)
        pushl   %esi
        pushl   %edi
        movl    12(%esp),%edi
        movl    16(%esp),%esi
        movl    20(%esp),%ecx
 docopyf:
+#endif
        movl    %edi,%eax               # setup return value for memcpy/memmove
        shrl    $2,%ecx                 # copy by 32-bit words
        rep
@@ -104,5 +107,8 @@ docopyf:
        popl    %esi
        cld
        ret
-END_STRONG(memmove)
+#ifdef memcpy_in_asm
+END_BUILTIN(memcpy)
+#endif
+END_BUILTIN(memmove)
 END_WEAK(bcopy)
index 0eb4381..5103b61 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: memset.S,v 1.5 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: memset.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 ENTRY(memset)
        pushl   %edi
@@ -53,4 +53,4 @@ L1:   rep
        popl    %ebx
        popl    %edi
        ret
-END_STRONG(memset)
+END_BUILTIN(memset)
index 3792d22..a73f623 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: strchr.S,v 1.7 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: strchr.S,v 1.8 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 WEAK_ALIAS(index, strchr)
 
index 3732324..3bb042b 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: strcmp.S,v 1.4 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: strcmp.S,v 1.5 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 /*
  * NOTE: I've unrolled the loop eight times: large enough to make a
index bbe3f21..0d34a44 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: strncmp.S,v 1.5 2017/08/19 18:25:50 deraadt Exp $ */
+/*     $OpenBSD: strncmp.S,v 1.6 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 /*
  * NOTE: I've unrolled the loop eight times: large enough to make a
index e1f5cc2..24ce661 100644 (file)
@@ -1,10 +1,10 @@
-/*     $OpenBSD: strrchr.S,v 1.7 2015/08/31 02:53:56 guenther Exp $ */
+/*     $OpenBSD: strrchr.S,v 1.8 2017/11/29 05:13:57 guenther Exp $ */
 /*
  * Written by J.T. Conklin <jtc@netbsd.org>.
  * Public domain.
  */
 
-#include "SYS.h"
+#include "DEFS.h"
 
 WEAK_ALIAS(rindex, strrchr)
 
index 0b9554a..a81cb0b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: string.h,v 1.4 2017/09/05 03:16:13 schwarze Exp $     */
+/*     $OpenBSD: string.h,v 1.5 2017/11/29 05:13:57 guenther Exp $     */
 /*
  * Copyright (c) 2015 Philip Guenther <guenther@openbsd.org>
  *
@@ -33,11 +33,11 @@ PROTO_DEPRECATED(index);
 PROTO_NORMAL(memccpy);
 PROTO_NORMAL(memchr);
 PROTO_NORMAL(memcmp);
-PROTO_NORMAL(memcpy);
+/*PROTO_NORMAL(memcpy);                        use declaration from namespace.h */
 PROTO_NORMAL(memmem);
-PROTO_NORMAL(memmove);
+/*PROTO_NORMAL(memmove);               use declaration from namespace.h */
 PROTO_NORMAL(memrchr);
-PROTO_NORMAL(memset);
+/*PROTO_NORMAL(memset);                        use declaration from namespace.h */
 PROTO_DEPRECATED(rindex);
 PROTO_DEPRECATED(stpcpy);
 PROTO_NORMAL(stpncpy);
index 980c1a8..73b845e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: namespace.h,v 1.10 2016/05/07 19:05:22 guenther Exp $ */
+/*     $OpenBSD: namespace.h,v 1.11 2017/11/29 05:13:57 guenther Exp $ */
 
 #ifndef _LIBC_NAMESPACE_H_
 #define _LIBC_NAMESPACE_H_
 #define        DEF_CANCEL(x)           __weak_alias(x, CANCEL(x))
 #define        DEF_WRAP(x)             __weak_alias(x, WRAP(x))
 #define        DEF_SYS(x)              __strong_alias(_thread_sys_##x, HIDDEN(x))
+#ifdef __clang__
+#define        DEF_BUILTIN(x)          __asm("")
+#define        BUILTIN                 __attribute__((__visibility__("protected")))
+#else
+#define        DEF_BUILTIN(x)          DEF_STRONG(x)
+#define        BUILTIN
+#endif
 
 #define        MAKE_CLONE(dst, src)    __dso_hidden typeof(dst) HIDDEN(dst) \
                                __attribute__((alias (HIDDEN_STRING(src))))
 
 
 /*
- * gcc will generate calls to the functions below.
+ * gcc and clang will generate calls to the functions below.
  * Declare and redirect them here so we always go
  * directly to our hidden aliases.
  */
 #include <sys/_types.h>
-void   *memcpy(void *__restrict, const void *__restrict, __size_t);
-void   *memset(void *, int, __size_t);
-void   __stack_smash_handler(const char [], int __attribute__((__unused__)));
+BUILTIN void   *memmove(void *, const void *, __size_t);
+BUILTIN void   *memcpy(void *__restrict, const void *__restrict, __size_t);
+BUILTIN void   *memset(void *, int, __size_t);
+BUILTIN void   __stack_smash_handler(const char [], int __unused);
+#ifndef __clang__
+PROTO_NORMAL(memmove);
 PROTO_NORMAL(memcpy);
 PROTO_NORMAL(memset);
 PROTO_NORMAL(__stack_smash_handler);
+#endif
+#undef BUILTIN
 
 #endif  /* _LIBC_NAMESPACE_H_ */
 
index a2516ed..19fddc0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memcpy.c,v 1.3 2017/08/14 17:10:02 guenther Exp $ */
+/*     $OpenBSD: memcpy.c,v 1.4 2017/11/29 05:13:57 guenther Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -106,4 +106,4 @@ memcpy(void *dst0, const void *src0, size_t length)
 done:
        return (dst0);
 }
-DEF_STRONG(memcpy);
+DEF_BUILTIN(memcpy);
index 2f1deb2..1cd1086 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memmove.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */
+/*     $OpenBSD: memmove.c,v 1.3 2017/11/29 05:13:57 guenther Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -110,4 +110,4 @@ memmove(void *dst0, const void *src0, size_t length)
 done:
        return (dst0);
 }
-DEF_STRONG(memmove);
+DEF_BUILTIN(memmove);
index 242529e..0c261f0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: memset.c,v 1.7 2015/08/31 02:53:57 guenther Exp $ */
+/*     $OpenBSD: memset.c,v 1.8 2017/11/29 05:13:57 guenther Exp $ */
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
  * All rights reserved.
@@ -45,4 +45,4 @@ memset(void *dst, int c, size_t n)
        }
        return (dst);
 }
-DEF_STRONG(memset);
+DEF_BUILTIN(memset);
index 116aecd..d9ecb2c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: stack_protector.c,v 1.23 2016/03/21 22:41:28 bluhm Exp $      */
+/*     $OpenBSD: stack_protector.c,v 1.24 2017/11/29 05:13:57 guenther Exp $   */
 
 /*
  * Copyright (c) 2002 Hiroaki Etoh, Federico G. Schwindt, and Miodrag Vallat.
@@ -80,4 +80,4 @@ __stack_smash_handler(const char func[], int damaged)
 
        _exit(127);
 }
-DEF_STRONG(__stack_smash_handler);
+DEF_BUILTIN(__stack_smash_handler);