Module Name:    src
Committed By:   tls
Date:           Sun Aug 10 06:47:06 UTC 2014

Modified Files:
        src/common/lib/libc/arch/arm/atomic [tls-earlyentropy]: Makefile.inc
            atomic_add_16.S atomic_add_32.S atomic_add_8.S atomic_and_16.S
            atomic_and_32.S atomic_and_8.S atomic_or_16.S atomic_or_32.S
            atomic_or_8.S atomic_swap.S atomic_swap_16.S atomic_swap_64.S
            atomic_xor_16.S atomic_xor_32.S atomic_xor_8.S
            sync_fetch_and_add_8.S sync_fetch_and_and_8.S sync_fetch_and_or_8.S
            sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S
        src/common/lib/libc/arch/arm/quad [tls-earlyentropy]: __aeabi_ldivmod.S
            __aeabi_uldivmod.S
        src/common/lib/libc/arch/arm/string [tls-earlyentropy]: strcat_arm.S
            strlcat_arm.S strlen_arm.S
        src/common/lib/libc/arch/i386/atomic [tls-earlyentropy]: atomic.S
        src/common/lib/libc/arch/i386/gen [tls-earlyentropy]: byte_swap_2.S
            byte_swap_4.S
        src/common/lib/libc/arch/i386/string [tls-earlyentropy]: memset.S
        src/common/lib/libc/arch/i386/string/small [tls-earlyentropy]: memcpy.S
        src/common/lib/libc/arch/m68k/atomic [tls-earlyentropy]: atomic_add.S
            atomic_and.S atomic_or.S atomic_sub.S atomic_swap.S atomic_xor.S
        src/common/lib/libc/arch/x86_64/atomic [tls-earlyentropy]: atomic.S
        src/common/lib/libc/arch/x86_64/gen [tls-earlyentropy]: byte_swap_2.S
            byte_swap_4.S byte_swap_8.S
        src/common/lib/libc/arch/x86_64/string [tls-earlyentropy]: memset.S
        src/common/lib/libc/atomic [tls-earlyentropy]: atomic_add_16_cas.c
            atomic_add_32_cas.c atomic_add_64_cas.c atomic_add_8_cas.c
            atomic_and_16_cas.c atomic_and_32_cas.c atomic_and_64_cas.c
            atomic_and_8_cas.c atomic_or_16_cas.c atomic_or_32_cas.c
            atomic_or_64_cas.c atomic_or_8_cas.c atomic_sub_16_cas.c
            atomic_sub_32_cas.c atomic_sub_64_cas.c atomic_sub_8_cas.c
            atomic_swap_16_cas.c atomic_swap_32_cas.c atomic_swap_64_cas.c
            atomic_swap_8_cas.c atomic_xor_16_cas.c atomic_xor_32_cas.c
            atomic_xor_64_cas.c atomic_xor_8_cas.c
        src/common/lib/libc/stdlib [tls-earlyentropy]: random.c
        src/common/lib/libc/string [tls-earlyentropy]: bcopy.c
            consttime_memequal.c explicit_memset.c
        src/common/lib/libutil [tls-earlyentropy]: snprintb.c
        src/common/lib/libx86emu [tls-earlyentropy]: x86emu.c
Added Files:
        src/common/lib/libc/atomic [tls-earlyentropy]: atomic_load.c
            atomic_store.c
        src/common/lib/libc/string [tls-earlyentropy]: strcspn.c strpbrk.c
            strspn.c

Log Message:
Rebase.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.22.2.1 \
    src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.2 -r1.2.2.1 \
    src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
    src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
    src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
    src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
    src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
    src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
    src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
    src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
    src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
    src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \
    src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \
    src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \
    src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S \
    src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S \
    src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S
cvs rdiff -u -r1.7 -r1.7.2.1 \
    src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
    src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
    src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.10 -r1.10.2.1 \
    src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.8 -r1.8.2.1 \
    src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.12 -r1.12.2.1 \
    src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S
cvs rdiff -u -r1.8 -r1.8.2.1 \
    src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S
cvs rdiff -u -r1.5 -r1.5.2.1 src/common/lib/libc/arch/arm/string/strcat_arm.S \
    src/common/lib/libc/arch/arm/string/strlcat_arm.S
cvs rdiff -u -r1.8 -r1.8.2.1 src/common/lib/libc/arch/arm/string/strlen_arm.S
cvs rdiff -u -r1.20 -r1.20.2.1 src/common/lib/libc/arch/i386/atomic/atomic.S
cvs rdiff -u -r1.3 -r1.3.48.1 src/common/lib/libc/arch/i386/gen/byte_swap_2.S \
    src/common/lib/libc/arch/i386/gen/byte_swap_4.S
cvs rdiff -u -r1.4 -r1.4.40.1 src/common/lib/libc/arch/i386/string/memset.S
cvs rdiff -u -r1.1 -r1.1.20.1 \
    src/common/lib/libc/arch/i386/string/small/memcpy.S
cvs rdiff -u -r1.9 -r1.9.2.1 \
    src/common/lib/libc/arch/m68k/atomic/atomic_add.S
cvs rdiff -u -r1.10 -r1.10.2.1 \
    src/common/lib/libc/arch/m68k/atomic/atomic_and.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_or.S
cvs rdiff -u -r1.2 -r1.2.2.1 \
    src/common/lib/libc/arch/m68k/atomic/atomic_sub.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_xor.S
cvs rdiff -u -r1.8 -r1.8.2.1 \
    src/common/lib/libc/arch/m68k/atomic/atomic_swap.S
cvs rdiff -u -r1.16 -r1.16.24.1 \
    src/common/lib/libc/arch/x86_64/atomic/atomic.S
cvs rdiff -u -r1.2 -r1.2.70.1 \
    src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S \
    src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S
cvs rdiff -u -r1.1 -r1.1.24.1 \
    src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S
cvs rdiff -u -r1.3 -r1.3.24.1 src/common/lib/libc/arch/x86_64/string/memset.S
cvs rdiff -u -r1.2 -r1.2.2.1 src/common/lib/libc/atomic/atomic_add_16_cas.c \
    src/common/lib/libc/atomic/atomic_add_8_cas.c \
    src/common/lib/libc/atomic/atomic_and_16_cas.c \
    src/common/lib/libc/atomic/atomic_and_8_cas.c \
    src/common/lib/libc/atomic/atomic_or_16_cas.c \
    src/common/lib/libc/atomic/atomic_or_8_cas.c \
    src/common/lib/libc/atomic/atomic_sub_16_cas.c \
    src/common/lib/libc/atomic/atomic_sub_64_cas.c \
    src/common/lib/libc/atomic/atomic_sub_8_cas.c \
    src/common/lib/libc/atomic/atomic_swap_16_cas.c \
    src/common/lib/libc/atomic/atomic_swap_8_cas.c \
    src/common/lib/libc/atomic/atomic_xor_16_cas.c \
    src/common/lib/libc/atomic/atomic_xor_64_cas.c \
    src/common/lib/libc/atomic/atomic_xor_8_cas.c
cvs rdiff -u -r1.8 -r1.8.2.1 src/common/lib/libc/atomic/atomic_add_32_cas.c \
    src/common/lib/libc/atomic/atomic_add_64_cas.c \
    src/common/lib/libc/atomic/atomic_swap_64_cas.c
cvs rdiff -u -r1.9 -r1.9.2.1 src/common/lib/libc/atomic/atomic_and_32_cas.c \
    src/common/lib/libc/atomic/atomic_and_64_cas.c \
    src/common/lib/libc/atomic/atomic_or_32_cas.c \
    src/common/lib/libc/atomic/atomic_or_64_cas.c
cvs rdiff -u -r0 -r1.2.2.2 src/common/lib/libc/atomic/atomic_load.c \
    src/common/lib/libc/atomic/atomic_store.c
cvs rdiff -u -r1.1 -r1.1.2.1 src/common/lib/libc/atomic/atomic_sub_32_cas.c \
    src/common/lib/libc/atomic/atomic_xor_32_cas.c
cvs rdiff -u -r1.6 -r1.6.2.1 src/common/lib/libc/atomic/atomic_swap_32_cas.c
cvs rdiff -u -r1.3 -r1.3.70.1 src/common/lib/libc/stdlib/random.c
cvs rdiff -u -r1.9 -r1.9.24.1 src/common/lib/libc/string/bcopy.c
cvs rdiff -u -r1.4 -r1.4.2.1 src/common/lib/libc/string/consttime_memequal.c
cvs rdiff -u -r1.3 -r1.3.2.1 src/common/lib/libc/string/explicit_memset.c
cvs rdiff -u -r0 -r1.1.2.2 src/common/lib/libc/string/strcspn.c \
    src/common/lib/libc/string/strpbrk.c src/common/lib/libc/string/strspn.c
cvs rdiff -u -r1.14 -r1.14.2.1 src/common/lib/libutil/snprintb.c
cvs rdiff -u -r1.7 -r1.7.26.1 src/common/lib/libx86emu/x86emu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libc/arch/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22.2.1
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.22 2014/03/04 16:15:28 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.22.2.1 2014/08/10 06:47:05 tls Exp $
 
 .ifnmake obj
 .include "${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk"
@@ -23,7 +23,8 @@ SRCS.atomic+=	atomic_xor_32_cas.c atomic
 		atomic_and_16_cas.c atomic_and_8_cas.c \
 		atomic_add_16_cas.c atomic_add_8_cas.c \
 		atomic_swap_16_cas.c atomic_swap_8_cas.c \
-		atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c
+		atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \
+		atomic_load.c atomic_store.c
 .endif
 
 .else

