diff -r 27d9b39a0e27 libgo/MERGE
--- a/libgo/MERGE	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/MERGE	Thu Jan 12 20:57:40 2012 -0800
@@ -1,4 +1,4 @@
-82fdc445f2ff
+4a8268927758
 
 The first line of this file holds the Mercurial revision number of the
 last merge done from the master library sources.
diff -r 27d9b39a0e27 libgo/Makefile.am
--- a/libgo/Makefile.am	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/Makefile.am	Thu Jan 12 20:57:40 2012 -0800
@@ -279,8 +279,7 @@
 	image/gif.gox \
 	image/jpeg.gox \
 	image/png.gox \
-	image/tiff.gox \
-	image/ycbcr.gox
+	image/tiff.gox
 
 toolexeclibgoindexdir = $(toolexeclibgodir)/index
 
@@ -586,7 +585,8 @@
 	go/image/format.go \
 	go/image/geom.go \
 	go/image/image.go \
-	go/image/names.go
+	go/image/names.go \
+	go/image/ycbcr.go
 
 go_io_files = \
 	go/io/multi.go \
@@ -654,10 +654,15 @@
 go_net_fd_os_file = go/net/fd_linux.go
 go_net_newpollserver_file = go/net/newpollserver.go
 else # !LIBGO_IS_LINUX && !LIBGO_IS_RTEMS
+if LIBGO_IS_NETBSD
+go_net_fd_os_file = go/net/fd_netbsd.go
+go_net_newpollserver_file = go/net/newpollserver.go
+else # !LIBGO_IS_NETBSD && !LIBGO_IS_LINUX && !LIBGO_IS_RTEMS
 # By default use select with pipes.  Most systems should have
 # something better.
 go_net_fd_os_file = go/net/fd_select.go
 go_net_newpollserver_file = go/net/newpollserver.go
+endif # !LIBGO_IS_NETBSD
 endif # !LIBGO_IS_LINUX
 endif # !LIBGO_IS_RTEMS
 
@@ -688,8 +693,12 @@
 if LIBGO_IS_LINUX
 go_net_interface_file = go/net/interface_linux.go
 else
+if LIBGO_IS_NETBSD
+go_net_interface_file = go/net/interface_netbsd.go
+else
 go_net_interface_file = go/net/interface_stub.go
 endif
+endif
 
 go_net_files = \
 	go/net/cgo_unix.go \
@@ -845,6 +854,7 @@
 	go/strconv/atof.go \
 	go/strconv/atoi.go \
 	go/strconv/decimal.go \
+	go/strconv/extfloat.go \
 	go/strconv/ftoa.go \
 	go/strconv/itoa.go \
 	go/strconv/quote.go
@@ -880,7 +890,8 @@
 go_testing_files = \
 	go/testing/benchmark.go \
 	go/testing/example.go \
-	go/testing/testing.go
+	go/testing/testing.go \
+	go/testing/wrapper.go
 
 go_time_files = \
 	go/time/format.go \
@@ -1197,7 +1208,9 @@
 go_go_doc_files = \
 	go/go/doc/comment.go \
 	go/go/doc/doc.go \
-	go/go/doc/example.go
+	go/go/doc/example.go \
+	go/go/doc/exports.go \
+	go/go/doc/filter.go
 go_go_parser_files = \
 	go/go/parser/interface.go \
 	go/go/parser/parser.go
@@ -1241,7 +1254,8 @@
 	go/image/bmp/reader.go
 
 go_image_color_files = \
-	go/image/color/color.go
+	go/image/color/color.go \
+	go/image/color/ycbcr.go
 
 go_image_draw_files = \
 	go/image/draw/draw.go
@@ -1266,9 +1280,6 @@
 	go/image/tiff/consts.go \
 	go/image/tiff/reader.go
 
-go_image_ycbcr_files = \
-	go/image/ycbcr/ycbcr.go
-
 go_index_suffixarray_files = \
 	go/index/suffixarray/qsufsort.go \
 	go/index/suffixarray/suffixarray.go
@@ -1318,6 +1329,7 @@
 	go/net/http/filetransport.go \
 	go/net/http/fs.go \
 	go/net/http/header.go \
+	go/net/http/jar.go \
 	go/net/http/lex.go \
 	go/net/http/request.go \
 	go/net/http/response.go \
@@ -1761,7 +1773,6 @@
 	image/jpeg.lo \
 	image/png.lo \
 	image/tiff.lo \
-	image/ycbcr.lo \
 	index/suffixarray.lo \
 	io/ioutil.lo \
 	log/syslog.lo \
@@ -3066,16 +3077,6 @@
 	@$(CHECK)
 .PHONY: image/tiff/check
 
