aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-04-25 13:57:52 -0400
committerRuss Cox <rsc@golang.org>2011-04-25 13:57:52 -0400
commitc2c7ee2736b5032a5e35577b3da54030ed8d3f63 (patch)
tree582752a36959daf72b727fbf4c4ed40ce4411729
parent07abf1c73214e68b27e668df35a474bac501bbd5 (diff)
downloadgo-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.c8
-rw-r--r--src/cmd/ld/macho.c4
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;