28639df158
The linker has been applying -X options before loading symbols, meaning that when it sees -X y=z it creates a symbol named y and initializes its string data to z. The symbol named y is marked "DUPOK" so that when the actual packages are loaded, no error is emitted when the real y is seen. The predefined y's data is used instead of whatever the real y says. If we define -X y=z and we never load y, then the predefined symbol is dropped during dead code elimination, but not in shared library builds. Shared library builds must include all symbols, so we have to be more careful about not defining symbols that wouldn't have appeared anyway. To be more careful, save the -X settings until after all the symbols are loaded from the packages, and then apply the string changes to whatever symbols are known (but ignore the ones that were not loaded at all). This ends up being simpler anyway, since it doesn't depend on DUPOK magic. Makes CL 86835 safe. Fixes #23273. Change-Id: Ib4c9b2d5eafa97c5a8114401dbec0134c76be54f Reviewed-on: https://go-review.googlesource.com/86915 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> |
||
---|---|---|
.github | ||
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
favicon.ico | ||
LICENSE | ||
PATENTS | ||
README.md | ||
robots.txt |
The Go Programming Language
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.
Download and Install
Binary Distributions
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.
Install From Source
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.
Contributing
Go is the work of hundreds of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Note that the Go project does not use GitHub pull requests, and that we use 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.