diff options
author | Russ Cox <rsc@golang.org> | 2011-04-25 13:57:52 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-04-25 13:57:52 -0400 |
commit | c2c7ee2736b5032a5e35577b3da54030ed8d3f63 (patch) | |
tree | 582752a36959daf72b727fbf4c4ed40ce4411729 | |
parent | 07abf1c73214e68b27e668df35a474bac501bbd5 (diff) | |
download | go-c2c7ee2736b5032a5e35577b3da54030ed8d3f63.tar.gz go-c2c7ee2736b5032a5e35577b3da54030ed8d3f63.zip |
ld: fix 6l -d on Mac, diagnose invalid use of -d
R=r
CC=golang-dev
https://golang.org/cl/4430064
-rw-r--r-- | src/cmd/ld/go.c | 8 | ||||
-rw-r--r-- | src/cmd/ld/macho.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index 055163d089..b50b1a7a57 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -445,6 +445,12 @@ loaddynimport(char *file, char *pkg, char *p, int n) *strchr(name, ' ') = 0; *strchr(def, ' ') = 0; + if(debug['d']) { + fprint(2, "%s: %s: cannot use dynamic imports with -d flag\n", argv0, file); + nerrors++; + return; + } + if(strcmp(name, "_") == 0 && strcmp(def, "_") == 0) { // allow #pragma dynimport _ _ "foo.so" // to force a link of foo.so. @@ -463,7 +469,7 @@ loaddynimport(char *file, char *pkg, char *p, int n) return; err: - fprint(2, "%s: invalid dynimport line: %s\n", argv0, p0); + fprint(2, "%s: %s: invalid dynimport line: %s\n", argv0, file, p0); nerrors++; } diff --git a/src/cmd/ld/macho.c b/src/cmd/ld/macho.c index a1abbbc56a..01349bb10a 100644 --- a/src/cmd/ld/macho.c +++ b/src/cmd/ld/macho.c @@ -349,11 +349,13 @@ asmbmacho(void) msect = newMachoSect(ms, "__data"); msect->addr = va+v; - msect->size = symaddr(lookup(".got", 0)) - msect->addr; msect->off = v; + msect->size = segdata.filelen; s = lookup(".got", 0); if(s->size > 0) { + msect->size = symaddr(s) - msect->addr; + msect = newMachoSect(ms, "__nl_symbol_ptr"); msect->addr = symaddr(s); msect->size = s->size; |