aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Cheney <dave@cheney.net>2014-03-07 09:55:59 +1100
committerDave Cheney <dave@cheney.net>2014-03-07 09:55:59 +1100
commitd4896fb8766f8b7ac37ba421fbfbffb0f56ee8d4 (patch)
tree02d21aaa56642d420838ab6bf91ce2696d858786 /src
parent2fb87ddb59218797686f8d725a5accb195ccbaca (diff)
downloadgo-d4896fb8766f8b7ac37ba421fbfbffb0f56ee8d4.tar.xz
cmd/cc, cmd/5c, cmd/6c, cmd/8c: introduce linkarchinit and add amd64p32 support
Replaces CL 70000043. Introduce linkarchinit() from cmd/ld. For cmd/6c, switch to the amd64p32 linker model if we are building under nacl/amd64p32. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/72010043
Diffstat (limited to 'src')
-rw-r--r--src/cmd/6c/txt.c11
-rw-r--r--src/cmd/8c/txt.c8
-rw-r--r--src/cmd/cc/cc.h1
-rw-r--r--src/cmd/cc/lex.c3
4 files changed, 19 insertions, 4 deletions
diff --git a/src/cmd/6c/txt.c b/src/cmd/6c/txt.c
index 61b333c1cb..f308aff08c 100644
--- a/src/cmd/6c/txt.c
+++ b/src/cmd/6c/txt.c
@@ -30,11 +30,18 @@
#include "gc.h"
-LinkArch *thelinkarch = &linkamd64;
-
int thechar = '6';
char *thestring = "amd64";
+LinkArch *thelinkarch = &linkamd64;
+
+void
+linkarchinit(void)
+{
+ if(strcmp(getgoarch(), "amd64p32") == 0)
+ thelinkarch = &linkamd64p32;
+}
+
void
ginit(void)
{
diff --git a/src/cmd/8c/txt.c b/src/cmd/8c/txt.c
index 8a38955459..1b6c2e6d96 100644
--- a/src/cmd/8c/txt.c
+++ b/src/cmd/8c/txt.c
@@ -30,11 +30,17 @@
#include "gc.h"
-LinkArch *thelinkarch = &link386;
int thechar = '8';
char *thestring = "386";
+LinkArch *thelinkarch = &link386;
+
+void
+linkarchinit(void)
+{
+}
+
void
ginit(void)
{
diff --git a/src/cmd/cc/cc.h b/src/cmd/cc/cc.h
index 726364ce94..c8aac12530 100644
--- a/src/cmd/cc/cc.h
+++ b/src/cmd/cc/cc.h
@@ -795,6 +795,7 @@ int32 exreg(Type*);
int32 align(int32, Type*, int, int32*);
int32 maxround(int32, int32);
int hasdotdotdot(void);
+void linkarchinit(void);
extern schar ewidth[];
diff --git a/src/cmd/cc/lex.c b/src/cmd/cc/lex.c
index f6025d2807..a8ece212f0 100644
--- a/src/cmd/cc/lex.c
+++ b/src/cmd/cc/lex.c
@@ -124,7 +124,7 @@ main(int argc, char *argv[])
p = getgoarch();
if(strncmp(p, thestring, strlen(thestring)) != 0)
sysfatal("cannot use %cc with GOARCH=%s", thechar, p);
- if(strcmp(getgoarch(), "amd64p32") == 0) // must be before cinit
+ if(strcmp(p, "amd64p32") == 0) // must be before cinit
ewidth[TIND] = 4;
nacl = strcmp(getgoos(), "nacl") == 0;
@@ -133,6 +133,7 @@ main(int argc, char *argv[])
quotefmtinstall(); // before cinit, which overrides %Q
+ linkarchinit();
ctxt = linknew(thelinkarch);
ctxt->diag = yyerror;
ctxt->bso = &bstdout;