diff options
| author | Wei Guangjing <vcc.163@gmail.com> | 2011-06-14 11:05:59 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-06-14 11:05:59 -0400 |
| commit | 9e2ffc315f93ea8cf1c6fba38d2233c802b3d9e9 (patch) | |
| tree | 13e40e62ff51ebdb204b1202f624b1c9d00aab59 /src/cmd/ld | |
| parent | 2ad42a82496afa45cc362a65e3e5c70d9578de78 (diff) | |
| download | go-9e2ffc315f93ea8cf1c6fba38d2233c802b3d9e9.tar.xz | |
ld: fix link Windows PE __declspec(dllimport) symbol
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4568077
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/data.c | 2 | ||||
| -rw-r--r-- | src/cmd/ld/ldpe.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 3f3faade0b..cd485072e7 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -249,7 +249,7 @@ dynrelocsym(Sym *s) return; for(r=s->r; r<s->r+s->nr; r++) { targ = r->sym; - if(r->sym->plt == -2) { // make dynimport JMP table for PE object files. + if(r->sym->plt == -2 && r->sym->got != -2) { // make dynimport JMP table for PE object files. targ->plt = rel->size; r->sym = rel; r->add = targ->plt; diff --git a/src/cmd/ld/ldpe.c b/src/cmd/ld/ldpe.c index d6aa267c4e..77a8b82e4c 100644 --- a/src/cmd/ld/ldpe.c +++ b/src/cmd/ld/ldpe.c @@ -403,6 +403,8 @@ readsym(PeObj *obj, int i, PeSym **y) if(s != nil && s->type == 0 && !(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0)) s->type = SXREF; + if(strncmp(sym->name, "__imp__", 6) == 0) + s->got = -2; // flag for __imp__ sym->sym = s; return 0; |
