From: Ian Lance Taylor Date: Mon, 25 Mar 2013 22:37:54 +0000 (-0700) Subject: cmd/ld: permit sym to be both cgo_export_static and cgo_export_dynamic X-Git-Tag: go1.1rc2~340 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5a529b61aa2174b4c44809a02c9735e0c725f2f3;p=gostls13.git cmd/ld: permit sym to be both cgo_export_static and cgo_export_dynamic Fixes SWIG callbacks. Previously crosscall2 was only cgo_export_static, despite the use of two #pragma declarations in runtime/cgo/callbacks.c. R=golang-dev, bradfitz, rsc CC=golang-dev https://golang.org/cl/7817048 --- diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index f933cbba34..fa2ec4e28d 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -508,10 +508,6 @@ loadcgo(char *file, char *pkg, char *p, int n) } if(s->cgoexport == 0) { - if(strcmp(f[0], "cgo_export_static") == 0) - s->cgoexport |= CgoExportStatic; - else - s->cgoexport |= CgoExportDynamic; s->extname = remote; if(ndynexp%32 == 0) dynexp = erealloc(dynexp, (ndynexp+32)*sizeof dynexp[0]); @@ -521,6 +517,10 @@ loadcgo(char *file, char *pkg, char *p, int n) nerrors++; return; } + if(strcmp(f[0], "cgo_export_static") == 0) + s->cgoexport |= CgoExportStatic; + else + s->cgoexport |= CgoExportDynamic; if(local != f[1]) free(local); continue;