diff options
| author | Shenghou Ma <minux.ma@gmail.com> | 2013-03-11 14:24:51 +0800 |
|---|---|---|
| committer | Shenghou Ma <minux.ma@gmail.com> | 2013-03-11 14:24:51 +0800 |
| commit | 960d7082ee9b8fda91444167b3c253d5cf5e115d (patch) | |
| tree | 3a2f565bce8dad08128721c6af86e36a16a2c09c /src/cmd/ld | |
| parent | 72dd01451f58a5b1a1cdd1d92810a8ab0d75d97d (diff) | |
| download | go-960d7082ee9b8fda91444167b3c253d5cf5e115d.tar.xz | |
cmd/ld, runtime/cgo: allow a symbol to be both cgo_export and cgo_import.
Fixes #4878.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7420052
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/go.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index 27307819fc..ff1f5f437b 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -499,11 +499,16 @@ loadcgo(char *file, char *pkg, char *p, int n) remote = local; local = expandpkg(local, pkg); s = lookup(local, 0); + + // export overrides import, for openbsd/cgo. + // see issue 4878. if(s->dynimplib != nil) { - fprint(2, "%s: symbol is both imported and exported: %s\n", argv0, local); - nerrors++; + s->dynimplib = nil; + s->extname = nil; + s->dynimpvers = nil; + s->type = 0; } - + if(s->cgoexport == 0) { if(strcmp(f[0], "cgo_export_static") == 0) s->cgoexport |= CgoExportStatic; |
