diff options
| author | Austin Clements <austin@google.com> | 2014-10-22 11:21:16 -0400 |
|---|---|---|
| committer | Austin Clements <austin@google.com> | 2014-10-22 11:21:16 -0400 |
| commit | 32082501859c5c3c61913df5791cafbbb45c2519 (patch) | |
| tree | 365cfa998cf0ef09335922c75b50009b315ca8e9 /src/liblink/objfile.c | |
| parent | 04d5796b2988a20175b8cb03eb7080cf4cca2179 (diff) | |
| parent | 36ca636fab865cb8d5d01927d274ed54153c4e73 (diff) | |
| download | go-32082501859c5c3c61913df5791cafbbb45c2519.tar.xz | |
[dev.power64] build: merge default into dev.power64
LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/160200044
Diffstat (limited to 'src/liblink/objfile.c')
| -rw-r--r-- | src/liblink/objfile.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/liblink/objfile.c b/src/liblink/objfile.c index 3b78571b74..394f2450bd 100644 --- a/src/liblink/objfile.c +++ b/src/liblink/objfile.c @@ -38,7 +38,8 @@ // - type [int] // - name [string] // - version [int] -// - dupok [int] +// - flags [int] +// 1 dupok // - size [int] // - gotype [symbol reference] // - p [data block] @@ -50,7 +51,9 @@ // - args [int] // - locals [int] // - nosplit [int] -// - leaf [int] +// - flags [int] +// 1 leaf +// 2 C function // - nlocal [int] // - local [nlocal automatics] // - pcln [pcln table] @@ -291,6 +294,8 @@ writesym(Link *ctxt, Biobuf *b, LSym *s) Bprint(ctxt->bso, "t=%d ", s->type); if(s->dupok) Bprint(ctxt->bso, "dupok "); + if(s->cfunc) + Bprint(ctxt->bso, "cfunc "); if(s->nosplit) Bprint(ctxt->bso, "nosplit "); Bprint(ctxt->bso, "size=%lld value=%lld", (vlong)s->size, (vlong)s->value); @@ -356,7 +361,7 @@ writesym(Link *ctxt, Biobuf *b, LSym *s) wrint(b, s->args); wrint(b, s->locals); wrint(b, s->nosplit); - wrint(b, s->leaf); + wrint(b, s->leaf | s->cfunc<<1); n = 0; for(a = s->autom; a != nil; a = a->link) n++; @@ -524,6 +529,7 @@ readsym(Link *ctxt, Biobuf *f, char *pkg, char *pn) if(v != 0 && v != 1) sysfatal("invalid symbol version %d", v); dupok = rdint(f); + dupok &= 1; size = rdint(f); if(v != 0) @@ -578,7 +584,9 @@ readsym(Link *ctxt, Biobuf *f, char *pkg, char *pn) s->args = rdint(f); s->locals = rdint(f); s->nosplit = rdint(f); - s->leaf = rdint(f); + v = rdint(f); + s->leaf = v&1; + s->cfunc = v&2; n = rdint(f); for(i=0; i<n; i++) { a = emallocz(sizeof *a); @@ -634,6 +642,8 @@ readsym(Link *ctxt, Biobuf *f, char *pkg, char *pn) Bprint(ctxt->bso, "t=%d ", s->type); if(s->dupok) Bprint(ctxt->bso, "dupok "); + if(s->cfunc) + Bprint(ctxt->bso, "cfunc "); if(s->nosplit) Bprint(ctxt->bso, "nosplit "); Bprint(ctxt->bso, "size=%lld value=%lld", (vlong)s->size, (vlong)s->value); |
