diff options
author | Russ Cox <rsc@golang.org> | 2009-03-20 16:40:00 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-03-20 16:40:00 -0700 |
commit | b3e6c9aab3f96ddf2c0be0832b70ab1e504bbb3c (patch) | |
tree | 2f91f407749726e7de5074f35c4927adb6a04910 /src/cmd/cc | |
parent | aa63fd67d59b14fef1795ee074a45c8e8935a0ee (diff) | |
download | golang-b3e6c9aab3f96ddf2c0be0832b70ab1e504bbb3c.tar.gz |
update 8a, 8c, 8l to use new object format.
add "extern register" support to 8c.
extern register means allocate in the FS-relative segment.
make 8l generate segmented stack checks.
R=ken
OCL=26600
CL=26606
Diffstat (limited to 'src/cmd/cc')
-rw-r--r-- | src/cmd/cc/cc.h | 1 | ||||
-rw-r--r-- | src/cmd/cc/com.c | 5 | ||||
-rw-r--r-- | src/cmd/cc/sub.c | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/cc/cc.h b/src/cmd/cc/cc.h index 3b13126df..42341a70c 100644 --- a/src/cmd/cc/cc.h +++ b/src/cmd/cc/cc.h @@ -262,6 +262,7 @@ enum ODWHILE, OENUM, OEQ, + OEXREG, OFOR, OFUNC, OGE, diff --git a/src/cmd/cc/com.c b/src/cmd/cc/com.c index 5ee38e882..af2509c5f 100644 --- a/src/cmd/cc/com.c +++ b/src/cmd/cc/com.c @@ -638,6 +638,11 @@ tcomo(Node *n, int f) n->addable = 1; if(n->class == CEXREG) { n->op = OREGISTER; + // on 386, "extern register" generates + // memory references relative to the + // fs segment. + if(thechar == '8') // [sic] + n->op = OEXREG; n->reg = n->sym->offset; n->xoffset = 0; break; diff --git a/src/cmd/cc/sub.c b/src/cmd/cc/sub.c index cad5eda72..335d30bfb 100644 --- a/src/cmd/cc/sub.c +++ b/src/cmd/cc/sub.c @@ -1460,6 +1460,7 @@ Init onamesinit[] = ODWHILE, 0, "DWHILE", OENUM, 0, "ENUM", OEQ, 0, "EQ", + OEXREG, 0, "EXREG", OFOR, 0, "FOR", OFUNC, 0, "FUNC", OGE, 0, "GE", |