1. 12 Feb, 2018 11 commits
  2. 11 Feb, 2018 1 commit
  3. 09 Feb, 2018 3 commits
  4. 08 Feb, 2018 1 commit
  5. 07 Feb, 2018 7 commits
    • Russ Cox's avatar
      doc: document Go 1.9.4 and Go 1.8.7 · 104445e3
      Russ Cox authored
      Change-Id: I50928e7747f43858fc863b53cfb5b63e208d6932
      Reviewed-on: https://team-review.git.corp.google.com/213447Reviewed-by: 's avatarAndrew Bonventre <andybons@google.com>
      104445e3
    • Russ Cox's avatar
      [release-branch.go1.10] go1.10rc2 · 20e228f2
      Russ Cox authored
      Change-Id: I393ff9e8599d20f71545ab9f4191993f5d6fa5a4
      Reviewed-on: https://team-review.git.corp.google.com/213247Reviewed-by: 's avatarAndrew Bonventre <andybons@google.com>
      20e228f2
    • Russ Cox's avatar
      [release-branch.go1.10] all: merge master into release-branch.go1.10, for go1.10rc2 · dce0eb2d
      Russ Cox authored
      This adds the go get security fix.
      
      * 1dcb5836 cmd/go: accept only limited compiler and linker flags in #cgo directives
      
      Change-Id: Ib2caf2039d2cefabe3afa0bb4dcc4c0dc8d664ff
      dce0eb2d
    • Russ Cox's avatar
      cmd/go: accept only limited compiler and linker flags in #cgo directives · 1dcb5836
      Russ Cox authored
      Both gcc and clang accept an option -fplugin=code.so to load
      a plugin from the ELF shared object file code.so.
      Obviously that plugin can then do anything it wants
      during the build. This is contrary to the goal of "go get"
      never running untrusted code during the build.
      (What happens if you choose to run the result of
      the build is your responsibility.)
      
      Disallow this behavior by only allowing a small set of
      known command-line flags in #cgo CFLAGS directives
      (and #cgo LDFLAGS, etc).
      
      The new restrictions can be adjusted by the environment
      variables CGO_CFLAGS_ALLOW, CGO_CFLAGS_DISALLOW,
      and so on. See the documentation.
      
      In addition to excluding cgo-defined flags, we also have to
      make sure that when we pass file names on the command
      line, they don't look like flags. So we now refuse to build
      packages containing suspicious file names like -x.go.
      
      A wrinkle in all this is that GNU binutils uniformly accept
      @foo on the command line to mean "if the file foo exists,
      then substitute its contents for @foo in the command line".
      So we must also reject @x.go, flags and flag arguments
      beginning with @, and so on.
      
      Fixes #23672, CVE-2018-6574.
      
      Change-Id: I59e7c1355155c335a5c5ae0d2cf8fa7aa313940a
      Reviewed-on: https://team-review.git.corp.google.com/209949Reviewed-by: 's avatarIan Lance Taylor <iant@google.com>
      1dcb5836
    • Russ Cox's avatar
      all: merge master into release-branch.go1.10, for go1.10rc2 · 924ef1c8
      Russ Cox authored
      * b2d3d6e6 cmd/link/internal/loadelf: fix logic for computing ELF flags on ARM
      * c07095cd cmd/cgo: revert CL 49490 "fix for function taking pointer typedef"
      * 23e8e197 cmd/compile: use unsigned loads for multi-element comparisons
      * 85bdd05c cmd/go: rebuild as needed for tests of packages that add methods
      * fd7331a8 text/template: revert CL 66410 "add break, continue actions in ranges"
      * f54f780d cmd/vet: unexported interface{} fields on %s are ok
      * a0222ec5 cmd/internal/obj/arm64: fix assemble add/adds/sub/subs/cmp/cmn(extended register) bug
      * 59523176 cmd/go: only run -race test if -race works
      * 4558321e doc/editors: remove feature matrix for various editors/IDEs
      * e6756ec1 cmd/go: ignore coverpkg match on sync/atomic in atomic coverage mode
      * 10d096fe cmd/go: fix import config debugging flag
      * f598ad58 go/internal/gccgoimporter: remove old and exp gccgo packages in test
      * 2a8229d9 misc/cgo/test: get uintptr, not pointer, from dlopen
      * 851e98f0 spec: remove need for separate Function production (cleanup)
      * cbe1a61e net: fix the kernel state name for TCP listen queue on FreeBSD
      * 6f37fee3 cmd/go: fix TestNoCache on Plan 9
      * e5186895 runtime: restore RSB for sigpanic call on mips64x
      * 3ff41cdf runtime: suppress "unexpected return pc" any time we're in cgo
      * d929e40e syscall: use SYS_GETDENTS64 on linux/mips64{,le}
      * 43288467 test: add test for gccgo bug 23545
      * 19150303 cmd/go: if unable to initialize cache, just disable it
      * ebe38b86 runtime: fail silently if we unwind over sigpanic into C code
      * 5c2be42a runtime: don't unwind past asmcgocall
      * 03e10bd9 os/signal: skip TestTerminalSignal if posix_openpt fails with EACCES
      * d30591c1 cmd/vendor/github.com/google/pprof: cherry-pick fix to cope with $HOME not being writable
      * bcc86d5f doc: add GOMIPS to source installation docs
      * 926f2787 cmd/fix: cleanup directories created during typecheck
      * 32a08d09 bootstrap.bash: only fetch git revision if we need it
      * 14f8027a cmd/vet: extra args if any formats are indexed are ok
      * 4072608b cmd/vet: %s is valid for an array of stringer
      * 1f85917f cmd/vet: **T is not Stringer if *T has a String method
      * 8c1f21d9 cmd/vet: disable complaint about 0 flag in print
      * d529aa93 doc: fix the closing tag in contribute.html
      * f8610bbd doc: fix two small mistakes in 1.10 release notes
      * 5af1e7d7 cmd/go: skip external tests on plan9/arm
      * 00587e89 doc: fix spelling mistake
      * 3ee8c3cc os: document inheritance of thread state over exec
      * b5b35be2 cmd/compile: don't inline functions that call recover
      * 651ddbdb database/sql: buffers provided to Rows.Next should not be modified by drivers
      * 7350297e doc: remove Sarah Adams from conduct working group contacts
      
      Change-Id: I3c04d83706cd4322252ddf732688afe5d938c1f5
      924ef1c8
    • Michael Hudson-Doyle's avatar
      cmd/link/internal/loadelf: fix logic for computing ELF flags on ARM · b2d3d6e6
      Michael Hudson-Doyle authored
      The linker contains complicated logic for figuring out which float ABI to
      indicate it is using on (32 bit) ARM systems: it parses a special section in
      host object files to look for a flag indicating use of the hard float ABI. When
      loadelf got split into its own package a bug was introduced: if the last host
      object file does not contain a float ABI related tag, the ELF header's flag was
      set to 0, rather than using the value from the last object file which contained
      an ABI tag. Fix the code to only change the value used for the ELF header if a
      tag was found.
      
      This fixes an extremely confusing build failure on Ubuntu's armhf builders.
      
      Change-Id: I0845d68d082d1383e4cae84ea85164cdc6bcdddb
      Reviewed-on: https://go-review.googlesource.com/92515
      Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      b2d3d6e6
    • Ian Lance Taylor's avatar
      cmd/cgo: revert CL 49490 "fix for function taking pointer typedef" · c07095cd
      Ian Lance Taylor authored
      CL 49490 fixed a warning when compiling the C code generated by cgo,
      but it introduced typedef conflicts in Go code that cgo is supposed to
      avoid.
      
      Original CL description:
      
          cmd/cgo: fix for function taking pointer typedef
      
          Fixes #19832
      
      Updates #19832
      Fixes #23720
      
      Change-Id: I22a732db31be0b4f7248c105277ab8ee44ef6cfb
      Reviewed-on: https://go-review.googlesource.com/92455
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      c07095cd
  6. 06 Feb, 2018 5 commits
    • Keith Randall's avatar
      cmd/compile: use unsigned loads for multi-element comparisons · 23e8e197
      Keith Randall authored
      When loading multiple elements of an array into a single register,
      make sure we treat them as unsigned.  When treated as signed, the
      upper bits might all be set, causing the shift-or combo to clobber
      the values higher in the register.
      
      Fixes #23719.
      
      Change-Id: Ic87da03e9bd0fe2c60bb214b99f846e4e9446052
      Reviewed-on: https://go-review.googlesource.com/92335
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      23e8e197
    • Russ Cox's avatar
      cmd/go: rebuild as needed for tests of packages that add methods · 85bdd05c
      Russ Cox authored
      If A's external test package imports B, which imports A,
      and A's (internal) test code also adds something to A that
      invalidates anything in the export data from a build of A
      without its test code, then strictly speaking we need to
      rebuild B against the test-augmented version of A before
      using it to build A's external test package.
      
      We've been skating by without doing this for a very long time,
      but I knew we'd need to handle it better eventually,
      I planned for it in the new build cache simplifications,
      and the code was ready. Now that we have a real-world
      test case that needs it, turn on the "proper rebuilding" code.
      
      It doesn't really matter how much things slow down, since
      a real-world test cases that caused an internal compiler error
      before is now handled correctly, but it appears to be small:
      I wasn't able to measure an effect on "go test -a -c fmt".
      And of course most builds won't use -a and will be cached well.
      
      Fixes #6204.
      Fixes #23701.
      
      Change-Id: I2cd60cf400d1928428979ab05831f48ff7cee6ca
      Reviewed-on: https://go-review.googlesource.com/92215
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      85bdd05c
    • Ian Lance Taylor's avatar
      text/template: revert CL 66410 "add break, continue actions in ranges" · fd7331a8
      Ian Lance Taylor authored
      The new break and continue actions do not work in html/template, and
      fixing them requires thinking about security issues that seem too
      tricky at this stage of the release. We will try again for 1.11.
      
      Original CL description:
      
          text/template: add break, continue actions in ranges
      
          Adds the two range control actions "break" and "continue". They act the
          same as the Go keywords break and continue, but are simplified in that
          only the innermost range statement can be broken out of or continued.
      
          Fixes #20531
      
      Updates #20531
      Updates #23683
      
      Change-Id: Ia7fd3c409163e3bcb5dc42947ae90b15bdf89853
      Reviewed-on: https://go-review.googlesource.com/92155
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      fd7331a8
    • Daniel Martí's avatar
      cmd/vet: unexported interface{} fields on %s are ok · f54f780d
      Daniel Martí authored
      For example, the following program is valid:
      
      	type T struct {
      		f interface{}
      	}
      
      	func main() {
      		fmt.Printf("%s", T{"foo"}) // prints {foo}
      	}
      
      Since the field is of type interface{}, we might have any value in it.
      For example, if we had T{3}, fmt would complain. However, not knowing
      what the type under the interface is, we must be conservative.
      
      However, as shown in #17798, we should issue an error if the field's
      type is statically known to implement the error or fmt.Stringer
      interfaces. In those cases, the user likely wanted the %s format to call
      those methods. Keep the vet error in those cases.
      
      While at it, add more field type test cases, such as custom error types,
      and interfaces that extend the error interface.
      
      Fixes #23563.
      
      Change-Id: I063885955555917c59da000391b603f0d6dce432
      Reviewed-on: https://go-review.googlesource.com/90516
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      f54f780d
    • fanzha02's avatar
      cmd/internal/obj/arm64: fix assemble add/adds/sub/subs/cmp/cmn(extended register) bug · a0222ec5
      fanzha02 authored
      The current code encodes the wrong option value in the binary.
      
      The fix reconstructs the function opxrrr() that does not encode the option
      value into the binary value when arguments is sign or zero-extended register.
      
      Add the relevant test cases and negative tests.
      
      Fixes #23501
      Change-Id: Ie5850ead2ad08d9a235a5664869aac5051762f1f
      Reviewed-on: https://go-review.googlesource.com/88876
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      a0222ec5
  7. 05 Feb, 2018 3 commits
  8. 02 Feb, 2018 5 commits
  9. 31 Jan, 2018 4 commits
    • David du Colombier's avatar
      cmd/go: fix TestNoCache on Plan 9 · 6f37fee3
      David du Colombier authored
      CL 91097 added TestNoCache. However, this
      test is failing on Plan 9 because the HOME
      environment variable doesn't contain the
      home directory where the Go cache is located.
      
      This change fixes the TestNoCache test
      by using the home environment variable
      instead of HOME on Plan 9.
      
      Fixes #23644.
      
      Change-Id: Icfb7a7a4c2852f159c93032b4081411628a2787f
      Reviewed-on: https://go-review.googlesource.com/91216
      Run-TryBot: David du Colombier <0intro@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6f37fee3
    • Austin Clements's avatar
      runtime: restore RSB for sigpanic call on mips64x · e5186895
      Austin Clements authored
      preparePanic must set all registers expected by Go runtime conventions
      in case the sigpanic is being injected into C code. However, on
      mips64x it fails to restore RSB (R28). As a result, if C code modifies
      RSB and then raises a signal that turns into a sigpanic call, sigpanic
      may crash when it attempts to lock runtime.debuglock (the first global
      it references).
      
      Fix this by restoring RSB in the signal context using the same
      convention as main and sigtramp.
      
      Fixes #23641.
      
      Change-Id: Ib47e83df89e2a3eece10f480e4e91ce9e4424388
      Reviewed-on: https://go-review.googlesource.com/91156
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e5186895
    • Austin Clements's avatar
      runtime: suppress "unexpected return pc" any time we're in cgo · 3ff41cdf
      Austin Clements authored
      Currently, gentraceback suppresses the "unexpected return pc" error
      for sigpanic's caller if the M was running C code.
      
      However, there are various situations where a sigpanic is injected
      into C code that can cause traceback to unwind *past* the sigpanic
      before realizing that it's in trouble (the traceback beyond the
      sigpanic will be wrong).
      
      Rather than try to fix these issues for Go 1.10, this CL simply
      disables complaining about unexpected return PCs if we're in cgo
      regardless of whether or not they're from the sigpanic frame. Go 1.9
      never complained about unexpected return PCs when printing, so this is
      simply a step closer to the old behavior.
      
      This should fix the openbsd-386 failures on the dashboard, though this
      issue could affect any architecture.
      
      Fixes #23640.
      
      Change-Id: I8c32c1ee86a70d2f280661ed1f8caf82549e324b
      Reviewed-on: https://go-review.googlesource.com/91136
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3ff41cdf
    • Tobias Klauser's avatar
      syscall: use SYS_GETDENTS64 on linux/mips64{,le} · d929e40e
      Tobias Klauser authored
      The getdents64 syscall is only available for mips64/mips64le starting
      with Linux kernel 3.10. Since mips64le requires at least 4.8 according
      to [1] (regarding #16848) using it should be fine.
      
      [1] https://golang.org/wiki/MinimumRequirements
      
      This CL changes the binary layout of type Dirent for mips64/mips64le,
      but not the public API. But since the currently used layout doesn't
      match the struct linux_dirent returned by the getdents syscall this
      should be fine as well.
      
      Fixes #23624
      
      Change-Id: Iaa7306fa6e4442ad2fed41c60b37627a7314f117
      Reviewed-on: https://go-review.googlesource.com/91055Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      d929e40e