-@go_include@ image/ycbcr.lo.dep
-image/ycbcr.lo.dep: $(go_image_ycbcr_files)
-	$(BUILDDEPS)
-image/ycbcr.lo: $(go_image_ycbcr_files)
-	$(BUILDPACKAGE)
-image/ycbcr/check: $(CHECK_DEPS)
-	@$(MKDIR_P) image/ycbcr
-	@$(CHECK)
-.PHONY: image/ycbcr/check
-
 @go_include@ index/suffixarray.lo.dep
 index/suffixarray.lo.dep: $(go_index_suffixarray_files)
 	$(BUILDDEPS)
@@ -3728,8 +3729,6 @@
 	$(BUILDGOX)
 image/tiff.gox: image/tiff.lo
 	$(BUILDGOX)
-image/ycbcr.gox: image/ycbcr.lo
-	$(BUILDGOX)
 
 index/suffixarray.gox: index/suffixarray.lo
 	$(BUILDGOX)
@@ -3938,11 +3937,11 @@
 	hash/crc32/check \
 	hash/crc64/check \
 	hash/fnv/check \
+	image/color/check \
 	image/draw/check \
 	image/jpeg/check \
 	image/png/check \
 	image/tiff/check \
-	image/ycbcr/check \
 	index/suffixarray/check \
 	io/ioutil/check \
 	log/syslog/check \
diff -r 27d9b39a0e27 libgo/configure.ac
--- a/libgo/configure.ac	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/configure.ac	Thu Jan 12 20:57:40 2012 -0800
@@ -134,6 +134,7 @@
   *-*-freebsd*)  is_freebsd=yes; GOOS=freebsd ;;
   *-*-irix6*)    is_irix=yes;    GOOS=irix ;;
   *-*-linux*)    is_linux=yes;   GOOS=linux ;;
+  *-*-netbsd*)	 is_netbsd=yes;  GOOS=netbsd ;;
   *-*-rtems*)    is_rtems=yes;   GOOS=rtems ;;
   *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
 esac
@@ -141,6 +142,7 @@
 AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
 AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
 AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
+AM_CONDITIONAL(LIBGO_IS_NETBSD, test $is_netbsd = yes)
 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
 AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
 AC_SUBST(GOOS)
diff -r 27d9b39a0e27 libgo/merge.sh
--- a/libgo/merge.sh	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/merge.sh	Thu Jan 12 20:57:40 2012 -0800
@@ -168,8 +168,8 @@
   merge_c $f $f
 done
 
-merge_c linux/thread.c thread-linux.c
-merge_c linux/mem.c mem.c
+merge_c thread_linux.c thread-linux.c
+merge_c mem_linux.c mem.c
 
 (cd ${OLDDIR}/src/pkg && find . -name '*.go' -print) | while read f; do
   oldfile=${OLDDIR}/src/pkg/$f
diff -r 27d9b39a0e27 libgo/runtime/goc2c.c
--- a/libgo/runtime/goc2c.c	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/goc2c.c	Thu Jan 12 20:57:40 2012 -0800
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build ignore
+
 /*
  * Translate a .goc file into a .c file.  A .goc file is a combination
  * of a limited form of Go with C.
@@ -774,6 +776,7 @@
 		}
 	}
 
+	printf("// AUTO-GENERATED by autogen.sh; DO NOT EDIT\n\n");
 	process_file();
 	exit(0);
 }
diff -r 27d9b39a0e27 libgo/runtime/lock_futex.c
--- a/libgo/runtime/lock_futex.c	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/lock_futex.c	Thu Jan 12 20:57:40 2012 -0800
@@ -2,17 +2,19 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build freebsd linux
+
 #include "runtime.h"
 
 // This implementation depends on OS-specific implementations of
 //
-//	runtime.futexsleep(uint32 *addr, uint32 val, int64 ns)
+//	runtime_futexsleep(uint32 *addr, uint32 val, int64 ns)
 //		Atomically,
 //			if(*addr == val) sleep
 //		Might be woken up spuriously; that's allowed.
 //		Don't sleep longer than ns; ns < 0 means forever.
 //
-//	runtime.futexwakeup(uint32 *addr, uint32 cnt)
+//	runtime_futexwakeup(uint32 *addr, uint32 cnt)
 //		If any procs are sleeping on addr, wake up at most cnt.
 
 enum
diff -r 27d9b39a0e27 libgo/runtime/lock_sema.c
--- a/libgo/runtime/lock_sema.c	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/lock_sema.c	Thu Jan 12 20:57:40 2012 -0800
@@ -2,21 +2,23 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build darwin netbsd openbsd plan9 windows
+
 #include "runtime.h"
 
 // This implementation depends on OS-specific implementations of
 //
-//	uintptr runtime.semacreate(void)
+//	uintptr runtime_semacreate(void)
 //		Create a semaphore, which will be assigned to m->waitsema.
 //		The zero value is treated as absence of any semaphore,
 //		so be sure to return a non-zero value.
 //
-//	int32 runtime.semasleep(int64 ns)
+//	int32 runtime_semasleep(int64 ns)
 //		If ns < 0, acquire m->waitsema and return 0.
 //		If ns >= 0, try to acquire m->waitsema for at most ns nanoseconds.
 //		Return 0 if the semaphore was acquired, -1 if interrupted or timed out.
 //
-//	int32 runtime.semawakeup(M *mp)
+//	int32 runtime_semawakeup(M *mp)
 //		Wake up mp, which is or will soon be sleeping on mp->waitsema.
 //
 
diff -r 27d9b39a0e27 libgo/runtime/mprof.goc
--- a/libgo/runtime/mprof.goc	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/mprof.goc	Thu Jan 12 20:57:40 2012 -0800
@@ -12,8 +12,6 @@
 #include "defs.h"
 #include "go-type.h"
 
-typedef struct __go_open_array Slice;
-
 // NOTE(rsc): Everything here could use cas if contention became an issue.
 static Lock proflock;
 
diff -r 27d9b39a0e27 libgo/runtime/runtime.h
--- a/libgo/runtime/runtime.h	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/runtime.h	Thu Jan 12 20:57:40 2012 -0800
@@ -196,7 +196,7 @@
 
 /* Macros.  */
 