Index: src/common/lib/libc/arch/arm/atomic/atomic_add_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_add_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -56,6 +56,7 @@ ATOMIC_OP_ALIAS(atomic_add_16,_atomic_ad
 ATOMIC_OP_ALIAS(atomic_add_short,_atomic_add_16)
 ATOMIC_OP_ALIAS(atomic_add_ushort,_atomic_add_16)
 CRT_ALIAS(__sync_fetch_and_add_2,_atomic_add_16)
+CRT_ALIAS(__atomic_fetch_add_2,_atomic_add_16)
 STRONG_ALIAS(_atomic_add_short,_atomic_add_16)
 STRONG_ALIAS(_atomic_add_ushort,_atomic_add_16)
 
@@ -63,6 +64,7 @@ ATOMIC_OP_ALIAS(atomic_sub_16,_atomic_su
 ATOMIC_OP_ALIAS(atomic_sub_short,_atomic_sub_16)
 ATOMIC_OP_ALIAS(atomic_sub_ushort,_atomic_sub_16)
 CRT_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16)
+CRT_ALIAS(__atomic_fetch_sub_2,_atomic_sub_16)
 STRONG_ALIAS(_atomic_sub_short,_atomic_sub_16)
 STRONG_ALIAS(_atomic_sub_ushort,_atomic_sub_16)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_add_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_add_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -56,6 +56,7 @@ ATOMIC_OP_ALIAS(atomic_add_8,_atomic_add
 ATOMIC_OP_ALIAS(atomic_add_char,_atomic_add_8)
 ATOMIC_OP_ALIAS(atomic_add_uchar,_atomic_add_8)
 CRT_ALIAS(__sync_fetch_and_add_1,_atomic_add_8)
+CRT_ALIAS(__atomic_fetch_add_1,_atomic_add_8)
 STRONG_ALIAS(_atomic_add_char,_atomic_add_8)
 STRONG_ALIAS(_atomic_add_uchar,_atomic_add_8)
 
@@ -63,6 +64,7 @@ ATOMIC_OP_ALIAS(atomic_sub_8,_atomic_sub
 ATOMIC_OP_ALIAS(atomic_sub_char,_atomic_sub_8)
 ATOMIC_OP_ALIAS(atomic_sub_uchar,_atomic_sub_8)
 CRT_ALIAS(__sync_fetch_and_sub_1,_atomic_sub_8)
+CRT_ALIAS(__atomic_fetch_sub_1,_atomic_sub_8)
 STRONG_ALIAS(_atomic_sub_char,_atomic_sub_8)
 STRONG_ALIAS(_atomic_sub_uchar,_atomic_sub_8)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_and_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ END(_atomic_and_16)
 ATOMIC_OP_ALIAS(atomic_and_16,_atomic_and_16)
 ATOMIC_OP_ALIAS(atomic_and_ushort,_atomic_and_16)
 CRT_ALIAS(__sync_fetch_and_and_2,_atomic_and_16)
+CRT_ALIAS(__atomic_fetch_and_2,_atomic_and_16)
 STRONG_ALIAS(_atomic_and_ushort,_atomic_and_16)
 
 ENTRY_NP(_atomic_and_16_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_and_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ END(_atomic_and_8)
 ATOMIC_OP_ALIAS(atomic_and_8,_atomic_and_8)
 ATOMIC_OP_ALIAS(atomic_and_uchar,_atomic_and_8)
 CRT_ALIAS(__sync_fetch_and_and_1,_atomic_and_8)
+CRT_ALIAS(__atomic_fetch_and_1,_atomic_and_8)
 STRONG_ALIAS(_atomic_and_uchar,_atomic_and_8)
 
 ENTRY_NP(_atomic_and_8_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_16.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_or_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -50,6 +50,7 @@ END(_atomic_or_16)
 ATOMIC_OP_ALIAS(atomic_or_16,_atomic_or_16)
 ATOMIC_OP_ALIAS(atomic_or_ushort,_atomic_or_16)
 CRT_ALIAS(__sync_fetch_and_or_2,_atomic_or_16)
+CRT_ALIAS(__atomic_fetch_or_2,_atomic_or_16)
 STRONG_ALIAS(_atomic_or_ushort,_atomic_or_16)
 
 ENTRY_NP(_atomic_or_16_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_or_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ END(_atomic_or_8)
 ATOMIC_OP_ALIAS(atomic_or_8,_atomic_or_8)
 ATOMIC_OP_ALIAS(atomic_or_char,_atomic_or_8)
 CRT_ALIAS(__sync_fetch_and_or_1,_atomic_or_8)
+CRT_ALIAS(__atomic_fetch_or_1,_atomic_or_8)
 STRONG_ALIAS(_atomic_or_char,_atomic_or_8)
 
 ENTRY_NP(_atomic_or_8_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */
+/*	$NetBSD: atomic_swap_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_s
 ATOMIC_OP_ALIAS(atomic_swap_short,_atomic_swap_16)
 ATOMIC_OP_ALIAS(atomic_swap_ushort,_atomic_swap_16)
 CRT_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16)
+CRT_ALIAS(__atomic_exchange_2,_atomic_swap_16)
 STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16)
 STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_xor_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ END(_atomic_xor_16)
 ATOMIC_OP_ALIAS(atomic_xor_16,_atomic_xor_16)
 ATOMIC_OP_ALIAS(atomic_xor_ushort,_atomic_xor_16)
 CRT_ALIAS(__sync_fetch_and_xor_2,_atomic_xor_16)
+CRT_ALIAS(__atomic_fetch_xor_2,_atomic_xor_16)
 STRONG_ALIAS(_atomic_xor_ushort,_atomic_xor_16)
 
 ENTRY_NP(_atomic_xor_16_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_32.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_xor_32.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_xor_32,_atomic_xo
 ATOMIC_OP_ALIAS(atomic_xor_uint,_atomic_xor_32)
 ATOMIC_OP_ALIAS(atomic_xor_ulong,_atomic_xor_32)
 CRT_ALIAS(__sync_fetch_and_xor_4,_atomic_xor_32)
+CRT_ALIAS(__atomic_fetch_xor_4,_atomic_xor_32)
 STRONG_ALIAS(_atomic_xor_uint,_atomic_xor_32)
 STRONG_ALIAS(_atomic_xor_ulong,_atomic_xor_32)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_xor_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ END(_atomic_xor_8)
 ATOMIC_OP_ALIAS(atomic_xor_8,_atomic_xor_8)
 ATOMIC_OP_ALIAS(atomic_xor_uchar,_atomic_xor_8)
 CRT_ALIAS(__sync_fetch_and_xor_1,_atomic_xor_8)
+CRT_ALIAS(__atomic_fetch_xor_1,_atomic_xor_8)
 STRONG_ALIAS(_atomic_xor_uchar,_atomic_xor_8)
 
 ENTRY_NP(_atomic_xor_8_nv)
Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_fetch_and_add_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: sync_fetch_and_add_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_add_8)
 	RET				/* return old value */
 END(__sync_fetch_and_add_8)
 
+CRT_ALIAS(__atomic_fetch_add_8,__sync_fetch_and_add_8)
+
 #endif /* _ARM_ARCH_6 */
Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_fetch_and_and_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: sync_fetch_and_and_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_and_8)
 	RET				/* return old value */
 END(__sync_fetch_and_and_8)
 
+CRT_ALIAS(__atomic_fetch_and_8,__sync_fetch_and_and_8)
+
 #endif /* _ARM_ARCH_6 */
Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_fetch_and_or_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: sync_fetch_and_or_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_or_8)
 	RET				/* return old value */
 END(__sync_fetch_and_or_8)
 
+CRT_ALIAS(__atomic_fetch_or_8,__sync_fetch_and_or_8)
+
 #endif /* _ARM_ARCH_6 */
Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_fetch_and_sub_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: sync_fetch_and_sub_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_sub_8)
 	RET				/* return old value */
 END(__sync_fetch_and_sub_8)
 
+CRT_ALIAS(__atomic_fetch_sub_8,__sync_fetch_and_sub_8)
+
 #endif /* _ARM_ARCH_6 */
Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2.2.1
--- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_fetch_and_xor_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: sync_fetch_and_xor_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_xor_8)
 	RET				/* return old value */
 END(__sync_fetch_and_xor_8)
 
+CRT_ALIAS(__atomic_fetch_xor_8,__sync_fetch_and_xor_8)
+
 #endif /* _ARM_ARCH_6 */

Index: src/common/lib/libc/arch/arm/atomic/atomic_add_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_add_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -57,6 +57,7 @@ ATOMIC_OP_ALIAS(atomic_add_int,_atomic_a
 ATOMIC_OP_ALIAS(atomic_add_long,_atomic_add_32)
 ATOMIC_OP_ALIAS(atomic_add_ptr,_atomic_add_32)
 CRT_ALIAS(__sync_fetch_and_add_4,_atomic_add_32)
+CRT_ALIAS(__atomic_fetch_add_4,_atomic_add_32)
 STRONG_ALIAS(_atomic_add_int,_atomic_add_32)
 STRONG_ALIAS(_atomic_add_long,_atomic_add_32)
 STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32)
@@ -66,6 +67,7 @@ ATOMIC_OP_ALIAS(atomic_sub_int,_atomic_s
 ATOMIC_OP_ALIAS(atomic_sub_long,_atomic_sub_32)
 ATOMIC_OP_ALIAS(atomic_sub_ptr,_atomic_sub_32)
 CRT_ALIAS(__sync_fetch_and_sub_4,_atomic_sub_32)
+CRT_ALIAS(__atomic_fetch_sub_4,_atomic_sub_32)
 STRONG_ALIAS(_atomic_sub_int,_atomic_sub_32)
 STRONG_ALIAS(_atomic_sub_long,_atomic_sub_32)
 STRONG_ALIAS(_atomic_sub_ptr,_atomic_sub_32)
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_and_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -52,6 +52,7 @@ ATOMIC_OP_ALIAS(atomic_and_32,_atomic_an
 ATOMIC_OP_ALIAS(atomic_and_uint,_atomic_and_32)
 ATOMIC_OP_ALIAS(atomic_and_ulong,_atomic_and_32)
 CRT_ALIAS(__sync_fetch_and_and_4,_atomic_and_32)
+CRT_ALIAS(__atomic_fetch_and_4,_atomic_and_32)
 STRONG_ALIAS(_atomic_and_uint,_atomic_and_32)
 STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_or_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_or_32,_atomic_or_
 ATOMIC_OP_ALIAS(atomic_or_uint,_atomic_or_32)
 ATOMIC_OP_ALIAS(atomic_or_ulong,_atomic_or_32)
 CRT_ALIAS(__sync_fetch_and_or_4,_atomic_or_32)
+CRT_ALIAS(__atomic_fetch_or_4,_atomic_or_32)
 STRONG_ALIAS(_atomic_or_uint,_atomic_or_32)
 STRONG_ALIAS(_atomic_or_ulong,_atomic_or_32)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.10 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -79,6 +79,7 @@ ATOMIC_OP_ALIAS(atomic_swap_uint,_atomic
 ATOMIC_OP_ALIAS(atomic_swap_ulong,_atomic_swap_32)
 ATOMIC_OP_ALIAS(atomic_swap_ptr,_atomic_swap_32)
 CRT_ALIAS(__sync_lock_test_and_set_4,_atomic_swap_32)
+CRT_ALIAS(__atomic_exchange_4,_atomic_swap_32)
 STRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32)
 STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32)
 STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32)
@@ -115,6 +116,7 @@ ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_sw
 ATOMIC_OP_ALIAS(atomic_swap_char,_atomic_swap_8)
 ATOMIC_OP_ALIAS(atomic_swap_uchar,_atomic_swap_8)
 CRT_ALIAS(__sync_lock_test_and_set_1,_atomic_swap_8)
+CRT_ALIAS(__atomic_exchange_1,_atomic_swap_8)
 STRONG_ALIAS(_atomic_swap_char,_atomic_swap_8)
 STRONG_ALIAS(_atomic_swap_uchar,_atomic_swap_8)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8.2.1
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64.S,v 1.8 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_swap_64.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -51,6 +51,7 @@ ENTRY_NP(_atomic_swap_64)
 END(_atomic_swap_64)
 ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)
 CRT_ALIAS(__sync_lock_test_and_set_8,_atomic_swap_64)
+CRT_ALIAS(__atomic_exchange_8,_atomic_swap_64)
 
 #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) && !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_8)

Index: src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S
diff -u src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12 src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12.2.1
--- src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12	Mon Aug 19 03:27:34 2013
+++ src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S	Sun Aug 10 06:47:05 2014
@@ -29,7 +29,7 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12 2013/08/19 03:27:34 matt Exp $")
+RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12.2.1 2014/08/10 06:47:05 tls Exp $")
 
 #ifdef __ARMEB__
 #define	ALO	r1	/* incoming numerator, outgoing quotient */
@@ -45,7 +45,9 @@ RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12
 
 ENTRY(__aeabi_ldivmod)
 #ifdef __ARM_EABI__
+# if !defined(__ARM_DWARF_EH__)
 	.fnstart
+# endif
 	.cfi_startproc
 #endif
 #if !defined(_KERNEL) && !defined(_STANDALONE)
@@ -212,7 +214,9 @@ ENTRY(__aeabi_ldivmod)
 .Ldivbyzero:
 	push	{r0-r1,r4,lr}	
 #ifdef __ARM_EABI__
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r0-r1,r4,lr}	
+# endif
 	.cfi_def_cfa_offset 16
 	.cfi_offset 14, -4
 	.cfi_offset  4, -8
@@ -244,6 +248,8 @@ ENTRY(__aeabi_ldivmod)
 #endif	/* !_KERNEL && !_STANDALONE */
 #ifdef __ARM_EABI__
 	.cfi_endproc
+# if !defined(__ARM_DWARF_EH__)
 	.fnend
+# endif
 #endif
 END(__aeabi_ldivmod)

Index: src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S
diff -u src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8.2.1
--- src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8	Thu Dec 12 18:01:14 2013
+++ src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S	Sun Aug 10 06:47:05 2014
@@ -29,7 +29,7 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8 2013/12/12 18:01:14 matt Exp $")
+RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $")
 
 /*
  * typedef struct { unsigned long long quo, rem } ulldiv_t;
@@ -39,7 +39,9 @@ RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8
 
 ENTRY(__aeabi_uldivmod)
 #ifdef __ARM_EABI__
+# if !defined(__ARM_DWARF_EH__)
 	.fnstart
+#endif
 	.cfi_startproc
 #endif
 #if !defined(_KERNEL) && !defined(_STANDALONE)
@@ -61,7 +63,9 @@ ENTRY(__aeabi_uldivmod)
 
 	push	{r4,lr}
 #ifdef __ARM_EABI__
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r4,lr}
+# endif
 	.cfi_def_cfa_offset 8
 	.cfi_offset 14, -4
 	.cfi_offset 4, -8
@@ -94,7 +98,9 @@ ENTRY(__aeabi_uldivmod)
 .Ldivbyzero:
 	push	{r0-r1,r4,lr}
 #ifdef __ARM_EABI__
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r0-r1,r4,lr}
+# endif
 	.cfi_def_cfa_offset 16
 	.cfi_offset 14, -4
 	.cfi_offset 4, -8
@@ -111,6 +117,8 @@ ENTRY(__aeabi_uldivmod)
 #endif
 #ifdef __ARM_EABI__
 	.cfi_endproc
+# if !defined(__ARM_DWARF_EH__)
 	.fnend
+# endif
 #endif
 END(__aeabi_uldivmod)

Index: src/common/lib/libc/arch/arm/string/strcat_arm.S
diff -u src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5 src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5.2.1
--- src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5	Thu Sep  5 05:15:47 2013
+++ src/common/lib/libc/arch/arm/string/strcat_arm.S	Sun Aug 10 06:47:05 2014
@@ -34,12 +34,16 @@
  */
 ENTRY(strcat)
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.fnstart
+# endif
 	.cfi_startproc
 #endif
 	push	{r3-r5, lr}		/* save registers */
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r3-r5, lr}
+# endif
 	.cfi_def_cfa_offset 16
 	.cfi_offset 14, -4
 	.cfi_offset 5, -8
