aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/6l/obj.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2008-11-05 11:27:50 -0800
committerRuss Cox <rsc@golang.org>2008-11-05 11:27:50 -0800
commit1983121bbb5d8cb346c1baef18e3dc1a2cbfee10 (patch)
treef3c233209ab5131760a45e54f4314388b4cfe1cc /src/cmd/6l/obj.c
parent6cd74b03f38de40d84d1d9efe8663714ccfaaee5 (diff)
downloadgo-1983121bbb5d8cb346c1baef18e3dc1a2cbfee10.tar.xz
6g interface changes:
* allow conversion between nil interface and any type. * mark signatures as DUPOK so that multiple .6 can contain sigt.*[]byte and only one gets used. R=ken OCL=18538 CL=18542
Diffstat (limited to 'src/cmd/6l/obj.c')
-rw-r--r--src/cmd/6l/obj.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index 8c001e7481..bc7413fe15 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -972,6 +972,8 @@ loop:
}
if(p->to.offset > s->value)
s->value = p->to.offset;
+ if(p->from.scale & DUPOK)
+ s->dupok = 1;
goto loop;
case ADYNT:
@@ -1017,6 +1019,12 @@ loop:
case ADATA:
data:
+ // Assume that AGLOBL comes after ADATA.
+ // If we've seen an AGLOBL that said this sym was DUPOK,
+ // ignore any more ADATA we see, which must be
+ // redefinitions.
+ if(p->from.sym != S && p->from.sym->dupok)
+ goto loop;
if(edatap == P)
datap = p;
else