1. 22 Nov, 2014 2 commits
  2. 21 Nov, 2014 11 commits
  3. 20 Nov, 2014 6 commits
  4. 19 Nov, 2014 6 commits
    • Russ Cox's avatar
      runtime: remove assumption that noptrdata data bss noptrbss are ordered and contiguous · 378c2515
      Russ Cox authored
      The assumption can be violated by external linkers reordering them or
      inserting non-Go sections in between them. I looked briefly at trying
      to write out the _go_.o in external linking mode in a way that forced
      the ordering, but no matter what there's no way to force Go's data
      and Go's bss to be next to each other. If there is any data or bss from
      non-Go objects, it's very likely to get stuck in between them.
      
      Instead, rewrite the two places we know about that make the assumption.
      I grepped for noptrdata to look for more and didn't find any.
      
      The added race test (os/exec in external linking mode) fails without
      the changes in the runtime. It crashes with an invalid pointer dereference.
      
      Fixes #9133.
      
      LGTM=dneil
      R=dneil
      CC=dvyukov, golang-codereviews, iant
      https://golang.org/cl/179980043
      378c2515
    • Austin Clements's avatar
      [dev.cc] runtime: add explicit siginfo.si_addr field · f4a52545
      Austin Clements authored
      struct siginfo_t's si_addr field is part of a union.
      Previously, we represented this union in Go using an opaque
      byte array and accessed the si_addr field using unsafe (and
      wrong on 386 and arm!) pointer arithmetic.  Since si_addr is
      the only field we use from this union, this replaces the
      opaque byte array with an explicit declaration of the si_addr
      field and accesses it directly.
      
      LGTM=minux, rsc
      R=rsc, minux
      CC=golang-codereviews
      https://golang.org/cl/179970044
      f4a52545
    • Austin Clements's avatar
      [dev.cc] runtime: decode power64 branch instructions the way the CPU does · d11a4259
      Austin Clements authored
      Previously, this used the top 8 bits of an instruction as a
      sort-of opcode and ignored the top two bits of the relative
      PC.  This worked because these jumps are always negative and
      never big enough for the top two bits of the relative PC (also
      the bottom 2 bits of the sort-of opcode) to be anything other
      than 0b11, but the code is confusing because it doesn't match
      the actual structure of the instruction.
      
      Instead, use the real 6 bit opcode and use all 24 bits of
      relative PC.
      
      LGTM=rsc
      R=rsc, dave
      CC=golang-codereviews
      https://golang.org/cl/179960043
      d11a4259
    • Russ Cox's avatar
      undo CL 131750044 / 2d6d44ceb80e · 2d53d6b5
      Russ Cox authored
      Breaks reading from stdin in parent after exec with SysProcAttr{Setpgid: true}.
      
      package main
      
      import (
              "fmt"
              "os"
              "os/exec"
              "syscall"
      )
      
      func main() {
              cmd := exec.Command("true")
              cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
              cmd.Run()
      
              fmt.Printf("Hit enter:")
              os.Stdin.Read(make([]byte, 100))
              fmt.Printf("Bye\n")
      }
      
      In go1.3, I type enter at the prompt and the program exits.
      With the CL being rolled back, the program wedges at the
      prompt.
      
      ««« original CL description
      syscall: SysProcAttr job control changes
      
      Making the child's process group the foreground process group and
      placing the child in a specific process group involves co-ordination
      between the parent and child that must be done post-fork but pre-exec.
      
      LGTM=iant
      R=golang-codereviews, gobot, iant, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/131750044
      
      »»»
      
      LGTM=minux, dneil
      R=dneil, minux
      CC=golang-codereviews, iant, michael.p.macinnis
      https://golang.org/cl/174450043
      2d53d6b5
    • Austin Clements's avatar
      [dev.cc] runtime: allow more address bits in lfstack on Power64 · b76e8360
      Austin Clements authored
      Previously, lfstack assumed Linux limited user space addresses
      to 43 bits on Power64 based on a paper from 2001.  It turns
      out the limit is now 46 bits, so lfstack was truncating
      pointers.
      
      Raise the limit to 48 bits (for some future proofing and to
      make it match amd64) and add a self-test that will fail in a
      useful way if ever unpack(pack(x)) != x.
      
      With this change, dev.cc passes all.bash on power64le.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/174430043
      b76e8360
    • Alex Brainman's avatar
  5. 18 Nov, 2014 11 commits
  6. 17 Nov, 2014 4 commits