@@ -60,6 +64,8 @@ ENTRY(strcat)
 	pop	{r3-r5, pc}		/* restore registers */
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
 	.cfi_endproc
+# if !defined(__ARM_DWARF_EH__)
 	.fnend
+# endif
 #endif
 END(strcat)
Index: src/common/lib/libc/arch/arm/string/strlcat_arm.S
diff -u src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5 src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5.2.1
--- src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5	Thu Sep  5 05:15:47 2013
+++ src/common/lib/libc/arch/arm/string/strlcat_arm.S	Sun Aug 10 06:47:05 2014
@@ -29,17 +29,21 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: strlcat_arm.S,v 1.5 2013/09/05 05:15:47 matt Exp $")
+RCSID("$NetBSD: strlcat_arm.S,v 1.5.2.1 2014/08/10 06:47:05 tls Exp $")
 
 /* LINTSTUB: size_t strlcat(char *, const char *, size_t) */
 ENTRY(strlcat)
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.fnstart
+# endif
 	.cfi_startproc
 #endif
 	push	{r4-r6, lr}
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r4-r6, lr}
+# endif
 	.cfi_def_cfa_offset 16
 	.cfi_offset 14, -4
 	.cfi_offset 6, -8
@@ -62,6 +66,8 @@ ENTRY(strlcat)
 	pop	{r4-r6, pc}		/* restore registers and return */
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
 	.cfi_endproc
+# if !defined(__ARM_DWARF_EH__)
 	.fnend
+# endif
 #endif
 END(strlcat)

Index: src/common/lib/libc/arch/arm/string/strlen_arm.S
diff -u src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8 src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8.2.1
--- src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8	Thu Sep  5 05:15:47 2013
+++ src/common/lib/libc/arch/arm/string/strlen_arm.S	Sun Aug 10 06:47:05 2014
@@ -29,7 +29,7 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: strlen_arm.S,v 1.8 2013/09/05 05:15:47 matt Exp $")
+RCSID("$NetBSD: strlen_arm.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $")
 
 #if defined(__thumb__) && !defined(_ARM_ARCH_T2)
 #error Only Thumb2 or ARM supported
@@ -56,13 +56,17 @@ RCSID("$NetBSD: strlen_arm.S,v 1.8 2013/
 	.text
 ENTRY(FUNCNAME)
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.fnstart
+# endif
 	.cfi_startproc
 #endif
 #ifdef STRNLEN
 	push	{r4,r5}			/* save some registers */
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
+# if !defined(__ARM_DWARF_EH__)
 	.save	{r4,r5}
+# endif
 	.cfi_def_cfa_offset 8
 	.cfi_offset 5, -4
 	.cfi_offset 4, -8
@@ -175,6 +179,8 @@ ENTRY(FUNCNAME)
 #endif
 #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__)
 	.cfi_endproc
+# if !defined(__ARM_DWARF_EH__)
 	.fnend
+# endif
 #endif
 END(FUNCNAME)

Index: src/common/lib/libc/arch/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.20 src/common/lib/libc/arch/i386/atomic/atomic.S:1.20.2.1
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.20	Tue Feb 18 10:16:55 2014
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.20 2014/02/18 10:16:55 martin Exp $	*/
+/*	$NetBSD: atomic.S,v 1.20.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -31,7 +31,11 @@
 
 #include <sys/param.h>
 #include <machine/asm.h>
-
+/*
+ * __HAVE_ constants should not be in <machine/types.h>
+ * because we can't use them from assembly. OTOH we
+ * only need __HAVE_ATOMIC64_OPS here, and we don't.
+ */
 #ifdef _KERNEL
 #define	ALIAS(f, t)	STRONG_ALIAS(f,t)
 #else
@@ -54,6 +58,7 @@ ENTRY(_atomic_add_32)
 	LOCK(1)
 	addl	%eax, (%edx)
 	ret
+END(_atomic_add_32)
 
 ENTRY(_atomic_add_32_nv)
 	movl	4(%esp), %edx
@@ -63,6 +68,7 @@ ENTRY(_atomic_add_32_nv)
 	xaddl	%eax, (%edx)
 	addl	%ecx, %eax
 	ret
+END(_atomic_add_32_nv)
 
 ENTRY(_atomic_and_32)
 	movl	4(%esp), %edx
@@ -70,6 +76,7 @@ ENTRY(_atomic_and_32)
 	LOCK(3)
 	andl	%eax, (%edx)
 	ret
+END(_atomic_and_32)
 
 ENTRY(_atomic_and_32_nv)
 	movl	4(%esp), %edx
@@ -84,12 +91,14 @@ ENTRY(_atomic_and_32_nv)
 	ret
 1:
 	jmp	0b
+END(_atomic_and_32_nv)
 
 ENTRY(_atomic_dec_32)
 	movl	4(%esp), %edx
 	LOCK(5)
 	decl	(%edx)
 	ret
+END(_atomic_dec_32)
 
 ENTRY(_atomic_dec_32_nv)
 	movl	4(%esp), %edx
@@ -98,12 +107,14 @@ ENTRY(_atomic_dec_32_nv)
 	xaddl	%eax, (%edx)
 	decl	%eax
 	ret
+END(_atomic_dec_32_nv)
 
 ENTRY(_atomic_inc_32)
 	movl	4(%esp), %edx
 	LOCK(7)
 	incl	(%edx)
 	ret
+END(_atomic_inc_32)
 
 ENTRY(_atomic_inc_32_nv)
 	movl	4(%esp), %edx
@@ -112,6 +123,7 @@ ENTRY(_atomic_inc_32_nv)
 	xaddl	%eax, (%edx)
 	incl	%eax
 	ret
+END(_atomic_inc_32_nv)
 
 ENTRY(_atomic_or_32)
 	movl	4(%esp), %edx
@@ -119,6 +131,7 @@ ENTRY(_atomic_or_32)
 	LOCK(9)
 	orl	%eax, (%edx)
 	ret
+END(_atomic_or_32)
 
 ENTRY(_atomic_or_32_nv)
 	movl	4(%esp), %edx
@@ -133,12 +146,14 @@ ENTRY(_atomic_or_32_nv)
 	ret
 1:
 	jmp	0b
+END(_atomic_or_32_nv)
 
 ENTRY(_atomic_swap_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
 	xchgl	%eax, (%edx)
 	ret
+END(_atomic_swap_32)
 
 ENTRY(_atomic_cas_32)
 	movl	4(%esp), %edx
@@ -148,6 +163,7 @@ ENTRY(_atomic_cas_32)
 	cmpxchgl %ecx, (%edx)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32)
 
 ENTRY(_atomic_cas_32_ni)
 	movl	4(%esp), %edx
@@ -156,29 +172,35 @@ ENTRY(_atomic_cas_32_ni)
 	cmpxchgl %ecx, (%edx)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32_ni)
 
 ENTRY(_membar_consumer)
 	LOCK(13)
 	addl	$0, -4(%esp)
 	ret