-#ifdef __WINDOWS__
+#ifdef GOOS_windows
 enum {
    Windows = 1
 };
@@ -343,7 +343,6 @@
 #define runtime_printf printf
 #define runtime_malloc(s) __go_alloc(s)
 #define runtime_free(p) __go_free(p)
-#define runtime_memclr(buf, size) __builtin_memset((buf), 0, (size))
 #define runtime_strcmp(s1, s2) __builtin_strcmp((s1), (s2))
 #define runtime_mcmp(a, b, s) __builtin_memcmp((a), (b), (s))
 #define runtime_memmove(a, b, s) __builtin_memmove((a), (b), (s))
@@ -352,9 +351,6 @@
 void	free(void *v);
 struct __go_func_type;
 bool	runtime_addfinalizer(void*, void(*fn)(void*), const struct __go_func_type *);
-#define runtime_mmap mmap
-#define runtime_munmap munmap
-#define runtime_madvise madvise
 #define runtime_cas(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
 #define runtime_casp(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
 #define runtime_xadd(p, v) __sync_add_and_fetch (p, v)
@@ -384,6 +380,14 @@
 void	runtime_LockOSThread(void) __asm__("libgo_runtime.runtime.LockOSThread");
 void	runtime_UnlockOSThread(void) __asm__("libgo_runtime.runtime.UnlockOSThread");
 
+/*
+ * low level C-called
+ */
+#define runtime_mmap mmap
+#define runtime_munmap munmap
+#define runtime_madvise madvise
+#define runtime_memclr(buf, size) __builtin_memset((buf), 0, (size))
+
 struct __go_func_type;
 void reflect_call(const struct __go_func_type *, const void *, _Bool, _Bool,
 		  void **, void **)
diff -r 27d9b39a0e27 libgo/runtime/string.goc
--- a/libgo/runtime/string.goc	Wed Jan 11 17:09:03 2012 -0800
+++ b/libgo/runtime/string.goc	Thu Jan 12 20:57:40 2012 -0800
@@ -4,6 +4,9 @@
 
 package runtime
 #include "runtime.h"
+#include "arch.h"
+#include "malloc.h"
+
 #define charntorune(pv, str, len) __go_get_rune(str, len, pv)
 
 int32
Index: gcc/testsuite/go.test/test/fixedbugs/bug229.go
===================================================================
--- gcc/testsuite/go.test/test/fixedbugs/bug229.go	(revision 182418)
+++ gcc/testsuite/go.test/test/fixedbugs/bug229.go	(working copy)
@@ -12,9 +12,9 @@ func main() {
 	var t testing.T
 	
 	// make sure error mentions that
-	// ch is unexported, not just "ch not found".
+	// name is unexported, not just "name not found".
 
-	t.ch = nil	// ERROR "unexported"
+	t.name = nil	// ERROR "unexported"
 	
 	println(testing.anyLowercaseName("asdf"))	// ERROR "unexported" "undefined: testing.anyLowercaseName"
 }
