shithub: mc

Download patch

ref: a4f0ffa2a6755c7c0b8c1deb736d425540144ff7
parent: 3665783a1d1fe03db70cca452c615b439310a329
author: Ori Bernstein <[email protected]>
date: Wed May 9 15:21:57 EDT 2018

Turn off fancy stuff when we have an old assembler.

--- a/genbootstrap.sh
+++ b/genbootstrap.sh
@@ -18,6 +18,22 @@
 cp obj/mbld/mbld xmbld
 ./xmbld -o '' clean
 
+tags(){
+	case `uname` in
+	*Linux*)	echo -Tposixy -Tlinux;;
+	*Darwin*)	echo -Tposixy -Tosx;;
+	*FreeBSD*)	echo -Tposixy -Tfreebsd;;
+	*NetBSD*)	echo -Tposixy -Tnetbsd;;
+	*OpenBSD*)	echo -Tposixy -Topenbsd:6.2;;
+	*Plan9*)	echo -Tplan9;;
+	esac
+	case `uname -m` in
+	*amd64*)	echo -Tx64	;;
+	*x86_64*)	echo -Tx64	;;
+	esac
+}
+
+
 bootscript=mk/bootstrap/bootstrap+`uname -s`-`uname -m`.sh
 echo '#!/bin/sh' > $bootscript
 echo '# This script is generated by genbootstrap.sh' >> $bootscript
@@ -27,7 +43,7 @@
 echo 'set -x' >> $bootscript
 # mbld needs to be run without an output dir so we dont
 # run into mkdir issues.
-./xmbld -o '' -j1 -Bnone mbld:mbld | \
+./xmbld -o '' -j1 -Bnone mbld:mbld `tags` | \
     grep '^	' | \
     sed "s:`pwd`:\$pwd:g" | \
     tee -a $bootscript
--- a/mbld/syssel.myr
+++ b/mbld/syssel.myr
@@ -162,13 +162,13 @@
 		match opt_arch
 		| "x64":	
 			tag(b, "x64")
-			if opt_cpufeatures & CpuidSSE2 == CpuidSSE2
+			if supports(CpuidSSE2)
 				tag(b, "sse2")
 			;;
-			if opt_cpufeatures & CpuidSSE4 == CpuidSSE4
+			if supports(CpuidSSE4)
 				tag(b, "sse4")
 			;;
-			if opt_cpufeatures & CpuidFMA == CpuidFMA
+			if supports(CpuidFMA)
 				tag(b, "fma")
 			;;
 		| unknown:
@@ -182,6 +182,19 @@
 	;;
 }
 
+const supports = {feat
+	match (opt_sys, opt_cpufeatures & feat)
+	/* The version of gas that's shipped with openbsd is too old. */
+	| ("openbsd", CpuidSSE4):	-> false
+	| ("openbsd", CpuidFMA):	-> false
+	| ("freebsd", CpuidSSE4):	-> false
+	| ("freebsd", CpuidFMA):	-> false
+	| ("netbsd", CpuidSSE4):	-> false
+	| ("netbsd", CpuidFMA):	-> false
+	| (_, f):			-> f == feat
+	;;
+}
+
 const loadtagfile = {b, tagfile
 	var data, sp
 
@@ -199,6 +212,15 @@
 	std.slfree(data)
 }
 
-const tag  = {b, tag
-	std.htput(b.tags, std.sldup(tag), (-1, -1, -1))
+const tag  = {b, t
+	var v
+	match std.strfind(t, ":")
+	| `std.None:
+		std.htput(b.tags, std.sldup(t), (-1, -1, -1))
+	| `std.Some idx:
+		v = parseversion(t[idx+1:])
+		std.put("version: {} : {}\n", t[:idx], v)
+		std.htput(b.tags, std.sldup(t[:idx]), v)
+	;;
+
 }
--- a/mk/bootstrap/bootstrap+Darwin-x86_64.sh
+++ b/mk/bootstrap/bootstrap+Darwin-x86_64.sh
@@ -8,18 +8,17 @@
 	as -g -o lib/thread/start.o lib/thread/start+osx-x64.s
 	as -g -o lib/thread/atomic-impl.o lib/thread/atomic-impl+x64.s
 	as -g -o lib/std/getbp.o lib/std/getbp+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/option.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/traits.myr
+	$pwd/6/6m -I lib/sys lib/std/option.myr
+	$pwd/6/6m -I lib/sys lib/std/traits.myr
 	as -g -o lib/std/memops-impl.o lib/std/memops-impl+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/fltbits.myr
+	$pwd/6/6m -I lib/sys lib/std/fltbits.myr
 	as -g -o lib/std/sjlj-impl.o lib/std/sjlj-impl+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/endian.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/extremum.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sjlj.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/swap.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slfill.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/clear.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/result.myr
+	$pwd/6/6m -I lib/sys lib/std/endian.myr
+	$pwd/6/6m -I lib/sys lib/std/extremum.myr
+	$pwd/6/6m -I lib/sys lib/std/sjlj+x64.myr
+	$pwd/6/6m -I lib/sys lib/std/swap.myr
+	$pwd/6/6m -I lib/sys lib/std/slfill.myr
+	$pwd/6/6m -I lib/sys lib/std/result.myr
 	as -g -o lib/sys/syscall.o lib/sys/syscall+osx-x64.s
 	$pwd/6/6m lib/sys/systypes.myr
 	$pwd/6/6m lib/sys/sys+osx-x64.myr
@@ -28,84 +27,86 @@
 	$pwd/6/6m lib/sys/syserrno+osx.myr
 	ar -rcs lib/sys/libsys.a lib/sys/sys.o lib/sys/syserrno.o lib/sys/util.o lib/sys/systypes.o lib/sys/ifreq.o lib/sys/syscall.o
 	$pwd/muse/muse -o lib/sys/libsys.use -p sys lib/sys/sys.use lib/sys/syserrno.use lib/sys/systypes.use lib/sys/ifreq.use
-	$pwd/6/6m -I . -I lib/sys lib/std/errno.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/types.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strfind.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/memops.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sleq.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hassuffix.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/backtrace+x64.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/units.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/cstrconv.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/syswrap+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mkpath.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/now.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/consts.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/die.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slcp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/syswrap-ss+osx.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sleep.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/chartype.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/utf.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/cmp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sort.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/search.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hasprefix.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/chomp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/striter.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/intparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strstrip.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/introspect.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/varargs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/wait+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/threadhooks.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bytealloc.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/alloc.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slurp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mk.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slput.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/htab.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slpush.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strsplit.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strbuf.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sldup.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bigint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fltparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fltfmt.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dirname.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dir+osx.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/diriter.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fndup.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strjoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/getcwd.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slpop.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sljoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/getint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hashfuncs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bitset.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/putint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/readall.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/blat.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/writeall.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fmt.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/env+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/execvp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/spork.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/assert.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/rand.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/pathjoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mktemp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/optparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/netaddr.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/ipparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fmtfuncs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/resolve+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dialparse+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dial+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/listen+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/try.myr
-	ar -rcs lib/std/libstd.a lib/std/resolve.o lib/std/result.o lib/std/try.o lib/std/ipparse.o lib/std/alloc.o lib/std/sleq.o lib/std/putint.o lib/std/sljoin.o lib/std/slpop.o lib/std/syswrap.o lib/std/getint.o lib/std/strsplit.o lib/std/slfill.o lib/std/writeall.o lib/std/fltfmt.o lib/std/hasprefix.o lib/std/swap.o lib/std/fmt.o lib/std/netaddr.o lib/std/varargs.o lib/std/diriter.o lib/std/getcwd.o lib/std/blat.o lib/std/optparse.o lib/std/pathjoin.o lib/std/readall.o lib/std/strjoin.o lib/std/threadhooks.o lib/std/sjlj.o lib/std/extremum.o lib/std/endian.o lib/std/rand.o lib/std/sldup.o lib/std/sleep.o lib/std/wait.o lib/std/introspect.o lib/std/fltparse.o lib/std/fndup.o lib/std/strbuf.o lib/std/assert.o lib/std/spork.o lib/std/slpush.o lib/std/strstrip.o lib/std/htab.o lib/std/hashfuncs.o lib/std/slput.o lib/std/sjlj-impl.o lib/std/fltbits.o lib/std/striter.o lib/std/types.o lib/std/cstrconv.o lib/std/units.o lib/std/backtrace.o lib/std/syswrap-ss.o lib/std/die.o lib/std/mk.o lib/std/hassuffix.o lib/std/memops-impl.o lib/std/utf.o lib/std/slurp.o lib/std/dialparse.o lib/std/bytealloc.o lib/std/mktemp.o lib/std/consts.o lib/std/chomp.o lib/std/dir.o lib/std/search.o lib/std/memops.o lib/std/fmtfuncs.o lib/std/strfind.o lib/std/env.o lib/std/dirname.o lib/std/clear.o lib/std/listen.o lib/std/sort.o lib/std/cmp.o lib/std/now.o lib/std/intparse.o lib/std/traits.o lib/std/mkpath.o lib/std/option.o lib/std/dial.o lib/std/errno.o lib/std/chartype.o lib/std/bigint.o lib/std/bitset.o lib/std/getbp.o lib/std/slcp.o lib/std/execvp.o
-	$pwd/muse/muse -o lib/std/libstd.use -p std lib/std/resolve.use lib/std/result.use lib/std/try.use lib/std/ipparse.use lib/std/alloc.use lib/std/sleq.use lib/std/putint.use lib/std/sljoin.use lib/std/slpop.use lib/std/syswrap.use lib/std/getint.use lib/std/strsplit.use lib/std/slfill.use lib/std/writeall.use lib/std/fltfmt.use lib/std/hasprefix.use lib/std/swap.use lib/std/fmt.use lib/std/netaddr.use lib/std/varargs.use lib/std/diriter.use lib/std/getcwd.use lib/std/blat.use lib/std/optparse.use lib/std/pathjoin.use lib/std/readall.use lib/std/strjoin.use lib/std/threadhooks.use lib/std/sjlj.use lib/std/extremum.use lib/std/endian.use lib/std/rand.use lib/std/sldup.use lib/std/sleep.use lib/std/wait.use lib/std/introspect.use lib/std/fltparse.use lib/std/fndup.use lib/std/strbuf.use lib/std/assert.use lib/std/spork.use lib/std/slpush.use lib/std/strstrip.use lib/std/htab.use lib/std/hashfuncs.use lib/std/slput.use lib/std/fltbits.use lib/std/striter.use lib/std/types.use lib/std/cstrconv.use lib/std/units.use lib/std/backtrace.use lib/std/syswrap-ss.use lib/std/die.use lib/std/mk.use lib/std/hassuffix.use lib/std/utf.use lib/std/slurp.use lib/std/dialparse.use lib/std/bytealloc.use lib/std/mktemp.use lib/std/consts.use lib/std/chomp.use lib/std/dir.use lib/std/search.use lib/std/memops.use lib/std/fmtfuncs.use lib/std/strfind.use lib/std/env.use lib/std/dirname.use lib/std/clear.use lib/std/listen.use lib/std/sort.use lib/std/cmp.use lib/std/now.use lib/std/intparse.use lib/std/traits.use lib/std/mkpath.use lib/std/option.use lib/std/dial.use lib/std/errno.use lib/std/chartype.use lib/std/bigint.use lib/std/bitset.use lib/std/slcp.use lib/std/execvp.use
+	$pwd/6/6m -I lib/sys lib/std/errno.myr
+	$pwd/6/6m -I lib/sys lib/std/types.myr
+	$pwd/6/6m -I lib/sys lib/std/strfind.myr
+	$pwd/6/6m -I lib/sys lib/std/memops.myr
+	$pwd/6/6m -I lib/sys lib/std/clear.myr
+	$pwd/6/6m -I lib/sys lib/std/sleq.myr
+	$pwd/6/6m -I lib/sys lib/std/hassuffix.myr
+	$pwd/6/6m -I lib/sys lib/std/backtrace+x64.myr
+	$pwd/6/6m -I lib/sys lib/std/units.myr
+	$pwd/6/6m -I lib/sys lib/std/cstrconv.myr
+	$pwd/6/6m -I lib/sys lib/std/syswrap+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/mkpath.myr
+	$pwd/6/6m -I lib/sys lib/std/now.myr
+	$pwd/6/6m -I lib/sys lib/std/consts.myr
+	$pwd/6/6m -I lib/sys lib/std/die.myr
+	$pwd/6/6m -I lib/sys lib/std/slcp.myr
+	$pwd/6/6m -I lib/sys lib/std/syswrap-ss+osx.myr
+	$pwd/6/6m -I lib/sys lib/std/sleep.myr
+	$pwd/6/6m -I lib/sys lib/std/chartype.myr
+	$pwd/6/6m -I lib/sys lib/std/utf.myr
+	$pwd/6/6m -I lib/sys lib/std/cmp.myr
+	$pwd/6/6m -I lib/sys lib/std/sort.myr
+	$pwd/6/6m -I lib/sys lib/std/search.myr
+	$pwd/6/6m -I lib/sys lib/std/hasprefix.myr
+	$pwd/6/6m -I lib/sys lib/std/chomp.myr
+	$pwd/6/6m -I lib/sys lib/std/striter.myr
+	$pwd/6/6m -I lib/sys lib/std/intparse.myr
+	$pwd/6/6m -I lib/sys lib/std/strstrip.myr
+	$pwd/6/6m -I lib/sys lib/std/introspect.myr
+	$pwd/6/6m -I lib/sys lib/std/varargs.myr
+	$pwd/6/6m -I lib/sys lib/std/wait+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/threadhooks.myr
+	$pwd/6/6m -I lib/sys lib/std/bytealloc.myr
+	$pwd/6/6m -I lib/sys lib/std/alloc.myr
+	$pwd/6/6m -I lib/sys lib/std/slurp.myr
+	$pwd/6/6m -I lib/sys lib/std/mk.myr
+	$pwd/6/6m -I lib/sys lib/std/slput.myr
+	$pwd/6/6m -I lib/sys lib/std/htab.myr
+	$pwd/6/6m -I lib/sys lib/std/slpush.myr
+	$pwd/6/6m -I lib/sys lib/std/strsplit.myr
+	$pwd/6/6m -I lib/sys lib/std/strbuf.myr
+	$pwd/6/6m -I lib/sys lib/std/sldup.myr
+	$pwd/6/6m -I lib/sys lib/std/bigint.myr
+	$pwd/6/6m -I lib/sys lib/std/fltparse.myr
+	$pwd/6/6m -I lib/sys lib/std/fltfmt.myr
+	$pwd/6/6m -I lib/sys lib/std/dirname.myr
+	$pwd/6/6m -I lib/sys lib/std/dir+osx.myr
+	$pwd/6/6m -I lib/sys lib/std/diriter.myr
+	$pwd/6/6m -I lib/sys lib/std/fndup.myr
+	$pwd/6/6m -I lib/sys lib/std/strjoin.myr
+	$pwd/6/6m -I lib/sys lib/std/getcwd.myr
+	$pwd/6/6m -I lib/sys lib/std/slpop.myr
+	$pwd/6/6m -I lib/sys lib/std/sljoin.myr
+	$pwd/6/6m -I lib/sys lib/std/strreplace.myr
+	$pwd/6/6m -I lib/sys lib/std/getint.myr
+	$pwd/6/6m -I lib/sys lib/std/hashfuncs.myr
+	$pwd/6/6m -I lib/sys lib/std/bitset.myr
+	$pwd/6/6m -I lib/sys lib/std/putint.myr
+	$pwd/6/6m -I lib/sys lib/std/readall.myr
+	$pwd/6/6m -I lib/sys lib/std/blat.myr
+	$pwd/6/6m -I lib/sys lib/std/writeall.myr
+	$pwd/6/6m -I lib/sys lib/std/fmt.myr
+	$pwd/6/6m -I lib/sys lib/std/env+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/execvp.myr
+	$pwd/6/6m -I lib/sys lib/std/spork.myr
+	$pwd/6/6m -I lib/sys lib/std/assert.myr
+	$pwd/6/6m -I lib/sys lib/std/rand.myr
+	$pwd/6/6m -I lib/sys lib/std/pathjoin.myr
+	$pwd/6/6m -I lib/sys lib/std/mktemp.myr
+	$pwd/6/6m -I lib/sys lib/std/optparse.myr
+	$pwd/6/6m -I lib/sys lib/std/netaddr.myr
+	$pwd/6/6m -I lib/sys lib/std/ipparse.myr
+	$pwd/6/6m -I lib/sys lib/std/fmtfuncs.myr
+	$pwd/6/6m -I lib/sys lib/std/resolve+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/dialparse+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/dial+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/listen+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/try.myr
+	ar -rcs lib/std/libstd.a lib/std/resolve.o lib/std/result.o lib/std/try.o lib/std/ipparse.o lib/std/alloc.o lib/std/sleq.o lib/std/putint.o lib/std/sljoin.o lib/std/slpop.o lib/std/syswrap.o lib/std/getint.o lib/std/strsplit.o lib/std/slfill.o lib/std/writeall.o lib/std/fltfmt.o lib/std/hasprefix.o lib/std/swap.o lib/std/fmt.o lib/std/netaddr.o lib/std/varargs.o lib/std/diriter.o lib/std/getcwd.o lib/std/blat.o lib/std/optparse.o lib/std/pathjoin.o lib/std/readall.o lib/std/strjoin.o lib/std/threadhooks.o lib/std/sjlj.o lib/std/extremum.o lib/std/endian.o lib/std/rand.o lib/std/sldup.o lib/std/sleep.o lib/std/wait.o lib/std/introspect.o lib/std/fltparse.o lib/std/fndup.o lib/std/strbuf.o lib/std/strreplace.o lib/std/assert.o lib/std/spork.o lib/std/slpush.o lib/std/strstrip.o lib/std/htab.o lib/std/hashfuncs.o lib/std/slput.o lib/std/sjlj-impl.o lib/std/fltbits.o lib/std/striter.o lib/std/types.o lib/std/cstrconv.o lib/std/units.o lib/std/backtrace.o lib/std/syswrap-ss.o lib/std/die.o lib/std/mk.o lib/std/hassuffix.o lib/std/memops-impl.o lib/std/utf.o lib/std/slurp.o lib/std/dialparse.o lib/std/bytealloc.o lib/std/mktemp.o lib/std/consts.o lib/std/chomp.o lib/std/dir.o lib/std/search.o lib/std/memops.o lib/std/fmtfuncs.o lib/std/strfind.o lib/std/env.o lib/std/dirname.o lib/std/clear.o lib/std/listen.o lib/std/sort.o lib/std/cmp.o lib/std/now.o lib/std/intparse.o lib/std/traits.o lib/std/mkpath.o lib/std/option.o lib/std/dial.o lib/std/errno.o lib/std/chartype.o lib/std/bigint.o lib/std/bitset.o lib/std/getbp.o lib/std/slcp.o lib/std/execvp.o
+	$pwd/muse/muse -o lib/std/libstd.use -p std lib/std/resolve.use lib/std/result.use lib/std/try.use lib/std/ipparse.use lib/std/alloc.use lib/std/sleq.use lib/std/putint.use lib/std/sljoin.use lib/std/slpop.use lib/std/syswrap.use lib/std/getint.use lib/std/strsplit.use lib/std/slfill.use lib/std/writeall.use lib/std/fltfmt.use lib/std/hasprefix.use lib/std/swap.use lib/std/fmt.use lib/std/netaddr.use lib/std/varargs.use lib/std/diriter.use lib/std/getcwd.use lib/std/blat.use lib/std/optparse.use lib/std/pathjoin.use lib/std/readall.use lib/std/strjoin.use lib/std/threadhooks.use lib/std/sjlj.use lib/std/extremum.use lib/std/endian.use lib/std/rand.use lib/std/sldup.use lib/std/sleep.use lib/std/wait.use lib/std/introspect.use lib/std/fltparse.use lib/std/fndup.use lib/std/strbuf.use lib/std/strreplace.use lib/std/assert.use lib/std/spork.use lib/std/slpush.use lib/std/strstrip.use lib/std/htab.use lib/std/hashfuncs.use lib/std/slput.use lib/std/fltbits.use lib/std/striter.use lib/std/types.use lib/std/cstrconv.use lib/std/units.use lib/std/backtrace.use lib/std/syswrap-ss.use lib/std/die.use lib/std/mk.use lib/std/hassuffix.use lib/std/utf.use lib/std/slurp.use lib/std/dialparse.use lib/std/bytealloc.use lib/std/mktemp.use lib/std/consts.use lib/std/chomp.use lib/std/dir.use lib/std/search.use lib/std/memops.use lib/std/fmtfuncs.use lib/std/strfind.use lib/std/env.use lib/std/dirname.use lib/std/clear.use lib/std/listen.use lib/std/sort.use lib/std/cmp.use lib/std/now.use lib/std/intparse.use lib/std/traits.use lib/std/mkpath.use lib/std/option.use lib/std/dial.use lib/std/errno.use lib/std/chartype.use lib/std/bigint.use lib/std/bitset.use lib/std/slcp.use lib/std/execvp.use
 	$pwd/6/6m -I lib/sys -I lib/std -I lib/bio -I lib/regex -I lib/thread mbld/types.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/regex/types.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/regex/interp.myr
--- a/mk/bootstrap/bootstrap+FreeBSD-amd64.sh
+++ b/mk/bootstrap/bootstrap+FreeBSD-amd64.sh
@@ -142,5 +142,5 @@
 	$pwd/6/6m -I lib/sys -I lib/std -I lib/bio -I lib/regex -I lib/thread mbld/test.myr
 	$pwd/6/6m -I lib/sys -I lib/std -I lib/bio -I lib/regex -I lib/thread mbld/deps.myr
 	$pwd/6/6m -I lib/sys -I lib/std -I lib/bio -I lib/regex -I lib/thread mbld/main.myr
-	ld --gc-sections -o mbld/mbld $pwd/rt/_myrrt.o mbld/deps.o mbld/main.o mbld/util.o mbld/cpufeatures.o mbld/libs.o mbld/syssel.o mbld/config.o mbld/opts.o mbld/subtest.o mbld/types.o mbld/test.o mbld/install.o mbld/parse.o mbld/build.o -Llib/thread -lthread -Llib/bio -lbio -Llib/regex -lregex -Llib/std -lstd -Llib/sys -lsys
+	ld -o mbld/mbld $pwd/rt/_myrrt.o mbld/deps.o mbld/main.o mbld/util.o mbld/cpufeatures.o mbld/libs.o mbld/syssel.o mbld/config.o mbld/opts.o mbld/subtest.o mbld/types.o mbld/test.o mbld/install.o mbld/parse.o mbld/build.o -Llib/thread -lthread -Llib/bio -lbio -Llib/regex -lregex -Llib/std -lstd -Llib/sys -lsys
 true
--- a/mk/bootstrap/bootstrap+NetBSD-amd64.sh
+++ b/mk/bootstrap/bootstrap+NetBSD-amd64.sh
@@ -7,18 +7,17 @@
 	as -g -o mbld/cpufeatures.o mbld/cpufeatures+posixy-x64.s
 	as -g -o lib/thread/atomic-impl.o lib/thread/atomic-impl+x64.s
 	as -g -o lib/std/getbp.o lib/std/getbp+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/option.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/traits.myr
+	$pwd/6/6m -I lib/sys lib/std/option.myr
+	$pwd/6/6m -I lib/sys lib/std/traits.myr
 	as -g -o lib/std/memops-impl.o lib/std/memops-impl+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/fltbits.myr
+	$pwd/6/6m -I lib/sys lib/std/fltbits.myr
 	as -g -o lib/std/sjlj-impl.o lib/std/sjlj-impl+posixy-x64.s
-	$pwd/6/6m -I . -I lib/sys lib/std/endian.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/extremum.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sjlj.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/swap.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slfill.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/clear.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/result.myr
+	$pwd/6/6m -I lib/sys lib/std/endian.myr
+	$pwd/6/6m -I lib/sys lib/std/extremum.myr
+	$pwd/6/6m -I lib/sys lib/std/sjlj+x64.myr
+	$pwd/6/6m -I lib/sys lib/std/swap.myr
+	$pwd/6/6m -I lib/sys lib/std/slfill.myr
+	$pwd/6/6m -I lib/sys lib/std/result.myr
 	as -g -o lib/sys/syscall.o lib/sys/syscall+netbsd-x64.s
 	$pwd/6/6m lib/sys/ifreq+netbsd.myr
 	$pwd/6/6m lib/sys/systypes.myr
@@ -27,84 +26,86 @@
 	$pwd/6/6m lib/sys/syserrno+netbsd.myr
 	ar -rcs lib/sys/libsys.a lib/sys/sys.o lib/sys/syserrno.o lib/sys/util.o lib/sys/systypes.o lib/sys/ifreq.o lib/sys/syscall.o
 	$pwd/muse/muse -o lib/sys/libsys.use -p sys lib/sys/sys.use lib/sys/syserrno.use lib/sys/systypes.use lib/sys/ifreq.use
-	$pwd/6/6m -I . -I lib/sys lib/std/errno.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/types.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strfind.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/memops.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sleq.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hassuffix.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/backtrace+x64.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/units.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/cstrconv.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/syswrap+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mkpath.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/now.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/consts.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/die.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slcp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/syswrap-ss+netbsd.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sleep.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/chartype.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/utf.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/cmp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sort.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/search.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hasprefix.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/chomp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/striter.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/intparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strstrip.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/introspect.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/varargs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/wait+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/threadhooks.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bytealloc.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/alloc.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slurp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mk.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slput.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/htab.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slpush.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strsplit.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strbuf.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sldup.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bigint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fltparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fltfmt.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dirname.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dir+netbsd.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/diriter.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fndup.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/strjoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/getcwd.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/slpop.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/sljoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/getint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/hashfuncs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/bitset.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/putint.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/readall.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/blat.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/writeall.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fmt.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/env+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/execvp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/spork.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/assert.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/rand.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/pathjoin.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/mktemp.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/optparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/netaddr.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/ipparse.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/fmtfuncs.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/resolve+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dialparse+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/dial+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/listen+posixy.myr
-	$pwd/6/6m -I . -I lib/sys lib/std/try.myr
-	ar -rcs lib/std/libstd.a lib/std/resolve.o lib/std/result.o lib/std/try.o lib/std/ipparse.o lib/std/alloc.o lib/std/sleq.o lib/std/putint.o lib/std/sljoin.o lib/std/slpop.o lib/std/syswrap.o lib/std/getint.o lib/std/strsplit.o lib/std/slfill.o lib/std/writeall.o lib/std/fltfmt.o lib/std/hasprefix.o lib/std/swap.o lib/std/fmt.o lib/std/netaddr.o lib/std/varargs.o lib/std/diriter.o lib/std/getcwd.o lib/std/blat.o lib/std/optparse.o lib/std/pathjoin.o lib/std/readall.o lib/std/strjoin.o lib/std/threadhooks.o lib/std/sjlj.o lib/std/extremum.o lib/std/endian.o lib/std/rand.o lib/std/sldup.o lib/std/sleep.o lib/std/wait.o lib/std/introspect.o lib/std/fltparse.o lib/std/fndup.o lib/std/strbuf.o lib/std/assert.o lib/std/spork.o lib/std/slpush.o lib/std/strstrip.o lib/std/htab.o lib/std/hashfuncs.o lib/std/slput.o lib/std/sjlj-impl.o lib/std/fltbits.o lib/std/striter.o lib/std/types.o lib/std/cstrconv.o lib/std/units.o lib/std/backtrace.o lib/std/syswrap-ss.o lib/std/die.o lib/std/mk.o lib/std/hassuffix.o lib/std/memops-impl.o lib/std/utf.o lib/std/slurp.o lib/std/dialparse.o lib/std/bytealloc.o lib/std/mktemp.o lib/std/consts.o lib/std/chomp.o lib/std/dir.o lib/std/search.o lib/std/memops.o lib/std/fmtfuncs.o lib/std/strfind.o lib/std/env.o lib/std/dirname.o lib/std/clear.o lib/std/listen.o lib/std/sort.o lib/std/cmp.o lib/std/now.o lib/std/intparse.o lib/std/traits.o lib/std/mkpath.o lib/std/option.o lib/std/dial.o lib/std/errno.o lib/std/chartype.o lib/std/bigint.o lib/std/bitset.o lib/std/getbp.o lib/std/slcp.o lib/std/execvp.o
-	$pwd/muse/muse -o lib/std/libstd.use -p std lib/std/resolve.use lib/std/result.use lib/std/try.use lib/std/ipparse.use lib/std/alloc.use lib/std/sleq.use lib/std/putint.use lib/std/sljoin.use lib/std/slpop.use lib/std/syswrap.use lib/std/getint.use lib/std/strsplit.use lib/std/slfill.use lib/std/writeall.use lib/std/fltfmt.use lib/std/hasprefix.use lib/std/swap.use lib/std/fmt.use lib/std/netaddr.use lib/std/varargs.use lib/std/diriter.use lib/std/getcwd.use lib/std/blat.use lib/std/optparse.use lib/std/pathjoin.use lib/std/readall.use lib/std/strjoin.use lib/std/threadhooks.use lib/std/sjlj.use lib/std/extremum.use lib/std/endian.use lib/std/rand.use lib/std/sldup.use lib/std/sleep.use lib/std/wait.use lib/std/introspect.use lib/std/fltparse.use lib/std/fndup.use lib/std/strbuf.use lib/std/assert.use lib/std/spork.use lib/std/slpush.use lib/std/strstrip.use lib/std/htab.use lib/std/hashfuncs.use lib/std/slput.use lib/std/fltbits.use lib/std/striter.use lib/std/types.use lib/std/cstrconv.use lib/std/units.use lib/std/backtrace.use lib/std/syswrap-ss.use lib/std/die.use lib/std/mk.use lib/std/hassuffix.use lib/std/utf.use lib/std/slurp.use lib/std/dialparse.use lib/std/bytealloc.use lib/std/mktemp.use lib/std/consts.use lib/std/chomp.use lib/std/dir.use lib/std/search.use lib/std/memops.use lib/std/fmtfuncs.use lib/std/strfind.use lib/std/env.use lib/std/dirname.use lib/std/clear.use lib/std/listen.use lib/std/sort.use lib/std/cmp.use lib/std/now.use lib/std/intparse.use lib/std/traits.use lib/std/mkpath.use lib/std/option.use lib/std/dial.use lib/std/errno.use lib/std/chartype.use lib/std/bigint.use lib/std/bitset.use lib/std/slcp.use lib/std/execvp.use
+	$pwd/6/6m -I lib/sys lib/std/errno.myr
+	$pwd/6/6m -I lib/sys lib/std/types.myr
+	$pwd/6/6m -I lib/sys lib/std/strfind.myr
+	$pwd/6/6m -I lib/sys lib/std/memops.myr
+	$pwd/6/6m -I lib/sys lib/std/clear.myr
+	$pwd/6/6m -I lib/sys lib/std/sleq.myr
+	$pwd/6/6m -I lib/sys lib/std/hassuffix.myr
+	$pwd/6/6m -I lib/sys lib/std/backtrace+x64.myr
+	$pwd/6/6m -I lib/sys lib/std/units.myr
+	$pwd/6/6m -I lib/sys lib/std/cstrconv.myr
+	$pwd/6/6m -I lib/sys lib/std/syswrap+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/mkpath.myr
+	$pwd/6/6m -I lib/sys lib/std/now.myr
+	$pwd/6/6m -I lib/sys lib/std/consts.myr
+	$pwd/6/6m -I lib/sys lib/std/die.myr
+	$pwd/6/6m -I lib/sys lib/std/slcp.myr
+	$pwd/6/6m -I lib/sys lib/std/syswrap-ss+netbsd.myr
+	$pwd/6/6m -I lib/sys lib/std/sleep.myr
+	$pwd/6/6m -I lib/sys lib/std/chartype.myr
+	$pwd/6/6m -I lib/sys lib/std/utf.myr
+	$pwd/6/6m -I lib/sys lib/std/cmp.myr
+	$pwd/6/6m -I lib/sys lib/std/sort.myr
+	$pwd/6/6m -I lib/sys lib/std/search.myr
+	$pwd/6/6m -I lib/sys lib/std/hasprefix.myr
+	$pwd/6/6m -I lib/sys lib/std/chomp.myr
+	$pwd/6/6m -I lib/sys lib/std/striter.myr
+	$pwd/6/6m -I lib/sys lib/std/intparse.myr
+	$pwd/6/6m -I lib/sys lib/std/strstrip.myr
+	$pwd/6/6m -I lib/sys lib/std/introspect.myr
+	$pwd/6/6m -I lib/sys lib/std/varargs.myr
+	$pwd/6/6m -I lib/sys lib/std/wait+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/threadhooks.myr
+	$pwd/6/6m -I lib/sys lib/std/bytealloc.myr
+	$pwd/6/6m -I lib/sys lib/std/alloc.myr
+	$pwd/6/6m -I lib/sys lib/std/slurp.myr
+	$pwd/6/6m -I lib/sys lib/std/mk.myr
+	$pwd/6/6m -I lib/sys lib/std/slput.myr
+	$pwd/6/6m -I lib/sys lib/std/htab.myr
+	$pwd/6/6m -I lib/sys lib/std/slpush.myr
+	$pwd/6/6m -I lib/sys lib/std/strsplit.myr
+	$pwd/6/6m -I lib/sys lib/std/strbuf.myr
+	$pwd/6/6m -I lib/sys lib/std/sldup.myr
+	$pwd/6/6m -I lib/sys lib/std/bigint.myr
+	$pwd/6/6m -I lib/sys lib/std/fltparse.myr
+	$pwd/6/6m -I lib/sys lib/std/fltfmt.myr
+	$pwd/6/6m -I lib/sys lib/std/dirname.myr
+	$pwd/6/6m -I lib/sys lib/std/dir+netbsd.myr
+	$pwd/6/6m -I lib/sys lib/std/diriter.myr
+	$pwd/6/6m -I lib/sys lib/std/fndup.myr
+	$pwd/6/6m -I lib/sys lib/std/strjoin.myr
+	$pwd/6/6m -I lib/sys lib/std/getcwd.myr
+	$pwd/6/6m -I lib/sys lib/std/slpop.myr
+	$pwd/6/6m -I lib/sys lib/std/sljoin.myr
+	$pwd/6/6m -I lib/sys lib/std/strreplace.myr
+	$pwd/6/6m -I lib/sys lib/std/getint.myr
+	$pwd/6/6m -I lib/sys lib/std/hashfuncs.myr
+	$pwd/6/6m -I lib/sys lib/std/bitset.myr
+	$pwd/6/6m -I lib/sys lib/std/putint.myr
+	$pwd/6/6m -I lib/sys lib/std/readall.myr
+	$pwd/6/6m -I lib/sys lib/std/blat.myr
+	$pwd/6/6m -I lib/sys lib/std/writeall.myr
+	$pwd/6/6m -I lib/sys lib/std/fmt.myr
+	$pwd/6/6m -I lib/sys lib/std/env+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/execvp.myr
+	$pwd/6/6m -I lib/sys lib/std/spork.myr
+	$pwd/6/6m -I lib/sys lib/std/assert.myr
+	$pwd/6/6m -I lib/sys lib/std/rand.myr
+	$pwd/6/6m -I lib/sys lib/std/pathjoin.myr
+	$pwd/6/6m -I lib/sys lib/std/mktemp.myr
+	$pwd/6/6m -I lib/sys lib/std/optparse.myr
+	$pwd/6/6m -I lib/sys lib/std/netaddr.myr
+	$pwd/6/6m -I lib/sys lib/std/ipparse.myr
+	$pwd/6/6m -I lib/sys lib/std/fmtfuncs.myr
+	$pwd/6/6m -I lib/sys lib/std/resolve+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/dialparse+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/dial+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/listen+posixy.myr
+	$pwd/6/6m -I lib/sys lib/std/try.myr
+	ar -rcs lib/std/libstd.a lib/std/resolve.o lib/std/result.o lib/std/try.o lib/std/ipparse.o lib/std/alloc.o lib/std/sleq.o lib/std/putint.o lib/std/sljoin.o lib/std/slpop.o lib/std/syswrap.o lib/std/getint.o lib/std/strsplit.o lib/std/slfill.o lib/std/writeall.o lib/std/fltfmt.o lib/std/hasprefix.o lib/std/swap.o lib/std/fmt.o lib/std/netaddr.o lib/std/varargs.o lib/std/diriter.o lib/std/getcwd.o lib/std/blat.o lib/std/optparse.o lib/std/pathjoin.o lib/std/readall.o lib/std/strjoin.o lib/std/threadhooks.o lib/std/sjlj.o lib/std/extremum.o lib/std/endian.o lib/std/rand.o lib/std/sldup.o lib/std/sleep.o lib/std/wait.o lib/std/introspect.o lib/std/fltparse.o lib/std/fndup.o lib/std/strbuf.o lib/std/strreplace.o lib/std/assert.o lib/std/spork.o lib/std/slpush.o lib/std/strstrip.o lib/std/htab.o lib/std/hashfuncs.o lib/std/slput.o lib/std/sjlj-impl.o lib/std/fltbits.o lib/std/striter.o lib/std/types.o lib/std/cstrconv.o lib/std/units.o lib/std/backtrace.o lib/std/syswrap-ss.o lib/std/die.o lib/std/mk.o lib/std/hassuffix.o lib/std/memops-impl.o lib/std/utf.o lib/std/slurp.o lib/std/dialparse.o lib/std/bytealloc.o lib/std/mktemp.o lib/std/consts.o lib/std/chomp.o lib/std/dir.o lib/std/search.o lib/std/memops.o lib/std/fmtfuncs.o lib/std/strfind.o lib/std/env.o lib/std/dirname.o lib/std/clear.o lib/std/listen.o lib/std/sort.o lib/std/cmp.o lib/std/now.o lib/std/intparse.o lib/std/traits.o lib/std/mkpath.o lib/std/option.o lib/std/dial.o lib/std/errno.o lib/std/chartype.o lib/std/bigint.o lib/std/bitset.o lib/std/getbp.o lib/std/slcp.o lib/std/execvp.o
+	$pwd/muse/muse -o lib/std/libstd.use -p std lib/std/resolve.use lib/std/result.use lib/std/try.use lib/std/ipparse.use lib/std/alloc.use lib/std/sleq.use lib/std/putint.use lib/std/sljoin.use lib/std/slpop.use lib/std/syswrap.use lib/std/getint.use lib/std/strsplit.use lib/std/slfill.use lib/std/writeall.use lib/std/fltfmt.use lib/std/hasprefix.use lib/std/swap.use lib/std/fmt.use lib/std/netaddr.use lib/std/varargs.use lib/std/diriter.use lib/std/getcwd.use lib/std/blat.use lib/std/optparse.use lib/std/pathjoin.use lib/std/readall.use lib/std/strjoin.use lib/std/threadhooks.use lib/std/sjlj.use lib/std/extremum.use lib/std/endian.use lib/std/rand.use lib/std/sldup.use lib/std/sleep.use lib/std/wait.use lib/std/introspect.use lib/std/fltparse.use lib/std/fndup.use lib/std/strbuf.use lib/std/strreplace.use lib/std/assert.use lib/std/spork.use lib/std/slpush.use lib/std/strstrip.use lib/std/htab.use lib/std/hashfuncs.use lib/std/slput.use lib/std/fltbits.use lib/std/striter.use lib/std/types.use lib/std/cstrconv.use lib/std/units.use lib/std/backtrace.use lib/std/syswrap-ss.use lib/std/die.use lib/std/mk.use lib/std/hassuffix.use lib/std/utf.use lib/std/slurp.use lib/std/dialparse.use lib/std/bytealloc.use lib/std/mktemp.use lib/std/consts.use lib/std/chomp.use lib/std/dir.use lib/std/search.use lib/std/memops.use lib/std/fmtfuncs.use lib/std/strfind.use lib/std/env.use lib/std/dirname.use lib/std/clear.use lib/std/listen.use lib/std/sort.use lib/std/cmp.use lib/std/now.use lib/std/intparse.use lib/std/traits.use lib/std/mkpath.use lib/std/option.use lib/std/dial.use lib/std/errno.use lib/std/chartype.use lib/std/bigint.use lib/std/bitset.use lib/std/slcp.use lib/std/execvp.use
 	$pwd/6/6m -I lib/sys -I lib/std -I lib/bio -I lib/regex -I lib/thread mbld/types.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/regex/types.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/regex/interp.myr
--- a/mk/bootstrap/bootstrap+OpenBSD-amd64.sh
+++ b/mk/bootstrap/bootstrap+OpenBSD-amd64.sh
@@ -24,7 +24,7 @@
 	$pwd/6/6m lib/sys/systypes.myr
 	as -g -o lib/sys/util.o lib/sys/util+posixy-x64.s
 	$pwd/6/6m lib/sys/syserrno+openbsd.myr
-	$pwd/6/6m lib/sys/sys+openbsd:6.1-x64.myr
+	$pwd/6/6m lib/sys/sys+openbsd:6.2-x64.myr
 	ar -rcs lib/sys/libsys.a lib/sys/sys.o lib/sys/syserrno.o lib/sys/util.o lib/sys/systypes.o lib/sys/ifreq.o lib/sys/syscall.o
 	$pwd/muse/muse -o lib/sys/libsys.use -p sys lib/sys/sys.use lib/sys/syserrno.use lib/sys/systypes.use lib/sys/ifreq.use
 	$pwd/6/6m -I lib/sys lib/std/errno.myr
@@ -123,7 +123,7 @@
 	$pwd/6/6m -I lib/sys -I lib/std lib/thread/ncpu+openbsd.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/thread/common.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/thread/atomic.myr
-	$pwd/6/6m -I lib/sys -I lib/std lib/thread/mutex.myr
+	$pwd/6/6m -I lib/sys -I lib/std lib/thread/mutex+openbsd:6.2.myr
 	$pwd/6/6m -I lib/sys -I lib/std lib/thread/hookstd.myr
 	ar -rcs lib/thread/libthread.a lib/thread/mutex.o lib/thread/atomic.o lib/thread/atomic-impl.o lib/thread/hookstd.o lib/thread/common.o lib/thread/ncpu.o lib/thread/exit.o lib/thread/spawn.o
 	$pwd/muse/muse -o lib/thread/libthread.use -p thread lib/thread/mutex.use lib/thread/atomic.use lib/thread/hookstd.use lib/thread/common.use lib/thread/ncpu.use lib/thread/spawn.use