+END(_membar_consumer)
 ENDLABEL(membar_consumer_end)
 
 ENTRY(_membar_producer)
 	/* A store is enough */
 	movl	$0, -4(%esp)
 	ret
+END(_membar_producer)
 ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(14)
 	addl	$0, -4(%esp)
 	ret
+END(_membar_sync)
 ENDLABEL(membar_sync_end)
 
-#ifdef _HARDKERNEL
+#if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL)
 ENTRY(_atomic_cas_64)
+#ifdef _HARDKERNEL
 	pushf
 	cli
+#endif /* _HARDKERNEL */
 	pushl	%edi
 	pushl	%ebx
 	movl	12(%esp), %edi
@@ -195,12 +217,15 @@ ENTRY(_atomic_cas_64)
 1:
 	popl	%ebx
 	popl	%edi
+#ifdef _HARDKERNEL
 	popf
+#endif /* _HARDKERNEL */
 	ret
 2:
 	movl	0(%edi), %eax
 	movl	4(%edi), %edx
 	jmp	1b
+END(_atomic_cas_64)
 ENDLABEL(_atomic_cas_64_end)
 
 ENTRY(_atomic_cas_cx8)
@@ -216,21 +241,28 @@ ENTRY(_atomic_cas_cx8)
 	popl	%ebx
 	popl	%edi
 	ret
+#ifdef _HARDKERNEL
 #ifdef GPROF
 	.space	16, 0x90
 #else
 	.space	32, 0x90
 #endif
+#endif /* _HARDKERNEL */
+END(_atomic_cas_cx8)
 ENDLABEL(_atomic_cas_cx8_end)
+#endif /* __HAVE_ATOMIC64_OPS || _KERNEL */
 
+#ifdef _HARDKERNEL
 ENTRY(sse2_lfence)
 	lfence
 	ret
+END(sse2_lfence)
 ENDLABEL(sse2_lfence_end)
 
 ENTRY(sse2_mfence)
 	mfence
 	ret
+END(sse2_mfence)
 ENDLABEL(sse2_mfence_end)
 
 atomic_lockpatch:
@@ -238,20 +270,6 @@ atomic_lockpatch:
 	.long	.Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5
 	.long	.Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10
 	.long	.Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15, 0
-#else
-ENTRY(_atomic_cas_64)
-	pushl	%edi
-	pushl	%ebx
-	movl	12(%esp), %edi
-	movl	16(%esp), %eax
-	movl	20(%esp), %edx
-	movl	24(%esp), %ebx
-	movl	28(%esp), %ecx
-	lock
-	cmpxchg8b (%edi)
-	popl	%ebx
-	popl	%edi
-	ret
 #endif	/* _HARDKERNEL */
 
 ALIAS(atomic_add_32,_atomic_add_32)
@@ -319,9 +337,11 @@ ALIAS(atomic_cas_uint_ni,_atomic_cas_32_
 ALIAS(atomic_cas_ulong_ni,_atomic_cas_32_ni)
 ALIAS(atomic_cas_ptr_ni,_atomic_cas_32_ni)
 
+#if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL)
 ALIAS(atomic_cas_64,_atomic_cas_64)
 ALIAS(atomic_cas_64_ni,_atomic_cas_64)
 ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64)
+#endif /* __HAVE_ATOMIC64_OPS || _KERNEL */
 
 ALIAS(membar_consumer,_membar_consumer)
 ALIAS(membar_producer,_membar_producer)

Index: src/common/lib/libc/arch/i386/gen/byte_swap_2.S
diff -u src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3 src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3.48.1
--- src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3	Wed Nov 28 17:03:35 2007
+++ src/common/lib/libc/arch/i386/gen/byte_swap_2.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $	*/
+/*	$NetBSD: byte_swap_2.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -36,7 +36,7 @@
 
 #include <machine/asm.h>
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $")
+	RCSID("$NetBSD: byte_swap_2.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $")
 #endif
 
 #if defined(_KERNEL) || defined(_STANDALONE)
@@ -50,3 +50,10 @@ _PROF_PROLOGUE
 	movzwl	4(%esp),%eax
 	xchgb	%al, %ah
 	ret
+#if defined(_KERNEL) || defined(_STANDALONE)
+END(_C_LABEL(bswap16))
+#else /* defined(_KERNEL) || defined(_STANDALONE) */
+END(_C_LABEL(__bswap16))
+#endif /* defined(_KERNEL) || defined(_STANDALONE) */
+END(_C_LABEL(ntohs))
+END(_C_LABEL(htons))
Index: src/common/lib/libc/arch/i386/gen/byte_swap_4.S
diff -u src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3 src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3.48.1
--- src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3	Wed Nov 28 17:03:35 2007
+++ src/common/lib/libc/arch/i386/gen/byte_swap_4.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.3 2007/11/28 17:03:35 ad Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -36,7 +36,7 @@
 
 #include <machine/asm.h>
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: byte_swap_4.S,v 1.3 2007/11/28 17:03:35 ad Exp $")
+	RCSID("$NetBSD: byte_swap_4.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $")
 #endif
 
 #if defined(_KERNEL) || defined(_STANDALONE)
@@ -50,3 +50,10 @@ _PROF_PROLOGUE
 	movl	4(%esp),%eax
 	bswap	%eax
 	ret
+#if defined(_KERNEL) || defined(_STANDALONE)
+END(_C_LABEL(bswap32))
+#else /* defined(_KERNEL) || defined(_STANDALONE) */
+END(_C_LABEL(__bswap32))
+#endif /* defined(_KERNEL) || defined(_STANDALONE) */
+END(_C_LABEL(ntohl))
+END(_C_LABEL(htonl))

Index: src/common/lib/libc/arch/i386/string/memset.S
diff -u src/common/lib/libc/arch/i386/string/memset.S:1.4 src/common/lib/libc/arch/i386/string/memset.S:1.4.40.1
--- src/common/lib/libc/arch/i386/string/memset.S:1.4	Tue Apr 29 06:53:01 2008
+++ src/common/lib/libc/arch/i386/string/memset.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: memset.S,v 1.4 2008/04/29 06:53:01 martin Exp $	*/
+/*	$NetBSD: memset.S,v 1.4.40.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <machine/asm.h>
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: memset.S,v 1.4 2008/04/29 06:53:01 martin Exp $")
+	RCSID("$NetBSD: memset.S,v 1.4.40.1 2014/08/10 06:47:05 tls Exp $")
 #endif
 
 #ifdef BZERO
@@ -104,3 +104,8 @@ ENTRY(memset)
 #endif
 	popl	%edi
 	ret
+#ifdef BZERO
+END(bzero)
+#else
+END(memset)
+#endif

Index: src/common/lib/libc/arch/i386/string/small/memcpy.S
diff -u src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1 src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1.20.1
--- src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1	Thu Jun 16 16:39:14 2011
+++ src/common/lib/libc/arch/i386/string/small/memcpy.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: memcpy.S,v 1.1 2011/06/16 16:39:14 joerg Exp $	*/
+/*	$NetBSD: memcpy.S,v 1.1.20.1 2014/08/10 06:47:05 tls Exp $	*/
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -29,7 +29,7 @@
  */
 
 #include <machine/asm.h>
-	RCSID("$NetBSD: memcpy.S,v 1.1 2011/06/16 16:39:14 joerg Exp $")
+	RCSID("$NetBSD: memcpy.S,v 1.1.20.1 2014/08/10 06:47:05 tls Exp $")
 
 #  ifdef BCOPY
 ENTRY(bcopy)
@@ -68,4 +68,9 @@ __memmove_start:
 	popl	%edi
 	popl	%esi
 	ret
+END(memcpy)
+END(memmove)
 #  endif /* MEMMOVE */
+#  ifdef BCOPY
+END(bcopy)
+#  endif

Index: src/common/lib/libc/arch/m68k/atomic/atomic_add.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9 src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_add.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add.S,v 1.9 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_add.S,v 1.9.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -122,3 +122,7 @@ ENTRY(__sync_fetch_and_add_1)
 	bne	1b
 	rts
 END(__sync_fetch_and_add_1)
+
+CRT_ALIAS(__atomic_fetch_add_1,__sync_fetch_and_add_1)
+CRT_ALIAS(__atomic_fetch_add_2,__sync_fetch_and_add_2)
+CRT_ALIAS(__atomic_fetch_add_4,__sync_fetch_and_add_4)

Index: src/common/lib/libc/arch/m68k/atomic/atomic_and.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_and.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and.S,v 1.10 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_and.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -123,4 +123,6 @@ ENTRY(__sync_fetch_and_and_1)
 	rts
 END(__sync_fetch_and_and_1)
 
-
+CRT_ALIAS(__atomic_fetch_and_1,__sync_fetch_and_and_1)
+CRT_ALIAS(__atomic_fetch_and_2,__sync_fetch_and_and_2)
+CRT_ALIAS(__atomic_fetch_and_4,__sync_fetch_and_and_4)
Index: src/common/lib/libc/arch/m68k/atomic/atomic_or.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_or.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or.S,v 1.10 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_or.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -123,3 +123,7 @@ ENTRY(__sync_fetch_and_or_1)
 	bne	1b
 	rts
 END(__sync_fetch_and_or_1)
+
+CRT_ALIAS(__atomic_fetch_or_1,__sync_fetch_and_or_1)
+CRT_ALIAS(__atomic_fetch_or_2,__sync_fetch_and_or_2)
+CRT_ALIAS(__atomic_fetch_or_4,__sync_fetch_and_or_4)

