1. 14 Aug, 2013 12 commits
    • Elias Naur's avatar
      runtime.cmd/ld: Add ARM external linking and implement -shared in terms of external linking · 45233734
      Elias Naur authored
      This CL is an aggregate of 10271047, 10499043, 9733044. Descriptions of each follow:
      
      10499043
      runtime,cmd/ld: Merge TLS symbols and teach 5l about ARM TLS
      
      This CL prepares for external linking support to ARM.
      
      The pseudo-symbols runtime.g and runtime.m are merged into a single
      runtime.tlsgm symbol. When external linking, the offset of a thread local
      variable is stored at a memory location instead of being embedded into a offset
      of a ldr instruction. With a single runtime.tlsgm symbol for both g and m, only
      one such offset is needed.
      
      The larger part of this CL moves TLS code from gcc compiled to internally
      compiled. The TLS code now uses the modern MRC instruction, and 5l is taught
      about TLS fallbacks in case the instruction is not available or appropriate.
      
      10271047
      This CL adds support for -linkmode external to 5l.
      
      For 5l itself, use addrel to allow for D_CALL relocations to be handled by the
      host linker. Of the cases listed in rsc's comment in issue 4069, only case 5 and
      63 needed an update. One of the TODO: addrel cases was since replaced, and the
      rest of the cases are either covered by indirection through addpool (cases with
      LTO or LFROM flags) or stubs (case 74). The addpool cases are covered because
      addpool emits AWORD instructions, which in turn are handled by case 11.
      
      In the runtime, change the argv argument in the rt0* functions slightly to be a
      pointer to the argv list, instead of relying on a particular location of argv.
      
      9733044
      The -shared flag to 6l outputs a shared library, implemented in Go
      and callable from non-Go programs such as C.
      
      The main part of this CL change the thread local storage model.
      Go uses the fastest and least general mode, local exec. TLS data in shared
      libraries normally requires at least the local dynamic mode, however, this CL
      instead opts for using the initial exec mode. Initial exec mode is faster than
      local dynamic mode and can be used in linux since the linker has reserved a
      limited amount of TLS space for performance sensitive TLS code.
      
      Initial exec mode requires an extra load from the GOT table to determine the
      TLS offset. This penalty will not be paid if ld is not in -shared mode, since
      TLS accesses will be reduced to local exec.
      
      The elf sections .init_array and .rela.init_array are added to register the Go
      runtime entry with cgo at library load time.
      
      The "hidden" attribute is added to Cgo functions called from Go, since Go
      does not generate call through the GOT table, and adding non-GOT relocations for
      a global function is not supported by gcc. Cgo symbols don't need to be global
      and avoiding the GOT table is also faster.
      
      The changes to 8l are only removes code relevant to the old -shared mode where
      internal linking was used.
      
      This CL only address the low level linker work. It can be submitted by itself,
      but to be useful, the runtime changes in CL 9738047 is also needed.
      
      Design discussion at
      https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/zmjXkGrEx6Q
      
      Fixes #5590.
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/12871044
      45233734
    • Dmitriy Vyukov's avatar
      runtime: improve block profiler support for channels · c9228768
      Dmitriy Vyukov authored
      1. Handle select statements.
      2. Handle chan close.
      3. Show top frame in debug mode (chansend/chanrecv/selectgo).
      Fixes #6049.
      
      R=golang-dev, daniel.morsing, rsc
      CC=golang-dev
      https://golang.org/cl/12694050
      c9228768
    • Russ Cox's avatar
      sync/atomic: fix new swap on arm linux · 883530c0
      Russ Cox authored
      TBR=dvyukov
      CC=golang-dev
      https://golang.org/cl/12920043
      883530c0
    • Russ Cox's avatar
      cmd/5g: fix temp-merging on ARM · 72636eb5
      Russ Cox authored
      mkvar was taking care of the "LeftAddr" case,
      effectively hiding it from the temp-merging optimization.
      
      Move it into prog.c.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/12884045
      72636eb5
    • Russ Cox's avatar
      time: make Time implement encoding interfaces · 071e44e4
      Russ Cox authored
      See golang.org/s/go12encoding for design.
      
      R=golang-dev, bradfitz
      CC=golang-dev
      https://golang.org/cl/12706043
      071e44e4
    • Russ Cox's avatar
      net: make IP implement encoding.MarshalerText, encoding.UnmarshalerText · 413d4c6c
      Russ Cox authored
      See golang.org/s/go12encoding for design.
      
      R=golang-dev, bradfitz, mikioh.mikioh
      CC=golang-dev
      https://golang.org/cl/12705043
      413d4c6c
    • Russ Cox's avatar
      undo CL 12603044 / 2ca230b93195 · 56ce83f7
      Russ Cox authored
      fat fingers - did not intend to submit.
      depends on the Unmarshaler CL anyway.
      
      ««« original CL description
      encoding/xml: add, support Marshaler interface
      
      See golang.org/s/go12xml for design.
      
      Fixes #2771.
      Fixes #4169.
      Fixes #5975.
      Fixes #6125.
      
      R=golang-dev, iant, dan.kortschak
      CC=golang-dev
      https://golang.org/cl/12603044
      »»»
      
      TBR=golang-dev
      CC=golang-dev
      https://golang.org/cl/12918043
      56ce83f7
    • Russ Cox's avatar
    • Russ Cox's avatar
      encoding: new package · 48b90bbc
      Russ Cox authored
      See golang.org/s/go12encoding for design.
      
      R=r
      CC=golang-dev
      https://golang.org/cl/12541051
      48b90bbc
    • Russ Cox's avatar
      encoding/xml: add, support Marshaler interface · 85f3acd7
      Russ Cox authored
      See golang.org/s/go12xml for design.
      
      Fixes #2771.
      Fixes #4169.
      Fixes #5975.
      Fixes #6125.
      
      R=golang-dev, iant, dan.kortschak
      CC=golang-dev
      https://golang.org/cl/12603044
      85f3acd7
    • ChaiShushan's avatar
      misc/notepadplus: support Calltips · 844bc6c0
      ChaiShushan authored
      Fixes #5789.
      
      R=golang-dev, r
      CC=golang-dev
      https://golang.org/cl/10601043
      844bc6c0
    • Andrew Gerrand's avatar
      cmd/go: add -t flag to 'go get' to download test dependencies · 5dde7cce
      Andrew Gerrand authored
      Fixes #5126.
      
      R=golang-dev, dsymonds, bradfitz, r, rsc, rogpeppe
      CC=golang-dev
      https://golang.org/cl/12566046
      5dde7cce
  2. 13 Aug, 2013 28 commits