summaryrefslogtreecommitdiff
path: root/src/liblink
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-09-06 14:53:44 -0400
committerRuss Cox <rsc@golang.org>2014-09-06 14:53:44 -0400
commitd457431726b4fbe29a50b63e027e1150c5e66ac5 (patch)
tree7883fc3d0caaccb03704a10d824a67c8572c8e13 /src/liblink
parent0216eb1a463589a6c2498c67f418f0e351fc46b8 (diff)
downloadgo-d457431726b4fbe29a50b63e027e1150c5e66ac5.tar.gz
liblink: fix arm build errors
This was supposed to be in CL 135490044 but got lost in a transfer from machine to machine. TBR=khr R=khr CC=golang-codereviews https://codereview.appspot.com/135560043
Diffstat (limited to 'src/liblink')
-rw-r--r--src/liblink/asm5.c6
-rw-r--r--src/liblink/obj5.c12
2 files changed, 8 insertions, 10 deletions
diff --git a/src/liblink/asm5.c b/src/liblink/asm5.c
index 46aa1c1e3..65c4ca199 100644
--- a/src/liblink/asm5.c
+++ b/src/liblink/asm5.c
@@ -309,6 +309,7 @@ static Optab optab[] =
{ AUSEFIELD, C_ADDR, C_NONE, C_NONE, 0, 0, 0 },
{ APCDATA, C_LCON, C_NONE, C_LCON, 0, 0, 0 },
{ AFUNCDATA, C_LCON, C_NONE, C_ADDR, 0, 0, 0 },
+ { ANOP, C_NONE, C_NONE, C_NONE, 0, 0, 0 },
{ ADUFFZERO, C_NONE, C_NONE, C_SBRA, 5, 4, 0 }, // same as ABL
{ ADUFFCOPY, C_NONE, C_NONE, C_SBRA, 5, 4, 0 }, // same as ABL
@@ -686,7 +687,7 @@ span5(Link *ctxt, LSym *cursym)
continue;
}
}
- if(m == 0 && (p->as != AFUNCDATA && p->as != APCDATA && p->as != ADATABUNDLEEND)) {
+ if(m == 0 && (p->as != AFUNCDATA && p->as != APCDATA && p->as != ADATABUNDLEEND && p->as != ANOP)) {
ctxt->diag("zero-width instruction\n%P", p);
continue;
}
@@ -765,7 +766,7 @@ span5(Link *ctxt, LSym *cursym)
}
if(m/4 > nelem(out))
ctxt->diag("instruction size too large: %d > %d", m/4, nelem(out));
- if(m == 0 && (p->as != AFUNCDATA && p->as != APCDATA && p->as != ADATABUNDLEEND)) {
+ if(m == 0 && (p->as != AFUNCDATA && p->as != APCDATA && p->as != ADATABUNDLEEND && p->as != ANOP)) {
if(p->as == ATEXT) {
ctxt->autosize = p->to.offset + 4;
continue;
@@ -1479,6 +1480,7 @@ buildop(Link *ctxt)
case ACLZ:
case AFUNCDATA:
case APCDATA:
+ case ANOP:
case ADATABUNDLE:
case ADATABUNDLEEND:
break;
diff --git a/src/liblink/obj5.c b/src/liblink/obj5.c
index d7008a48c..e8b81ec5c 100644
--- a/src/liblink/obj5.c
+++ b/src/liblink/obj5.c
@@ -466,12 +466,10 @@ addstacksplit(Link *ctxt, LSym *cursym)
p->as = ACMP;
p->from.type = D_CONST;
p->from.offset = 0;
- p->to.type = D_REG;
- p->to.reg = 1;
+ p->reg = 1;
p = appendp(ctxt, p);
- p->as = AB;
- p->scond = C_SCOND_EQ;
+ p->as = ABEQ;
p->to.type = D_BRANCH;
p1 = p;
@@ -495,12 +493,10 @@ addstacksplit(Link *ctxt, LSym *cursym)
p->as = ACMP;
p->from.type = D_REG;
p->from.offset = 2;
- p->to.type = D_REG;
- p->to.reg = 3;
+ p->reg = 3;
p = appendp(ctxt, p);
- p->as = AB;
- p->scond = C_SCOND_NE;
+ p->as = ABNE;
p->to.type = D_BRANCH;
p2 = p;