aboutsummaryrefslogtreecommitdiff
path: root/src/liblink/obj9.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-01-29 14:58:54 -0500
committerRuss Cox <rsc@golang.org>2015-02-03 18:22:15 +0000
commit77a415e5a698e8f897aed8aa64db6855b8f952fc (patch)
treea2adb923b983adfd5301f0d87c9c26949e22d9d6 /src/liblink/obj9.c
parent72521319c733e5de62bb837508ea9fa2b1f3a0a2 (diff)
downloadgo-77a415e5a698e8f897aed8aa64db6855b8f952fc.tar.xz
liblink: place TEXT/GLOBL flags in p->from3 always
Before, amd64 and 386 stored the flags in p->from.scale and arm and ppc64 stored the flags in p->reg. Both caused special cases in printing and in handling of the addresses. To avoid possible conflicts with the real meaning of p->from and to avoid storing a non-register value in a reg field, use from3 to hold a TYPE_CONST value giving the flags. There is still a special case for printing, because the flags are specified without a $, and normally a TYPE_CONST prints with a $. But that's much less special than what came before. This allows us to remove the textflag and settextflag methods from LinkArch. They are no longer architecture-specific. Change-Id: I931da8e1ecd92e127cd9aa44ef5a73c42e730110 Reviewed-on: https://go-review.googlesource.com/3572 Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/liblink/obj9.c')
-rw-r--r--src/liblink/obj9.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/src/liblink/obj9.c b/src/liblink/obj9.c
index 6f7652f5f8..60fa1d66e1 100644
--- a/src/liblink/obj9.c
+++ b/src/liblink/obj9.c
@@ -57,18 +57,6 @@ datasize(Prog *p)
return p->reg;
}
-static int
-textflag(Prog *p)
-{
- return p->reg;
-}
-
-static void
-settextflag(Prog *p, int f)
-{
- p->reg = f;
-}
-
static void
progedit(Link *ctxt, Prog *p)
{
@@ -367,8 +355,8 @@ preprocess(Link *ctxt, LSym *cursym)
autosize += 4;
p->to.offset = autosize-8;
- if(!(p->reg & NOSPLIT))
- p = stacksplit(ctxt, p, autosize, !(cursym->text->reg&NEEDCTXT)); // emit split check
+ if(!(p->from3.offset & NOSPLIT))
+ p = stacksplit(ctxt, p, autosize, !(cursym->text->from3.offset&NEEDCTXT)); // emit split check
q = p;
if(autosize) {
@@ -420,7 +408,7 @@ preprocess(Link *ctxt, LSym *cursym)
if(q->as == AMOVDU)
q->spadj = -aoffset;
- if(cursym->text->reg & WRAPPER) {
+ if(cursym->text->from3.offset & WRAPPER) {
// if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
//
// MOVD g_panic(g), R3
@@ -970,8 +958,6 @@ LinkArch linkppc64 = {
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 4,
.ptrsize = 8,
@@ -1004,8 +990,6 @@ LinkArch linkppc64le = {
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 4,
.ptrsize = 8,