commit | 248444d5eb91a26fa0b050172b22fc2cf7c72936 | [log] [tgz] |
---|---|---|
author | Cherry Zhang <cherryyz@google.com> | Wed Apr 10 10:18:52 2019 -0400 |
committer | Cherry Zhang <cherryyz@google.com> | Fri Apr 19 18:25:20 2019 +0000 |
tree | 69babd8dbf9d0033017148473b459234b84fb353 | |
parent | 15a31bd9c8e4c7b2de092266ae34e1588dc35270 [diff] |
cmd/link: apply DWARF relocations while doing compression We are preparing for applying relocations to the output buffer. However, for DWARF compression, relocations need to be applied before compression, but we don't have an output buffer at that time. We also cannot delay DWARF compression to when we mmap the output file, because we need the size of the DWARF sections to compute the file size. Instead of applying all the relocations together, we apply relocations in DWARF sections one symbol at a time, right before it is writing out for compression. As the symbol content may be in read-only memory (in the future), we use a temporary buffer for applying the relocations, and immediately write it out. If compression is not used, relocations are still applied all together. This is in preparation for mmap'ing input files read-only. Change-Id: Iae6d2dd71313897d5054bcc458d3bb78075b30c3 Reviewed-on: https://go-review.googlesource.com/c/go/+/171397 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Official binary distributions are available at https://golang.org/dl/.
After downloading a binary release, visit https://golang.org/doc/install or load doc/install.html in your web browser for installation instructions.
If a binary distribution is not available for your combination of operating system and architecture, visit https://golang.org/doc/install/source or load doc/install-source.html in your web browser for source installation instructions.
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://golang.org/wiki/Questions for a list of places to ask questions about the Go language.