summaryrefslogtreecommitdiff
path: root/src/cmd/cc
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-03-20 16:40:00 -0700
committerRuss Cox <rsc@golang.org>2009-03-20 16:40:00 -0700
commitb3e6c9aab3f96ddf2c0be0832b70ab1e504bbb3c (patch)
tree2f91f407749726e7de5074f35c4927adb6a04910 /src/cmd/cc
parentaa63fd67d59b14fef1795ee074a45c8e8935a0ee (diff)
downloadgolang-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.h1
-rw-r--r--src/cmd/cc/com.c5
-rw-r--r--src/cmd/cc/sub.c1
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",