An error occurred fetching the project authors.
  1. 18 Oct, 2011 1 commit
  2. 29 Jul, 2011 1 commit
  3. 28 Jul, 2011 1 commit
  4. 25 Jul, 2011 1 commit
    • Lucio De Re's avatar
      ld: fix build on Plan 9 · 75c918c1
      Lucio De Re authored
      ld/data.c:
      . Format specifier with corresponding cast to cater for all
        architectures (llux and vlong).
      
      ld/ldelf.c:
      ld/ldmacho.c:
      . Missing "pn" argument in diag() calls.
      
      ld/ldpe.c:
      . Dropped "sym->sectnum" in diag() call.
      . Typo in a comment.
      
      ld/lib.h:
      . Added varargck pragma for "O".
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4749042
      75c918c1
  5. 23 Jul, 2011 1 commit
  6. 20 Jul, 2011 1 commit
    • Gustavo Niemeyer's avatar
      ld: remove overlap of ELF sections on dynamic binaries · ba2e3af1
      Gustavo Niemeyer authored
      The dynamic ELF sections were pointing to the proper data,
      but that data was already owned by the rodata and text sections.
      Some ELF references explicitly prohibit multiple sections from
      owning the same data, and strip behaves accordingly.
      
      The data for these sections was moved out and their ranges are
      now owned by their respective sections.  This change makes strip
      happy both with and without -s being provided at link time.
      
      A test was added in debug/elf to ensure there are no regressions
      on this area in the future.
      
      Fixes #1242.
      Fixes #2022.
      
      NOTE: Tested on Linux amd64/386/arm only.
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4808043
      ba2e3af1
  7. 18 Jul, 2011 1 commit
  8. 28 Jun, 2011 1 commit
    • Gustavo Niemeyer's avatar
      ld: fix ELF strip by removing overlap of sections · cf143e9d
      Gustavo Niemeyer authored
      The gosymtab and gopclntab sections were pointing to the proper
      data, but that data was already owned by the rodata section.
      Some ELF references explicitly prohibit multiple sections from
      owning the same data, and strip behaves accordingly.
      
      The data for these sections was moved to after rodata, and the
      gosymtab and gopclntab sections now own their respective ranges.
      
      This change makes strip happy both with and without -s being
      provided at link time.  Note that it won't remove these sections
      because they are still allocated, and that's by design since
      they are necessary at runtime for generating proper backtraces
      and similar introspection operations.
      
      Unlike the previous behavior, -s will now maintain zero-sized
      gosymtab and gopclntab sections.  This makes the implementation
      slightly cleaner.
      
      Fixes #1242.
      
      NOTE: Tested on Linux amd64/386/arm only.
      
      R=ality, rsc
      CC=golang-dev
      https://golang.org/cl/4639077
      cf143e9d
  9. 21 Jun, 2011 1 commit
  10. 07 Jun, 2011 1 commit
    • Anthony Martin's avatar
      ld: fix and simplify ELF symbol generation · c5030e5f
      Anthony Martin authored
      I started looking at this code because the nm in GNU
      binutils was ignoring the first symbol in the .symtab
      section.  Apparently, the System V ABI reserves the
      first entry and requires all fields inside to be set
      to zero.
      
      The list of changes is as follows:
      
        · reserve the first symbol entry (as noted above)
        · fix the section indices for .data and .bss symbols
        · factor out common code for Elf32 and Elf64
        · remove the special case for elfsymo in [568]l/asm.c:/^asmb
        · add the "etext" symbol in 6l
        · add static symbols
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4524075
      c5030e5f
  11. 25 May, 2011 1 commit
  12. 12 May, 2011 1 commit
  13. 03 May, 2011 1 commit
  14. 14 Apr, 2011 1 commit
  15. 11 Apr, 2011 1 commit
  16. 09 Apr, 2011 1 commit
    • Russ Cox's avatar
      ld: 25% faster · 1bc84b7e
      Russ Cox authored
      The ld time was dominated by symbol table processing, so
        * increase hash table size
        * emit fewer symbols in gc (just 1 per string, 1 per type)
        * add read-only lookup to avoid creating spurious symbols
        * add linked list to speed whole-table traversals
      
      Breaks dwarf generator (no idea why), so disable dwarf.
      
      Reduces time for 6l to link godoc by 25%.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/4383047
      1bc84b7e
  17. 08 Mar, 2011 1 commit
    • Russ Cox's avatar
      5l, 6l, 8l: omit symbols for type, string, go.string · 7a09a882
      Russ Cox authored
      Much of the bulk of Go binaries is the symbol tables,
      which give a name to every C string, Go string,
      and reflection type symbol.  These names are not worth
      much other than seeing what's where in a binary.
      
      This CL deletes all those names from the symbol table,
      instead aggregating the symbols into contiguous blocks
      and giving them the names "string.*", "go.string.*", and "type.*".
      
      Before:
      $ 6nm $(which godoc.old) | sort | grep ' string\.' | tail -10
        59eda4 D string."aa87ca22be8b05378eb1c71...
        59ee08 D string."b3312fa7e23ee7e4988e056...
        59ee6c D string."func(*token.FileSet, st...
        59eed0 D string."func(io.Writer, []uint8...
        59ef34 D string."func(*tls.Config, *tls....
        59ef98 D string."func(*bool, **template....
        59effc D string."method(p *printer.print...
        59f060 D string."method(S *scanner.Scann...
        59f12c D string."func(*struct { begin in...
        59f194 D string."method(ka *tls.ecdheRSA...
      $
      
      After:
      $ 6nm $(which godoc) | sort | grep ' string\.' | tail -10
        5e6a30 D string.*
      $
      
      Those names in the "Before" are truncated for the CL.
      In the real binary they are the complete string, up to
      a certain length, or else a unique identifier.
      The same applies to the type and go.string symbols.
      
      Removing the names cuts godoc by more than half:
      
      -rwxr-xr-x 1 rsc rsc 9153405 2011-03-07 23:19 godoc.old
      -rwxr-xr-x 1 rsc rsc 4290071 2011-03-07 23:19 godoc
      
      For what it's worth, only 80% of what's left gets loaded
      into memory; the other 20% is dwarf debugging information
      only ever accessed by gdb:
      
      -rwxr-xr-x 1 rsc rsc 3397787 2011-03-07 23:19 godoc.nodwarf
      
      R=r, cw
      CC=golang-dev
      https://golang.org/cl/4245072
      7a09a882
  18. 24 Feb, 2011 2 commits
    • Russ Cox's avatar
      ld: weak symbols · d94bf762
      Russ Cox authored
      A reference to the address of weak.foo resolves at link time
      to the address of the symbol foo if foo would end up in the
      binary anyway, or to zero if foo would not be in the binary.
      
      For example:
      
              int xxx = 1;
              int yyy = 2;
              int weak·xxx;
              int weak·yyy;
      
              void main·main(void) {
                      runtime·printf("%p %p %p\n", &xxx, &weak·xxx, &weak·yyy);
              }
      
      prints the same non-nil address twice, then 0 (because yyy is not
      referenced so it was dropped from the binary).
      
      This will be used by the reflection tables.
      
      R=iant
      CC=golang-dev
      https://golang.org/cl/4223044
      d94bf762
    • Alex Brainman's avatar
      8l/6l: new -Hwindowsgui flag allows to build windows gui pe · 75fb2f6c
      Alex Brainman authored
      Fixes #1516.
      
      R=rsc, mattn
      CC=golang-dev
      https://golang.org/cl/4214041
      75fb2f6c
  19. 23 Feb, 2011 1 commit
  20. 22 Feb, 2011 1 commit
    • Russ Cox's avatar
      ld: detect stack overflow due to NOSPLIT · d9fd1144
      Russ Cox authored
      Fix problems found.
      
      On amd64, various library routines had bigger
      stack frames than expected, because large function
      calls had been added.
      
      runtime.assertI2T: nosplit stack overflow
              120	assumed on entry to runtime.assertI2T
              8	after runtime.assertI2T uses 112
              0	on entry to runtime.newTypeAssertionError
              -8	on entry to runtime.morestack01
      
      runtime.assertE2E: nosplit stack overflow
              120	assumed on entry to runtime.assertE2E
              16	after runtime.assertE2E uses 104
              8	on entry to runtime.panic
              0	on entry to runtime.morestack16
              -8	after runtime.morestack16 uses 8
      
      runtime.assertE2T: nosplit stack overflow
              120	assumed on entry to runtime.assertE2T
              16	after runtime.assertE2T uses 104
              8	on entry to runtime.panic
              0	on entry to runtime.morestack16
              -8	after runtime.morestack16 uses 8
      
      runtime.newselect: nosplit stack overflow
              120	assumed on entry to runtime.newselect
              56	after runtime.newselect uses 64
              48	on entry to runtime.printf
              8	after runtime.printf uses 40
              0	on entry to vprintf
              -8	on entry to runtime.morestack16
      
      runtime.selectdefault: nosplit stack overflow
              120	assumed on entry to runtime.selectdefault
              56	after runtime.selectdefault uses 64
              48	on entry to runtime.printf
              8	after runtime.printf uses 40
              0	on entry to vprintf
              -8	on entry to runtime.morestack16
      
      runtime.selectgo: nosplit stack overflow
              120	assumed on entry to runtime.selectgo
              0	after runtime.selectgo uses 120
              -8	on entry to runtime.gosched
      
      On arm, 5c was tagging functions NOSPLIT that should
      not have been, like the recursive function printpanics:
      
      printpanics: nosplit stack overflow
              124	assumed on entry to printpanics
              112	after printpanics uses 12
              108	on entry to printpanics
              96	after printpanics uses 12
              92	on entry to printpanics
              80	after printpanics uses 12
              76	on entry to printpanics
              64	after printpanics uses 12
              60	on entry to printpanics
              48	after printpanics uses 12
              44	on entry to printpanics
              32	after printpanics uses 12
              28	on entry to printpanics
              16	after printpanics uses 12
              12	on entry to printpanics
              0	after printpanics uses 12
              -4	on entry to printpanics
      
      R=r, r2
      CC=golang-dev
      https://golang.org/cl/4188061
      d9fd1144
  21. 04 Feb, 2011 1 commit
  22. 29 Jan, 2011 1 commit
    • Alex Brainman's avatar
      8l/6l: pe fixes · d08df513
      Alex Brainman authored
      - fixed length of amd64 .data pe section
        (don't need to include non-initialised data)
      
      - use correct oh/oh64 variable when updating
        data directory in addexports
      
      - simplify and cleanup
      
      R=vcc, rsc
      CC=golang-dev
      https://golang.org/cl/4106044
      d08df513
  23. 11 Jan, 2011 1 commit
  24. 15 Dec, 2010 2 commits
  25. 08 Dec, 2010 1 commit
  26. 19 Oct, 2010 2 commits
    • Russ Cox's avatar
      5l, 6l, 8l: link pclntab and symtab as ordinary rodata symbols · 19fd5c78
      Russ Cox authored
      That is, move the pc/ln table and the symbol table
      into the read-only data segment.  This eliminates
      the need for a special load command to map the
      symbol table into memory, which makes the
      information available on systems that couldn't handle
      the magic load to 0x99000000, like NaCl and ARM QEMU
      and Linux without config_highmem=y.  It also
      eliminates an #ifdef and some clumsy code to
      find the symbol table on Windows.
      
      The bad news is that the binary appears to be bigger
      than it used to be.  This is not actually the case, though:
      the same amount of data is being mapped into memory
      as before, and the tables are still read-only, so they're
      still shared across multiple instances of the binary as
      they were before.  The difference is just that the tables
      aren't squirreled away in some section that "size" doesn't
      know to look at.
      
      This is a checkpoint.
      It probably breaks Windows and breaks NaCl more
      than it used to be broken, but those will be fixed.
      The logic involving -s needs to be revisited too.
      
      Fixes #871.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/2587041
      19fd5c78
    • Russ Cox's avatar
      5l, 6l, 8l: separate pass to fix addresses · 01df088f
      Russ Cox authored
      Lay out code before data.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/2490043
      01df088f
  27. 15 Oct, 2010 2 commits
    • Russ Cox's avatar
      6l: function at a time code layout · 9c204852
      Russ Cox authored
      Also change the span-dependent jump algorithm
      to use fewer iterations:
      
      * resolve forward jumps at their targets (comefrom list)
      * mark jumps as small or big and only do small->big
      * record whether a jump failed to be encodable
      
      These changes mean that a function with only small
      jumps can be laid out in a single iteration, and the
      vast majority of functions take just two iterations.
      I was seeing a maximum of 5 iterations before; the
      max now is 3 and there are fewer that get even that far.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/2537041
      9c204852
    • Russ Cox's avatar
      5l, 6l, 8l: accumulate data image during import · be2c2120
      Russ Cox authored
      Using explicit relocations internally, we can
      represent the data for a particular symbol as
      an initialized block of memory instead of a
      linked list of ADATA instructions.  The real
      goal here is to be able to hand off some of the
      relocations to the dynamic linker when interacting
      with system libraries, but a pleasant side effect is
      that the memory image is much more compact
      than the ADATA list, so the linkers use less memory.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/2512041
      be2c2120
  28. 13 Oct, 2010 1 commit
    • Russ Cox's avatar
      5l, 6l, 8l: first pass cleanup · 085be174
      Russ Cox authored
      * Maintain Sym* list for text with individual
        prog lists instead of using one huge list and
        overloading p->pcond.
      * Comment what each file is for.
      * Move some output code from span.c to asm.c.
      * Move profiling into prof.c, symbol table into symtab.c.
      * Move mkfwd to ld/lib.c.
      * Throw away dhog dynamic loading code.
      * Throw away Alef become.
      * Fix printing of WORD instructions in 5l -a.
      
      Goal here is to be able to handle each piece of text or data
      as a separate piece, both to make it easier to load the
      occasional .o file and also to make it possible to split the
      work across multiple threads.
      
      R=ken2, r, ken3
      CC=golang-dev
      https://golang.org/cl/2335043
      085be174
  29. 06 Oct, 2010 1 commit
  30. 28 Sep, 2010 1 commit
  31. 20 Sep, 2010 1 commit
  32. 21 Jul, 2010 1 commit
  33. 30 Jun, 2010 1 commit
  34. 28 Apr, 2010 1 commit
  35. 04 Feb, 2010 2 commits