aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/6l/obj.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-04-14 10:42:48 -0400
committerRuss Cox <rsc@golang.org>2011-04-14 10:42:48 -0400
commitbd43a2d9ff53c0cda30571df8241dcefb9bf6b88 (patch)
tree91e0235293360bd92013db779182acf33926ebbc /src/cmd/6l/obj.c
parent36713a2a53b91e6fbf08af9ee583f49449857a33 (diff)
downloadgo-bd43a2d9ff53c0cda30571df8241dcefb9bf6b88.tar.xz
ld: defend against some broken object files
Fixes #1698. Fixes #1699. R=ken2 CC=golang-dev https://golang.org/cl/4419041
Diffstat (limited to 'src/cmd/6l/obj.c')
-rw-r--r--src/cmd/6l/obj.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index 6b43d2df43..9e35fa5630 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -356,6 +356,15 @@ zaddr(char *pn, Biobuf *f, Adr *a, Sym *h[])
return;
}
}
+
+ switch(t) {
+ case D_FILE:
+ case D_FILE1:
+ case D_AUTO:
+ case D_PARAM:
+ if(s == S)
+ mangle(pn);
+ }
u = mal(sizeof(*u));
u->link = curauto;
@@ -559,7 +568,7 @@ loop:
diag("multiple initialization for %s: in both %s and %s", s->name, s->file, pn);
errorexit();
}
- savedata(s, p);
+ savedata(s, p, pn);
unmal(p, sizeof *p);
goto loop;