I have committed a patch to libgo to update it to the weekly.2011-12-22 release. As usual I am not including all the changes here, only the ones to files which are specific to gccgo. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
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" }