Index: src/common/lib/libc/arch/m68k/atomic/atomic_sub.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2 src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_sub.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub.S,v 1.2 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_sub.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -122,3 +122,7 @@ ENTRY(__sync_fetch_and_sub_1)
 	bne	1b
 	rts
 END(__sync_fetch_and_sub_1)
+
+CRT_ALIAS(__atomic_fetch_sub_1,__sync_fetch_and_sub_1)
+CRT_ALIAS(__atomic_fetch_sub_2,__sync_fetch_and_sub_2)
+CRT_ALIAS(__atomic_fetch_sub_4,__sync_fetch_and_sub_4)
Index: src/common/lib/libc/arch/m68k/atomic/atomic_xor.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2 src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_xor.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor.S,v 1.2 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_xor.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -129,3 +129,7 @@ ENTRY(__sync_fetch_and_xor_1)
 	bne	1b
 	rts
 END(__sync_fetch_and_xor_1)
+
+CRT_ALIAS(__atomic_fetch_xor_1,__sync_fetch_and_xor_1)
+CRT_ALIAS(__atomic_fetch_xor_2,__sync_fetch_and_xor_2)
+CRT_ALIAS(__atomic_fetch_xor_4,__sync_fetch_and_xor_4)

Index: src/common/lib/libc/arch/m68k/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8 src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8.2.1
--- src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_swap.S	Sun Aug 10 06:47:05 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.8 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@ STRONG_ALIAS(_atomic_swap_ulong,_atomic_
 ATOMIC_OP_ALIAS(atomic_swap_ptr,_atomic_swap_32)
 STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32)
 CRT_ALIAS(__sync_lock_test_and_set_4,_atomic_swap_32)
+CRT_ALIAS(__atomic_exchange_4,_atomic_swap_32)
 
 
 ENTRY(_atomic_swap_16)
@@ -64,6 +65,7 @@ ENTRY(_atomic_swap_16)
 END(_atomic_swap_16)
 ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16)
 CRT_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16)
+CRT_ALIAS(__atomic_exchange_2,_atomic_swap_16)
 
 ENTRY(_atomic_swap_8)
 	movl	4(%sp), %a0
@@ -76,3 +78,4 @@ ENTRY(_atomic_swap_8)
 END(_atomic_swap_8)
 ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_swap_8)
 CRT_ALIAS(__sync_lock_test_and_set_1,_atomic_swap_8)
+CRT_ALIAS(__atomic_exchange_1,_atomic_swap_8)

Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16.24.1
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16	Wed Jan 12 23:12:10 2011
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.16 2011/01/12 23:12:10 joerg Exp $	*/
+/*	$NetBSD: atomic.S,v 1.16.24.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -54,6 +54,7 @@ ENTRY(_atomic_add_32)
 	LOCK(1)
 	addl	%esi, (%rdi)
 	ret
+END(_atomic_add_32)
 
 ENTRY(_atomic_add_32_nv)
 	movl	%esi, %eax
@@ -61,11 +62,13 @@ ENTRY(_atomic_add_32_nv)
 	xaddl	%eax, (%rdi)
 	addl	%esi, %eax
 	ret
+END(_atomic_add_32_nv)
 
 ENTRY(_atomic_and_32)
 	LOCK(3)
 	andl	%esi, (%rdi)
 	ret
+END(_atomic_and_32)
 
 ENTRY(_atomic_and_32_nv)
 	movl	(%rdi), %eax
@@ -77,11 +80,13 @@ ENTRY(_atomic_and_32_nv)
 	jnz	1b
 	movl	%ecx, %eax
 	ret
+END(_atomic_and_32_nv)
 
 ENTRY(_atomic_dec_32)
 	LOCK(5)
 	decl	(%rdi)
 	ret
+END(_atomic_dec_32)
 
 ENTRY(_atomic_dec_32_nv)
 	movl	$-1, %eax
@@ -89,11 +94,13 @@ ENTRY(_atomic_dec_32_nv)
 	xaddl	%eax, (%rdi)
 	decl	%eax
 	ret
+END(_atomic_dec_32_nv)
 
 ENTRY(_atomic_inc_32)
 	LOCK(7)
 	incl	(%rdi)
 	ret
+END(_atomic_inc_32)
 
 ENTRY(_atomic_inc_32_nv)
 	movl	$1, %eax
@@ -101,11 +108,13 @@ ENTRY(_atomic_inc_32_nv)
 	xaddl	%eax, (%rdi)
 	incl	%eax
 	ret
+END(_atomic_inc_32_nv)
 
 ENTRY(_atomic_or_32)
 	LOCK(9)
 	orl	%esi, (%rdi)
 	ret
+END(_atomic_or_32)
 
 ENTRY(_atomic_or_32_nv)
 	movl	(%rdi), %eax
@@ -117,11 +126,13 @@ ENTRY(_atomic_or_32_nv)
 	jnz	1b
 	movl	%ecx, %eax
 	ret
+END(_atomic_or_32_nv)
 
 ENTRY(_atomic_swap_32)
 	movl	%esi, %eax
 	xchgl	%eax, (%rdi)
 	ret
+END(_atomic_swap_32)
 
 ENTRY(_atomic_cas_32)
 	movl	%esi, %eax
@@ -129,12 +140,14 @@ ENTRY(_atomic_cas_32)
 	cmpxchgl %edx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32)
 
 ENTRY(_atomic_cas_32_ni)
 	movl	%esi, %eax
 	cmpxchgl %edx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32_ni)
 
 /* 64-bit */
 
@@ -142,6 +155,7 @@ ENTRY(_atomic_add_64)
 	LOCK(13)
 	addq	%rsi, (%rdi)
 	ret
+END(_atomic_add_64)
 
 ENTRY(_atomic_add_64_nv)
 	movq	%rsi, %rax
@@ -149,11 +163,13 @@ ENTRY(_atomic_add_64_nv)
 	xaddq	%rax, (%rdi)
 	addq	%rsi, %rax
 	ret
+END(_atomic_add_64_nv)
 
 ENTRY(_atomic_and_64)
 	LOCK(15)
 	andq	%rsi, (%rdi)
 	ret
+END(_atomic_and_64)
 
 ENTRY(_atomic_and_64_nv)
 	movq	(%rdi), %rax
@@ -165,11 +181,13 @@ ENTRY(_atomic_and_64_nv)
 	jnz	1b
 	movq	%rcx, %rax
 	ret
+END(_atomic_and_64_nv)
 
 ENTRY(_atomic_dec_64)
 	LOCK(17)
 	decq	(%rdi)
 	ret
+END(_atomic_dec_64)
 
 ENTRY(_atomic_dec_64_nv)
 	movq	$-1, %rax
@@ -177,11 +195,13 @@ ENTRY(_atomic_dec_64_nv)
 	xaddq	%rax, (%rdi)
 	decq	%rax
 	ret
+END(_atomic_dec_64_nv)
 
 ENTRY(_atomic_inc_64)
 	LOCK(19)
 	incq	(%rdi)
 	ret
+END(_atomic_inc_64)
 
 ENTRY(_atomic_inc_64_nv)
 	movq	$1, %rax
@@ -189,11 +209,13 @@ ENTRY(_atomic_inc_64_nv)
 	xaddq	%rax, (%rdi)
 	incq	%rax
 	ret
+END(_atomic_inc_64_nv)
 
 ENTRY(_atomic_or_64)
 	LOCK(21)
 	orq	%rsi, (%rdi)
 	ret
+END(_atomic_or_64)
 
 ENTRY(_atomic_or_64_nv)
 	movq	(%rdi), %rax
@@ -205,11 +227,13 @@ ENTRY(_atomic_or_64_nv)
 	jnz	1b
 	movq	%rcx, %rax
 	ret
+END(_atomic_or_64_nv)
 
 ENTRY(_atomic_swap_64)
 	movq	%rsi, %rax
 	xchgq	%rax, (%rdi)
 	ret
+END(_atomic_swap_64)
 
 ENTRY(_atomic_cas_64)
 	movq	%rsi, %rax
@@ -217,12 +241,14 @@ ENTRY(_atomic_cas_64)
 	cmpxchgq %rdx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_64)
 
 ENTRY(_atomic_cas_64_ni)
 	movq	%rsi, %rax
 	cmpxchgq %rdx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_64_ni)
 
 /* memory barriers */
 
@@ -230,29 +256,34 @@ ENTRY(_membar_consumer)
 	LOCK(25)
 	addq	$0, -8(%rsp)
 	ret
+END(_membar_consumer)
 ENDLABEL(membar_consumer_end)
 
 ENTRY(_membar_producer)
 	/* A store is enough */
 	movq	$0, -8(%rsp)
 	ret
+END(_membar_producer)
 ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(26)
 	addq	$0, -8(%rsp)
 	ret
+END(_membar_sync)
 ENDLABEL(membar_sync_end)
 
 #ifdef _HARDKERNEL
 ENTRY(sse2_lfence)
 	lfence
 	ret
+END(sse2_lfence)
 ENDLABEL(sse2_lfence_end)
 
 ENTRY(sse2_mfence)
 	mfence
 	ret
+END(sse2_mfence)
 ENDLABEL(sse2_mfence_end)
 
 atomic_lockpatch:

Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S
diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2.70.1
--- src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2	Sat Feb  4 21:53:31 2006
+++ src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S	Sun Aug 10 06:47:06 2014
@@ -1,9 +1,9 @@
-/*	$NetBSD: byte_swap_2.S,v 1.2 2006/02/04 21:53:31 uwe Exp $	*/
+/*	$NetBSD: byte_swap_2.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $	*/
 
 #include <machine/asm.h>
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: byte_swap_2.S,v 1.2 2006/02/04 21:53:31 uwe Exp $")
+	RCSID("$NetBSD: byte_swap_2.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $")
 #endif
 
 #if defined(_KERNEL) || defined(_STANDALONE)
@@ -17,3 +17,10 @@ _PROF_PROLOGUE
 	movl	%edi,%eax
 	xchgb	%ah,%al
 	ret
+#if defined(_KERNEL) || defined(_STANDALONE)
+END(_C_LABEL(bswap16))
+#else
+END(_C_LABEL(__bswap16))
+#endif
+END(_C_LABEL(ntohs))
+END(_C_LABEL(htons))
Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S
diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2.70.1
--- src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2	Sat Feb  4 21:53:31 2006
+++ src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S	Sun Aug 10 06:47:06 2014
@@ -1,8 +1,8 @@
-/*	$NetBSD: byte_swap_4.S,v 1.2 2006/02/04 21:53:31 uwe Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $	*/
 
 #include <machine/asm.h>
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: byte_swap_4.S,v 1.2 2006/02/04 21:53:31 uwe Exp $")
+	RCSID("$NetBSD: byte_swap_4.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $")
 #endif
 
 #if defined(_KERNEL) || defined(_STANDALONE)
