summaryrefslogtreecommitdiff
path: root/misc/cgo/testplugin/src
Commit message (Collapse)AuthorAgeFilesLines
* plugin: resolve plugin import path issueTodd Neal2017-04-262-0/+32
| | | | | | | | | | | | Resolve import paths to get plugin symbol prefixes. Fixes #19534 Change-Id: Ic25d83e72465ba8f6be0337218a1627b5dc702dc Reviewed-on: https://go-review.googlesource.com/40994 Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
* runtime: for plugins, don't add duplicate itabsKeith Randall2017-01-173-0/+55
| | | | | | | | | | | | | | | | We already do this for shared libraries. Do it for plugins also. Suggestions on how to test this would be welcome. I'd like to get this in for 1.8. It could lead to mysterious hangs when using plugins. Fixes #18676 Change-Id: I03209b096149090b9ba171c834c5e59087ed0f92 Reviewed-on: https://go-review.googlesource.com/35117 Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
* misc/cgo/testplugin: test that types and itabs are uniqueKeith Randall2017-01-134-0/+97
| | | | | | | | | | | | | Make sure that the same type and itab generated in two different plugins are actually the same thing. See also CL 35115 Change-Id: I0c1ecb039d7e2bf5a601d58dfa162a435ae4ef76 Reviewed-on: https://go-review.googlesource.com/35116 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
* cmd/link: do not export plugin C symbolsDavid Crawshaw2016-12-141-2/+11
| | | | | | | | | | | Explicitly filter any C-only cgo functions out of pclntable, which allows them to be duplicated with the host binary. Updates #18190. Change-Id: I50d8706777a6133b3e95f696bc0bc586b84faa9e Reviewed-on: https://go-review.googlesource.com/34199 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/link: limit darwin dynlink symbol exportsDavid Crawshaw2016-12-101-1/+4
| | | | | | | | | | | | | | | | | | | | | The pclntable contains pointers to functions. If the function symbol is exported in a plugin, and there is a matching symbol in the host binary, then the pclntable of a plugin ends up pointing at the function in the host module. This doesn't work because the traceback code expects the pointer to be in the same module space as the PC value. So don't export functions that might overlap with the host binary. This way the pointer stays in its module. Updates #18190 Change-Id: Ifb77605b35fb0a1e7edeecfd22b1e335ed4bb392 Reviewed-on: https://go-review.googlesource.com/34196 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/link: handle R_GOTPCREL separately on darwinDavid Crawshaw2016-11-161-1/+9
| | | | | | | | | | | | | | | | | | | | To generate the correct section offset the shared code path for R_CALL, R_PCREL, and R_GOTPCREL on darwin when externally linking walks up the symbol heirarchy adding the differences. This is fine, except in the case where we are generating a GOT lookup, because the topmost symbol is left in r.Xsym instead of the symbol we are looking up. So all funcsym GOT lookups were looking up the outer "go.func.*" symbol. Fix this by separating out the R_GOTPCREL code path. For #17828 (and may fix it). Change-Id: I2c9f4d135e77c17270aa064d8c876dc6d485d659 Reviewed-on: https://go-review.googlesource.com/33211 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/go: use build ID as plugin symbol prefixDavid Crawshaw2016-11-151-0/+31
| | | | | | | | | | Updates #17821 Change-Id: Iebd2e88b2d4f3d757ffad72456f4bfc0607d8110 Reviewed-on: https://go-review.googlesource.com/33162 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/link, runtime, plugin: versioningDavid Crawshaw2016-11-151-0/+9
| | | | | | | | | | | | | | | | | | In plugins and every program that opens a plugin, include a hash of every imported package. There are two versions of each hash: one local and one exported. As the program starts and plugins are loaded, the first exported symbol for each package becomes the canonical version. Any subsequent plugin's local package hash symbol has to match the canonical version. Fixes #17832 Change-Id: I4e62c8e1729d322e14b1673bada40fa7a74ea8bc Reviewed-on: https://go-review.googlesource.com/33161 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/compile: write type symbols referenced in ptabsDavid Crawshaw2016-11-032-0/+15
| | | | | | | | | | | | | The exported symbol for a plugin can be the only reference to a type in a program. In particular, "var F func()" will have the type *func(), which is uncommon. Fixes #17140 Change-Id: Ide2104edbf087565f5377374057ae54e0c00c57e Reviewed-on: https://go-review.googlesource.com/29692 Run-TryBot: David Crawshaw <crawshaw@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* cmd/link: support plugins with no exported symbolsDavid Crawshaw2016-11-012-0/+26
| | | | | | | | | | | | | A plugin with no exported symbols is still potentially very useful. Its init functions are called on load, and it so it can have visible side effects. Fixes #17681 Change-Id: Icdca31f48e5ab13c99020a2ef724f3de47dcd74b Reviewed-on: https://go-review.googlesource.com/32437 Run-TryBot: David Crawshaw <crawshaw@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/link, plugin: use full plugin path for symbolsDavid Crawshaw2016-10-313-3/+62
| | | | | | | | | | | | | | | | Plumb the import path of a plugin package through to the linker, and use it as the prefix on the exported symbol names. Before this we used the basename of the plugin file as the prefix, which could conflict and result in multiple loaded plugins sharing symbols that are distinct. Fixes #17155 Fixes #17579 Change-Id: I7ce966ca82d04e8507c0bcb8ea4ad946809b1ef5 Reviewed-on: https://go-review.googlesource.com/32355 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* misc/cgo/testplugin: add test of -buildmode=pluginDavid Crawshaw2016-09-163-0/+87
Change-Id: Ie9fea9814c850b084562ab2349b54d9ad9fa1f4a Reviewed-on: https://go-review.googlesource.com/27825 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>