1. 05 Mar, 2014 9 commits
    • Russ Cox's avatar
      cmd/dist: use vfprintf on Windows, same as on Unix · 3f1374fc
      Russ Cox authored
      Apparently, the Windows routines sometimes fail to generate output.
      Copy the Unix stdio-based implementations instead.
      
      Suggested by Pietro Gagliardi in CL 65280043 but that CL
      seems to have been abandoned.
      
      Fixes #7242.
      
      LGTM=bradfitz
      R=golang-codereviews, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/71550044
      3f1374fc
    • Chris Manghane's avatar
      cmd/gc: allow append and complex builtins to accept 2-result call expression as first argument. · 671cc6ef
      Chris Manghane authored
      Fixes #5793.
      
      LGTM=rsc
      R=rsc, adonovan, dave
      CC=golang-codereviews
      https://golang.org/cl/13367051
      671cc6ef
    • Jan Ziak's avatar
      cmd/dist: respect system CFLAGS/LDFLAGS · 202e6153
      Jan Ziak authored
      Update #6882.
      
      LGTM=rsc
      R=golang-codereviews, rsc
      CC=golang-codereviews
      https://golang.org/cl/69860055
      202e6153
    • Russ Cox's avatar
      runtime: handle Go calls C calls Go panic correctly on windows/386 · 1249d3a5
      Russ Cox authored
      32-bit Windows uses "structured exception handling" (SEH) to
      handle hardware faults: that there is a per-thread linked list
      of fault handlers maintained in user space instead of
      something like Unix's signal handlers. The structures in the
      linked list are required to live on the OS stack, and the
      usual discipline is that the function that pushes a record
      (allocated from the current stack frame) onto the list pops
      that record before returning. Not to pop the entry before
      returning creates a dangling pointer error: the list head
      points to a stack frame that no longer exists.
      
      Go pushes an SEH record in the top frame of every OS thread,
      and that record suffices for all Go execution on that thread,
      at least until cgo gets involved.
      
      If we call into C using cgo, that called C code may push its
      own SEH records, but by the convention it must pop them before
      returning back to the Go code. We assume it does, and that's
      fine.
      
      If the C code calls back into Go, we want the Go SEH handler
      to become active again, not whatever C has set up. So
      runtime.callbackasm1, which handles a call from C back into
      Go, pushes a new SEH record before calling the Go code and
      pops it when the Go code returns. That's also fine.
      
      It can happen that when Go calls C calls Go like this, the
      inner Go code panics. We allow a defer in the outer Go to
      recover the panic, effectively wiping not only the inner Go
      frames but also the C calls. This sequence was not popping the
      SEH stack up to what it was before the cgo calls, so it was
      creating the dangling pointer warned about above. When
      eventually the m stack was used enough to overwrite the
      dangling SEH records, the SEH chain was lost, and any future
      panic would not end up in Go's handler.
      
      The bug in TestCallbackPanic and friends was thus creating a
      situation where TestSetPanicOnFault - which causes a hardware
      fault - would not find the Go fault handler and instead crash
      the binary.
      
      Add checks to TestCallbackPanicLocked to diagnose the mistake
      in that test instead of leaving a bad state for another test
      case to stumble over.
      
      Fix bug by restoring SEH chain during deferred "endcgo"
      cleanup.
      
      This bug is likely present in Go 1.2.1, but since it depends
      on Go calling C calling Go, with the inner Go panicking and
      the outer Go recovering the panic, it seems not important
      enough to bother fixing before Go 1.3. Certainly no one has
      complained.
      
      Fixes #7470.
      
      LGTM=alex.brainman
      R=golang-codereviews, alex.brainman
      CC=golang-codereviews, iant, khr
      https://golang.org/cl/71440043
      1249d3a5
    • Joel Sing's avatar
      syscall: regenerate z-files for dragonfly · 4e7049bb
      Joel Sing authored
      Regenerate z-files for DragonFly BSD 3.6.
      
      F_DUP_FD_CLOEXEC is now supported, so remove the zero value constant
      from types_dragonfly.go so that we use the generated value from the
      z-files.
      
      LGTM=mikioh.mikioh
      R=golang-codereviews, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/70080047
      4e7049bb
    • Joel Sing's avatar
      syscall: fix mksysnum_dragonfly.pl · b586f56e
      Joel Sing authored
      The format of the DragonFly BSD syscalls.master file has changed
      slightly - update mksysnum_dragonfly.pl to match.
      
      LGTM=mikioh.mikioh
      R=golang-codereviews, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/71460044
      b586f56e
    • Joel Sing's avatar
      net: disable "udp" to IPv6 unicast address loopback test on dragonfly · 18019dff
      Joel Sing authored
      Disable the "udp" to IPv6 unicast address on the loopback interface
      test under DragonFly BSD. This currently returns a local address of
      0.0.0.1, rather than an IPv6 address with zone identifier.
      
      Update #7473
      
      LGTM=mikioh.mikioh
      R=golang-codereviews, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/71500044
      18019dff
    • Joel Sing's avatar
      net: fix non-blocking connect handling on dragonfly · 734d4637
      Joel Sing authored
      Performing multiple connect system calls on a non-blocking socket
      under DragonFly BSD does not necessarily result in errors from earlier
      connect calls being returned, particularly if we are connecting to
      localhost. Instead, once netpoll tells us that the socket is ready,
      get the SO_ERROR socket option to see if the connection succeeded
      or failed.
      
      Fixes #7474
      
      LGTM=mikioh.mikioh
      R=mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/69340044
      734d4637
    • Patrick Mézard's avatar
      os: try openFile before openDir in windows os.OpenFile · 9a7cd11b
      Patrick Mézard authored
      Logging calls when running "go install -a std" turns:
      
        547  openDir succeeded
        3593 openDir failed and fell back to openFile
        3592 openFile succeeded
        1    both failed
      
      into:
      
        3592 openFile succeeded
        548  openFile failed and fell back
        547  openDir succeeded
        1    both failed
      
      Here the change trades 3593 failed openDir for 548 failed openFile.
      
      Fix issue 7426.
      
      LGTM=alex.brainman
      R=golang-codereviews, alex.brainman, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/70480044
      9a7cd11b
  2. 04 Mar, 2014 30 commits
  3. 03 Mar, 2014 1 commit