@@ -16,3 +16,10 @@ _PROF_PROLOGUE
 	movl	%edi,%eax
 	bswapl	%eax
 	ret
+#if defined(_KERNEL) || defined(_STANDALONE)
+END(_C_LABEL(bswap32))
+#else
+END(_C_LABEL(__bswap32))
+#endif
+END(_C_LABEL(ntohl))
+END(_C_LABEL(htonl))

Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S
diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1 src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1.24.1
--- src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1	Thu Jan 14 02:09:46 2010
+++ src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_8.S,v 1.1 2010/01/14 02:09:46 joerg Exp $	*/
+/*	$NetBSD: byte_swap_8.S,v 1.1.24.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*
  * Written by Frank van der Linden (f...@wasabisystems.com)
@@ -8,10 +8,11 @@
 #include <machine/asm.h>
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: byte_swap_8.S,v 1.1 2010/01/14 02:09:46 joerg Exp $")
+	RCSID("$NetBSD: byte_swap_8.S,v 1.1.24.1 2014/08/10 06:47:06 tls Exp $")
 #endif
 
 ENTRY(bswap64)
 	bswapq	%rdi
 	movq	%rdi,%rax
 	ret
+END(bswap64)

Index: src/common/lib/libc/arch/x86_64/string/memset.S
diff -u src/common/lib/libc/arch/x86_64/string/memset.S:1.3 src/common/lib/libc/arch/x86_64/string/memset.S:1.3.24.1
--- src/common/lib/libc/arch/x86_64/string/memset.S:1.3	Sat Aug  1 20:35:45 2009
+++ src/common/lib/libc/arch/x86_64/string/memset.S	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: memset.S,v 1.3 2009/08/01 20:35:45 dsl Exp $	*/
+/*	$NetBSD: memset.S,v 1.3.24.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <machine/asm.h>
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: memset.S,v 1.3 2009/08/01 20:35:45 dsl Exp $")
+	RCSID("$NetBSD: memset.S,v 1.3.24.1 2014/08/10 06:47:06 tls Exp $")
 #endif
 
 #ifndef _KERNEL
@@ -89,3 +89,8 @@ ENTRY(memset)
 	sub	%rdx,%rcx		/* adjust length ... */
 	add	%rdx,%rdi		/* ... and target */
 	jmp	2b
+END(memset)
+
+#ifndef _KERNEL
+END(bzero)
+#endif

Index: src/common/lib/libc/atomic/atomic_add_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_add_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_add_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ add_and_fetch_2(volatile uint16_t *addr,
 	} while (atomic_cas_16(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_add_2,__sync_fetch_and_add_2)
Index: src/common/lib/libc/atomic/atomic_add_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_add_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_add_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ add_and_fetch_1(volatile uint8_t *addr, 
 	} while (atomic_cas_8(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_add_1,__sync_fetch_and_add_1)
Index: src/common/lib/libc/atomic/atomic_and_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_and_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_and_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -47,3 +47,5 @@ fetch_and_and_2(volatile uint16_t *addr,
 	} while (atomic_cas_16(addr, old, new) != old);
 	return old;
 }
+
+__strong_alias(__atomic_fetch_and_2,__sync_fetch_and_and_2)
Index: src/common/lib/libc/atomic/atomic_and_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_and_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_and_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -47,3 +47,5 @@ fetch_and_and_1(volatile uint8_t *addr, 
 	} while (atomic_cas_8(addr, old, new) != old);
 	return old;
 }
+
+__strong_alias(__atomic_fetch_and_1,__sync_fetch_and_and_1)
Index: src/common/lib/libc/atomic/atomic_or_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_or_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_or_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -62,3 +62,4 @@ or_and_fetch_2(volatile uint16_t *addr, 
 	return old;
 }
 
+__strong_alias(__atomic_fetch_or_2,__sync_fetch_and_or_2)
Index: src/common/lib/libc/atomic/atomic_or_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_or_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_or_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -62,3 +62,4 @@ or_and_fetch_1(volatile uint8_t *addr, u
 	return old;
 }
 
