aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/5l
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2013-07-19 16:04:09 -0400
committerRuss Cox <rsc@golang.org>2013-07-19 16:04:09 -0400
commit48769bf546ba7ad830c2edc05656e217d15a20c8 (patch)
treee3110fce615f1250f56a7c68d69ade5ad3ff3bbb /src/cmd/5l
parent5d340de1f682d3b2cf10b2319c25ef3799e84078 (diff)
downloadgo-48769bf546ba7ad830c2edc05656e217d15a20c8.tar.xz
runtime: use funcdata to supply garbage collection information
This CL introduces a FUNCDATA number for runtime-specific garbage collection metadata, changes the C and Go compilers to emit that metadata, and changes the runtime to expect it. The old pseudo-instructions that carried this information are gone, as is the linker code to process them. R=golang-dev, dvyukov, cshapiro CC=golang-dev https://golang.org/cl/11406044
Diffstat (limited to 'src/cmd/5l')
-rw-r--r--src/cmd/5l/5.out.h5
-rw-r--r--src/cmd/5l/l.h3
-rw-r--r--src/cmd/5l/obj.c40
-rw-r--r--src/cmd/5l/span.c1
4 files changed, 0 insertions, 49 deletions
diff --git a/src/cmd/5l/5.out.h b/src/cmd/5l/5.out.h
index 042017c2a8..eda379c6f6 100644
--- a/src/cmd/5l/5.out.h
+++ b/src/cmd/5l/5.out.h
@@ -201,11 +201,6 @@ enum as
AFUNCDATA,
APCDATA,
- // TODO: Remove these.
- ALOCALS,
- ANPTRS,
- APTRS,
-
ALAST,
};
diff --git a/src/cmd/5l/l.h b/src/cmd/5l/l.h
index c79bb79e05..10d8b5bd3e 100644
--- a/src/cmd/5l/l.h
+++ b/src/cmd/5l/l.h
@@ -154,8 +154,6 @@ struct Sym
int32 elfsym;
int32 locals; // size of stack frame locals area
int32 args; // size of stack frame incoming arguments area
- int32 nptrs; // number of bits in the pointer map
- uint32* ptrs; // pointer map data
uchar special;
uchar fnptr; // used as fn ptr
uchar stkcheck;
@@ -436,7 +434,6 @@ int32 immaddr(int32);
int32 opbra(int, int);
int brextra(Prog*);
int isbranch(Prog*);
-void fnptrs(void);
void doelf(void);
void dozerostk(void); // used by -Z
diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c
index d087bb470c..168cf01de9 100644
--- a/src/cmd/5l/obj.c
+++ b/src/cmd/5l/obj.c
@@ -615,51 +615,12 @@ loop:
pc++;
break;
- case ALOCALS:
- if(skip)
- goto casedef;
- cursym->locals = p->to.offset;
- pc++;
- break;
-
case ATYPE:
if(skip)
goto casedef;
pc++;
goto loop;
- case ANPTRS:
- if(skip)
- goto casedef;
- if(cursym->nptrs != -1) {
- diag("ldobj1: multiple pointer maps defined for %s", cursym->name);
- errorexit();
- }
- if(p->to.offset > cursym->args/PtrSize) {
- diag("ldobj1: pointer map definition for %s exceeds its argument size", cursym->name);
- errorexit();
- }
- cursym->nptrs = p->to.offset;
- if(cursym->nptrs != 0)
- cursym->ptrs = mal((rnd(cursym->nptrs, 32) / 32) * sizeof(*cursym->ptrs));
- pc++;
- goto loop;
-
- case APTRS:
- if(skip)
- goto casedef;
- if(cursym->nptrs == -1 || cursym->ptrs == nil) {
- diag("ldobj1: pointer map data provided for %s without a definition", cursym->name);
- errorexit();
- }
- if(p->from.offset*32 >= rnd(cursym->nptrs, 32)) {
- diag("ldobj1: excessive pointer map data provided for %s", cursym->name);
- errorexit();
- }
- cursym->ptrs[p->from.offset] = p->to.offset;
- pc++;
- goto loop;
-
case ATEXT:
if(cursym != nil && cursym->text) {
histtoauto();
@@ -704,7 +665,6 @@ loop:
s->text = p;
s->value = pc;
s->args = p->to.offset2;
- s->nptrs = -1;
lastp = p;
p->pc = pc;
pc++;
diff --git a/src/cmd/5l/span.c b/src/cmd/5l/span.c
index 96138b2663..fe7aface97 100644
--- a/src/cmd/5l/span.c
+++ b/src/cmd/5l/span.c
@@ -830,7 +830,6 @@ buildop(void)
case ARFE:
case ATEXT:
case AUSEFIELD:
- case ALOCALS:
case ACASE:
case ABCASE:
case ATYPE: