summaryrefslogtreecommitdiff
path: root/src/liblink/asm8.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2013-12-16 12:51:58 -0500
committerRuss Cox <rsc@golang.org>2013-12-16 12:51:58 -0500
commit43cad0aa4d6d397630daa553bf4ed28a078637f0 (patch)
treeecb464b206a70772c61e514e72a3b14d4c776b71 /src/liblink/asm8.c
parent737d6de29569572e16839f9cf6d91cc1db75b622 (diff)
downloadgo-43cad0aa4d6d397630daa553bf4ed28a078637f0.tar.gz
cmd/ld: move instruction selection + layout into compilers, assemblers
- new object file reader/writer (liblink/objfile.c) - remove old object file writing routines - add pcdata iterator - remove all trace of "line number stack" and "path fragments" from object files, linker (!!!) - dwarf now writes a single "compilation unit" instead of one per package This CL disables the check for chains of no-split functions that could overflow the stack red zone. A future CL will attack the problem of reenabling that check (issue 6931). This CL is just the liblink and cmd/ld changes. There are minor associated adjustments in CL 37030045. Each depends on the other. R=golang-dev, dave, iant CC=golang-dev https://codereview.appspot.com/39680043
Diffstat (limited to 'src/liblink/asm8.c')
-rw-r--r--src/liblink/asm8.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/liblink/asm8.c b/src/liblink/asm8.c
index 624627656..e2ff530cc 100644
--- a/src/liblink/asm8.c
+++ b/src/liblink/asm8.c
@@ -155,11 +155,15 @@ static uchar ytext[] =
};
static uchar ynop[] =
{
- Ynone, Ynone, Zpseudo,1,
- Ynone, Yml, Zpseudo,1,
- Ynone, Yrf, Zpseudo,1,
- Yml, Ynone, Zpseudo,1,
- Yrf, Ynone, Zpseudo,1,
+ Ynone, Ynone, Zpseudo,0,
+ Ynone, Yiauto, Zpseudo,0,
+ Ynone, Yml, Zpseudo,0,
+ Ynone, Yrf, Zpseudo,0,
+ Yiauto, Ynone, Zpseudo,0,
+ Ynone, Yxr, Zpseudo,0,
+ Yml, Ynone, Zpseudo,0,
+ Yrf, Ynone, Zpseudo,0,
+ Yxr, Ynone, Zpseudo,1,
0
};
static uchar yfuncdata[] =
@@ -1255,6 +1259,7 @@ span8(Link *ctxt, LSym *s)
sysfatal("bad code");
}
} while(loop);
+ c += -c&(FuncAlign-1);
s->size = c;
if(0 /* debug['a'] > 1 */) {