+__strong_alias(__atomic_fetch_or_1,__sync_fetch_and_or_1)
Index: src/common/lib/libc/atomic/atomic_sub_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_sub_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_sub_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ sub_and_fetch_2(volatile uint16_t *addr,
 	} while (atomic_cas_16(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_sub_2,__sync_fetch_and_sub_2)
Index: src/common/lib/libc/atomic/atomic_sub_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2	Tue Feb 18 13:21:04 2014
+++ src/common/lib/libc/atomic/atomic_sub_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $	*/
+/*	$NetBSD: atomic_sub_64_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -62,4 +62,6 @@ sub_and_fetch_8(volatile uint64_t *addr,
 	return new;
 }
 
+__strong_alias(__atomic_fetch_sub_8,__sync_fetch_and_sub_8)
+
 #endif
Index: src/common/lib/libc/atomic/atomic_sub_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_sub_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_sub_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ sub_and_fetch_1(volatile uint8_t *addr, 
 	} while (atomic_cas_8(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_sub_1,__sync_fetch_and_sub_1)
Index: src/common/lib/libc/atomic/atomic_swap_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_swap_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_swap_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,3 +48,5 @@ atomic_swap_16(volatile uint16_t *addr, 
 
 	return old;
 }
+
+crt_alias(__atomic_exchange_2,__sync_lock_test_and_set_2)
Index: src/common/lib/libc/atomic/atomic_swap_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_swap_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_swap_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,3 +48,5 @@ atomic_swap_8(volatile uint8_t *addr, ui
 
 	return old;
 }
+
+crt_alias(__atomic_exchange_1,__sync_lock_test_and_set_1)
Index: src/common/lib/libc/atomic/atomic_xor_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_xor_16_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_xor_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ xor_and_fetch_2(volatile uint16_t *addr,
 	} while (atomic_cas_16(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_xor_2,__sync_fetch_and_xor_2)
Index: src/common/lib/libc/atomic/atomic_xor_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2	Tue Feb 18 13:21:04 2014
+++ src/common/lib/libc/atomic/atomic_xor_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $	*/
+/*	$NetBSD: atomic_xor_64_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -62,4 +62,6 @@ xor_and_fetch_8(volatile uint64_t *addr,
 	return new;
 }
 
+__strong_alias(__atomic_fetch_xor_8,__sync_fetch_and_xor_8)
+
 #endif
Index: src/common/lib/libc/atomic/atomic_xor_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2.2.1
--- src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_xor_8_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_xor_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ xor_and_fetch_1(volatile uint8_t *addr, 
 	} while (atomic_cas_8(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_xor_1,__sync_fetch_and_xor_1)

Index: src/common/lib/libc/atomic/atomic_add_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8 src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8.2.1
--- src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_add_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_cas.c,v 1.8 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_add_32_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -74,3 +74,5 @@ __strong_alias(_atomic_add_long,_atomic_
 atomic_op_alias(atomic_add_ptr,_atomic_add_32)
 __strong_alias(_atomic_add_ptr,_atomic_add_32)
 #endif /* _LP64 */
+
+__strong_alias(__atomic_fetch_add_4,__sync_fetch_and_add_4)
Index: src/common/lib/libc/atomic/atomic_add_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8.2.1
--- src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8	Tue Jan 28 21:47:48 2014
+++ src/common/lib/libc/atomic/atomic_add_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64_cas.c,v 1.8 2014/01/28 21:47:48 joerg Exp $	*/
+/*	$NetBSD: atomic_add_64_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -56,6 +56,8 @@ atomic_add_64(volatile uint64_t *addr, i
    (void) fetch_and_add_8(addr, val);
 }
 
+__strong_alias(__atomic_fetch_add_8,__sync_fetch_and_add_8)
+
 #undef atomic_add_64
 atomic_op_alias(atomic_add_64,_atomic_add_64)
 
Index: src/common/lib/libc/atomic/atomic_swap_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8.2.1
--- src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_swap_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64_cas.c,v 1.8 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_swap_64_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -47,6 +47,8 @@ atomic_swap_64(volatile uint64_t *addr, 
 	return (old);
 }
 
+crt_alias(__atomic_exchange_8,_atomic_swap_8)
+
 #undef atomic_swap_64
 atomic_op_alias(atomic_swap_64,_atomic_swap_64)
 crt_alias(__sync_lock_test_and_set_8,_atomic_swap_64)

Index: src/common/lib/libc/atomic/atomic_and_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9.2.1
--- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_and_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_cas.c,v 1.9 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_and_32_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -58,6 +58,8 @@ atomic_and_32(volatile uint32_t *addr, u
 	(void) fetch_and_and_4(addr, val);
 }
 
+__strong_alias(__atomic_fetch_and_4,__sync_fetch_and_and_4)
+
 #undef atomic_and_32
 atomic_op_alias(atomic_and_32,_atomic_and_32)
 
Index: src/common/lib/libc/atomic/atomic_and_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9.2.1
--- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9	Tue Jan 28 21:47:48 2014
+++ src/common/lib/libc/atomic/atomic_and_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $	*/
+/*	$NetBSD: atomic_and_64_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -56,6 +56,8 @@ atomic_and_64(volatile uint64_t *addr, u
 	(void) fetch_and_and_8(addr, val);
 }
 
+__strong_alias(__atomic_fetch_and_8,__sync_fetch_and_and_8)
+
 #undef atomic_and_64
 atomic_op_alias(atomic_and_64,_atomic_and_64)
 
Index: src/common/lib/libc/atomic/atomic_or_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9.2.1
--- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_or_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_cas.c,v 1.9 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_or_32_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -58,6 +58,8 @@ atomic_or_32(volatile uint32_t *addr, ui
 	(void) fetch_and_or_4(addr, val);
 }
 
+__strong_alias(__atomic_fetch_or_4,__sync_fetch_and_or_4)
+
 #undef atomic_or_32
 atomic_op_alias(atomic_or_32,_atomic_or_32)
 
Index: src/common/lib/libc/atomic/atomic_or_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9.2.1
--- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9	Tue Jan 28 21:47:48 2014
+++ src/common/lib/libc/atomic/atomic_or_64_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $	*/
+/*	$NetBSD: atomic_or_64_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -56,6 +56,8 @@ atomic_or_64(volatile uint64_t *addr, ui
 	(void) fetch_and_or_8(addr, val);
 }
 
+__strong_alias(__atomic_fetch_or_8,__sync_fetch_and_or_8)
+
 #undef atomic_or_64
 atomic_op_alias(atomic_or_64,_atomic_or_64)
 

Index: src/common/lib/libc/atomic/atomic_sub_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1 src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1.2.1
--- src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1	Fri Feb 21 10:52:50 2014
+++ src/common/lib/libc/atomic/atomic_sub_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $	*/
+/*	$NetBSD: atomic_sub_32_cas.c,v 1.1.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,3 +59,5 @@ sub_and_fetch_4(volatile uint32_t *addr,
 	} while (atomic_cas_32(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_sub_4,__sync_fetch_and_sub_4)
Index: src/common/lib/libc/atomic/atomic_xor_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1 src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1.2.1
--- src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1	Fri Feb 21 10:52:50 2014
+++ src/common/lib/libc/atomic/atomic_xor_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $	*/
+/*	$NetBSD: atomic_xor_32_cas.c,v 1.1.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,3 +59,5 @@ xor_and_fetch_4(volatile uint32_t *addr,
 	} while (atomic_cas_32(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_xor_4,__sync_fetch_and_xor_4)

Index: src/common/lib/libc/atomic/atomic_swap_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6 src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6.2.1
--- src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_swap_32_cas.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_32_cas.c,v 1.6 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_swap_32_cas.c,v 1.6.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -45,6 +45,8 @@ atomic_swap_32(volatile uint32_t *addr, 
 	return (old);
 }
 
+crt_alias(__atomic_exchange_4,_atomic_swap_32)
+
 #undef atomic_swap_32
 atomic_op_alias(atomic_swap_32,_atomic_swap_32)
 #undef atomic_swap_uint

Index: src/common/lib/libc/stdlib/random.c
diff -u src/common/lib/libc/stdlib/random.c:1.3 src/common/lib/libc/stdlib/random.c:1.3.70.1
--- src/common/lib/libc/stdlib/random.c:1.3	Wed Dec 21 14:23:58 2005
+++ src/common/lib/libc/stdlib/random.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: random.c,v 1.3 2005/12/21 14:23:58 christos Exp $	*/
+/*	$NetBSD: random.c,v 1.3.70.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -35,7 +35,7 @@
 #if 0
 static char sccsid[] = "@(#)random.c	8.2 (Berkeley) 5/19/95";
 #else
-__RCSID("$NetBSD: random.c,v 1.3 2005/12/21 14:23:58 christos Exp $");
+__RCSID("$NetBSD: random.c,v 1.3.70.1 2014/08/10 06:47:06 tls Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -302,11 +302,11 @@ srandom_unlocked(unsigned int x)
 }
 
 void
-srandom(unsigned long x)
+srandom(unsigned int x)
 {
 
 	mutex_lock(&random_mutex);
-	srandom_unlocked((unsigned int) x);
+	srandom_unlocked(x);
 	mutex_unlock(&random_mutex);
 }
 
@@ -335,7 +335,7 @@ srandom(unsigned long x)
  */
 char *
 initstate(
-	unsigned long seed,		/* seed for R.N.G. */
+	unsigned int seed,		/* seed for R.N.G. */
 	char *arg_state,		/* pointer to state array */
 	size_t n)			/* # bytes of state info */
 {
@@ -377,7 +377,7 @@ initstate(
 	}
 	state = (int *) (int_arg_state + 1); /* first location */
 	end_ptr = &state[rand_deg];	/* must set end_ptr before srandom */
-	srandom_unlocked((unsigned int) seed);
+	srandom_unlocked(seed);
 	if (rand_type == TYPE_0)
 		int_arg_state[0] = rand_type;
 	else

Index: src/common/lib/libc/string/bcopy.c
diff -u src/common/lib/libc/string/bcopy.c:1.9 src/common/lib/libc/string/bcopy.c:1.9.24.1
--- src/common/lib/libc/string/bcopy.c:1.9	Wed Mar 18 12:25:06 2009
+++ src/common/lib/libc/string/bcopy.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcopy.c,v 1.9 2009/03/18 12:25:06 tsutsui Exp $	*/
+/*	$NetBSD: bcopy.c,v 1.9.24.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)bcopy.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: bcopy.c,v 1.9 2009/03/18 12:25:06 tsutsui Exp $");
+__RCSID("$NetBSD: bcopy.c,v 1.9.24.1 2014/08/10 06:47:06 tls Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -51,7 +51,7 @@ __RCSID("$NetBSD: bcopy.c,v 1.9 2009/03/
 #endif
 #endif
 
-#ifdef _FORTIFY_SOURCE
+#if defined(_FORTIFY_SOURCE) || defined(_STANDALONE) || defined(_KERNEL)
 #undef bcopy
 #undef memcpy
 #undef memmove
@@ -89,8 +89,7 @@ bcopy(const void *src0, void *dst0, size
 	unsigned long u;
 
 #if !defined(_KERNEL)
-	_DIAGASSERT(dst0 != 0);
-	_DIAGASSERT(src0 != 0);
+	_DIAGASSERT((dst0 && src0) || length == 0);
 #endif
 
 	if (length == 0 || dst == src)		/* nothing to do */

Index: src/common/lib/libc/string/consttime_memequal.c
diff -u src/common/lib/libc/string/consttime_memequal.c:1.4 src/common/lib/libc/string/consttime_memequal.c:1.4.2.1
--- src/common/lib/libc/string/consttime_memequal.c:1.4	Wed Aug 28 19:31:14 2013
+++ src/common/lib/libc/string/consttime_memequal.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,9 @@
-/* $NetBSD: consttime_memequal.c,v 1.4 2013/08/28 19:31:14 riastradh Exp $ */
+/* $NetBSD: consttime_memequal.c,v 1.4.2.1 2014/08/10 06:47:06 tls Exp $ */
+
+/*
+ * Written by Matthias Drochner <droch...@netbsd.org>.
+ * Public domain.
+ */
 
 #if !defined(_KERNEL) && !defined(_STANDALONE)
 #include "namespace.h"

Index: src/common/lib/libc/string/explicit_memset.c
diff -u src/common/lib/libc/string/explicit_memset.c:1.3 src/common/lib/libc/string/explicit_memset.c:1.3.2.1
--- src/common/lib/libc/string/explicit_memset.c:1.3	Wed Aug 28 17:47:07 2013
+++ src/common/lib/libc/string/explicit_memset.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,9 @@
-/* $NetBSD: explicit_memset.c,v 1.3 2013/08/28 17:47:07 riastradh Exp $ */
+/* $NetBSD: explicit_memset.c,v 1.3.2.1 2014/08/10 06:47:06 tls Exp $ */
+
+/*
+ * Written by Matthias Drochner <droch...@netbsd.org>.
+ * Public domain.
+ */
 
 #if !defined(_KERNEL) && !defined(_STANDALONE)
 #include "namespace.h"

Index: src/common/lib/libutil/snprintb.c
diff -u src/common/lib/libutil/snprintb.c:1.14 src/common/lib/libutil/snprintb.c:1.14.2.1
--- src/common/lib/libutil/snprintb.c:1.14	Thu Aug  8 22:18:20 2013
+++ src/common/lib/libutil/snprintb.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $	*/
+/*	$NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 
 #  include <sys/cdefs.h>
 #  if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $");
+__RCSID("$NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $");
 #  endif
 
 #  include <sys/types.h>
@@ -51,7 +51,7 @@ __RCSID("$NetBSD: snprintb.c,v 1.14 2013
 #  include <errno.h>
 # else /* ! _KERNEL */
 #  include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $");
 #  include <sys/param.h>
 #  include <sys/inttypes.h>
 #  include <sys/systm.h>
@@ -257,7 +257,7 @@ snprintb_m(char *buf, size_t buflen, con
 		}
 	}
 	l_len++;
-	if ((size_t)(++t_len) < buflen)
+	if (sep != '<' && (size_t)(++t_len) < buflen)
 		*bp++ = '>';
 terminate:
 	*bp++ = '\0';

Index: src/common/lib/libx86emu/x86emu.c
diff -u src/common/lib/libx86emu/x86emu.c:1.7 src/common/lib/libx86emu/x86emu.c:1.7.26.1
--- src/common/lib/libx86emu/x86emu.c:1.7	Tue Feb  3 19:26:29 2009
+++ src/common/lib/libx86emu/x86emu.c	Sun Aug 10 06:47:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: x86emu.c,v 1.7 2009/02/03 19:26:29 joerg Exp $	*/
+/*	$NetBSD: x86emu.c,v 1.7.26.1 2014/08/10 06:47:06 tls Exp $	*/
 
 /****************************************************************************
 *
@@ -2091,21 +2091,24 @@ Handles opcode 0x8d
 static void
 x86emuOp_lea_word_R_M(struct X86EMU *emu)
 {
-	uint16_t *srcreg;
 	uint32_t destoffset;
 
-/*
- * TODO: Need to handle address size prefix!
- *
- * lea  eax,[eax+ebx*2] ??
- */
 	fetch_decode_modrm(emu);
 	if (emu->cur_mod == 3)
 		X86EMU_halt_sys(emu);
 
-	srcreg = decode_rh_word_register(emu);
 	destoffset = decode_rl_address(emu);
-	*srcreg = (uint16_t) destoffset;
+	if (emu->x86.mode & SYSMODE_PREFIX_ADDR) {
+		uint32_t *srcreg;
+
+		srcreg = decode_rh_long_register(emu);
+		*srcreg = (uint32_t) destoffset;
+	} else {
+		uint16_t *srcreg;
+
+		srcreg = decode_rh_word_register(emu);
+		*srcreg = (uint16_t) destoffset;
+	}
 }
 /****************************************************************************
 REMARKS:
@@ -3601,12 +3604,19 @@ Handles opcode 0xe8
 static void
 x86emuOp_call_near_IMM(struct X86EMU *emu)
 {
-	int16_t ip;
-
-	ip = (int16_t) fetch_word_imm(emu);
-	ip += (int16_t) emu->x86.R_IP;	/* CHECK SIGN */
-	push_word(emu, emu->x86.R_IP);
-	emu->x86.R_IP = ip;
+	if (emu->x86.mode & SYSMODE_PREFIX_DATA) {
+		int32_t ip;
+		ip = (int32_t) fetch_long_imm(emu);
+		ip += (int32_t) emu->x86.R_EIP;
+		push_long(emu, emu->x86.R_EIP);
+		emu->x86.R_EIP = ip;
+	} else {
+		int16_t ip;
+		ip = (int16_t) fetch_word_imm(emu);
+		ip += (int16_t) emu->x86.R_IP;	/* CHECK SIGN */
+		push_word(emu, emu->x86.R_IP);
+		emu->x86.R_IP = ip;
+	}
 }
 /****************************************************************************
 REMARKS:
@@ -5419,6 +5429,7 @@ x86emuOp2_32_movsx_byte_R_RM(struct X86E
 {
 	uint32_t *destreg;
 
+	fetch_decode_modrm(emu);
 	destreg = decode_rh_long_register(emu);
 	*destreg = (int32_t)(int8_t)decode_and_fetch_byte(emu);
 }

Added files:

Index: src/common/lib/libc/atomic/atomic_load.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_load.c:1.2.2.2
--- /dev/null	Sun Aug 10 06:47:06 2014
+++ src/common/lib/libc/atomic/atomic_load.c	Sun Aug 10 06:47:06 2014
@@ -0,0 +1,54 @@
+/*	$NetBSD: atomic_load.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: atomic_load.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $");
+
+#include "atomic_op_namespace.h"
+
+#include <sys/types.h>
+#include <sys/atomic.h>
+
+#define atomic_load_n(n,b) \
+uint ## b ## _t __atomic_load_ ## n(volatile uint ## b ## _t *, int); \
+uint ## b ## _t \
+__atomic_load_ ## n(volatile uint ## b ## _t *ptr, int memmodel) \
+{ \
+	uint## b ##_t val; \
+	membar_enter(); \
+	val = *ptr; \
+	membar_exit(); \
+	return val; \
+}
+
+atomic_load_n(1, 8)
+atomic_load_n(2, 16)
+atomic_load_n(4, 32)
+#ifdef	__HAVE_ATOMIC_CAS_64_UP
+atomic_load_n(8, 64)
+#endif
Index: src/common/lib/libc/atomic/atomic_store.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_store.c:1.2.2.2
--- /dev/null	Sun Aug 10 06:47:06 2014
+++ src/common/lib/libc/atomic/atomic_store.c	Sun Aug 10 06:47:06 2014
@@ -0,0 +1,53 @@
+/*	$NetBSD: atomic_store.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: atomic_store.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $");
+
+#include "atomic_op_namespace.h"
+
+#include <sys/types.h>
+#include <sys/atomic.h>
+
+#define atomic_store_n(n,b) \
+void __atomic_store_ ## n(volatile uint ## b ## _t *, uint ## b ## _t, int); \
+void \
+__atomic_store_ ## n(volatile uint ## b ## _t *ptr, uint ## b ## _t val, \
+                     int memmodel) \
+{ \
+	membar_enter(); \
+	*ptr = val; \
+	membar_exit(); \
+}
+
+atomic_store_n(1, 8)
+atomic_store_n(2, 16)
+atomic_store_n(4, 32)
+#ifdef	__HAVE_ATOMIC_CAS_64_UP
+atomic_store_n(8, 64)
+#endif

Index: src/common/lib/libc/string/strcspn.c
diff -u /dev/null src/common/lib/libc/string/strcspn.c:1.1.2.2
--- /dev/null	Sun Aug 10 06:47:06 2014
+++ src/common/lib/libc/string/strcspn.c	Sun Aug 10 06:47:06 2014
@@ -0,0 +1,74 @@
+/*	$NetBSD: strcspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $	*/
+
+/*-
+ * Copyright (c) 2008 Joerg Sonnenberger
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: strcspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $");
+
+#if !defined(_KERNEL) && !defined(_STANDALONE)
+#include <assert.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <string.h>
+#else
+#include <lib/libkern/libkern.h>
+#endif
+
+/* 64bit version is in strspn.c */
+#if ULONG_MAX != 0xffffffffffffffffull
+
+size_t
+strcspn(const char *s, const char *charset)
+{
+	static const uint8_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };
+	const char *t;
+	uint8_t set[32];
+#define UC(a) ((unsigned int)(unsigned char)(a))
+
+	_DIAGASSERT(s != NULL);
+	_DIAGASSERT(charset != NULL);
+
+	if (charset[0] == '\0')
+		return strlen(s);
+	if (charset[1] == '\0') {
+		for (t = s; *t != '\0'; ++t)
+			if (*t == *charset)
+				break;
+		return t - s;
+	}
+
+	(void)memset(set, 0, sizeof(set));
+
+	for (; *charset != '\0'; ++charset)
+		set[UC(*charset) >> 3] |= idx[UC(*charset) & 7];
+
+	for (t = s; *t != '\0'; ++t)
+		if (set[UC(*t) >> 3] & idx[UC(*t) & 7])
+			break;
+	return t - s;
+}
+
+#endif
Index: src/common/lib/libc/string/strpbrk.c
diff -u /dev/null src/common/lib/libc/string/strpbrk.c:1.1.2.2
--- /dev/null	Sun Aug 10 06:47:06 2014
+++ src/common/lib/libc/string/strpbrk.c	Sun Aug 10 06:47:06 2014
@@ -0,0 +1,79 @@
+/*	$NetBSD: strpbrk.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $	*/
+
+/*-
+ * Copyright (c) 2008 Joerg Sonnenberger
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: strpbrk.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $");
+
+#if !defined(_KERNEL) && !defined(_STANDALONE)
+#include <assert.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <string.h>
+#else
+#include <lib/libkern/libkern.h>
+#endif
+
+#define FAST_STRPBRK 1
+#define UC(a) ((unsigned int)(unsigned char)(a))
+
+#ifdef FAST_STRPBRK
+#define ADD_NEW_TO_SET(i) (set[inv[i] = idx++] = (i))
+#define IS_IN_SET(i) (inv[i] < idx && set[inv[i]] == (i))
+#define ADD_TO_SET(i) (void)(IS_IN_SET(i) || /*LINTED no effect*/ADD_NEW_TO_SET(i))
+#else
+#define IS_IN_SET(i) (set[(i) >> 3] & idx[(i) & 7])
+#define ADD_TO_SET(i) (void)(set[(i) >> 3] |= idx[(i) & 7])
+#endif
+
+char *
+strpbrk(const char *s, const char *charset)
+{
+#ifdef FAST_STRPBRK
+	uint8_t set[256], inv[256], idx = 0;
+#else
+	static const size_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };
+	uint8_t set[32];
+
+	(void)memset(set, 0, sizeof(set));
+#endif
+
+	_DIAGASSERT(s != NULL);
+	_DIAGASSERT(charset != NULL);
+
+	if (charset[0] == '\0')
+		return NULL;
+	if (charset[1] == '\0')
+		return strchr(s, charset[0]);
+
+	for (; *charset != '\0'; ++charset)
+		ADD_TO_SET(UC(*charset));
+
+	for (; *s != '\0'; ++s)
+		if (IS_IN_SET(UC(*s)))
+			return __UNCONST(s);
+	return NULL;
+}
Index: src/common/lib/libc/string/strspn.c
diff -u /dev/null src/common/lib/libc/string/strspn.c:1.1.2.2
--- /dev/null	Sun Aug 10 06:47:06 2014
+++ src/common/lib/libc/string/strspn.c	Sun Aug 10 06:47:06 2014
@@ -0,0 +1,155 @@
+/*	$NetBSD: strspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $	*/
+
+/*-
+ * Copyright (c) 2008 Joerg Sonnenberger
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: strspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $");
+
+#if !defined(_KERNEL) && !defined(_STANDALONE)
+#include <assert.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <string.h>
+#else
+#include <lib/libkern/libkern.h>
+#endif
+
+#if ULONG_MAX != 0xffffffffffffffffull
+
+size_t
+strspn(const char *s, const char *charset)
+{
+	static const uint8_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };
+	uint8_t set[32];
+	const char *t;
+#define UC(a) ((unsigned int)(unsigned char)(a))
+
+	_DIAGASSERT(s != NULL);
+	_DIAGASSERT(charset != NULL);
+
+	if (charset[0] == '\0')
+		return 0;
+	if (charset[1] == '\0') {
+		for (t = s; *t != '\0'; ++t) {
+			if (*t != *charset)
+				break;
+		}
+		return t - s;
+	}
+
+	(void)memset(set, 0, sizeof(set));
+
+	for (; *charset != '\0'; ++charset)
+		set[UC(*charset) >> 3] |= idx[UC(*charset) & 7];
+
+	for (t = s; *t != '\0'; ++t)
+		if ((set[UC(*t) >> 3] & idx[UC(*t) & 7]) == 0)
+			break;
+	return t - s;
+}
+
+#else
+
+/* 64 bit system, use four 64 bits registers for bitmask */
+
+static size_t
+strspn_x(const char *s_s, const char *charset_s, unsigned long invert)
+{
+	const unsigned char *s = (const unsigned char *)s_s;
+	const unsigned char *charset = (const unsigned char *)charset_s;
+	unsigned long m_0, m_4, m_8, m_c;
+	unsigned char ch, next_ch;
+	unsigned long bit;
+	unsigned long check;
+	size_t count;
+
+	/* Four 64bit registers have one bit for each character value */
+	m_0 = 0;
+	m_4 = 0;
+	m_8 = 0;
+	m_c = 0;
+
+	for (ch = *charset; ch != 0; ch = next_ch) {
+		next_ch = *++charset;
+		bit = 1ul << (ch & 0x3f);
+		if (__predict_true(ch < 0x80)) {
+			if (ch < 0x40)
+				m_0 |= bit;
+			else
+				m_4 |= bit;
+		} else {
+			if (ch < 0xc0)
+				m_8 |= bit;
+			else
+				m_c |= bit;
+		}
+	}
+
+	/* For strcspn() we just invert the validity set */
+	m_0 ^= invert;
+	m_4 ^= invert;
+	m_8 ^= invert;
+	m_c ^= invert;
+
+	/*
+	 * We could do remove the lsb from m_0 to terminate at the
+	 * end of the input string.
+	 * However prefetching the next char is benifitial and we must
+	 * not read the byte after the \0 - as it might fault!
+	 * So we take the 'hit' of the compare against 0.
+	 */
+
+	ch = *s++;
+	for (count = 0; ch != 0; ch = next_ch) {
+		next_ch = s[count];
+		if (__predict_true(ch < 0x80)) {
+			check = m_0;
+			if (ch >= 0x40)
+				check = m_4;
+		} else {
+			check = m_8;
+			if (ch >= 0xc0)
+				check = m_c;
+		}
+		if (!((check >> (ch & 0x3f)) & 1))
+			break;
+		count++;
+	}
+	return count;
+}
+
+size_t
+strspn(const char *s, const char *charset)
+{
+	return strspn_x(s, charset, 0);
+}
+
+size_t
+strcspn(const char *s, const char *charset)
+{
+	return strspn_x(s, charset, ~0ul);
+}
+#endif

Reply via email to