From 77a415e5a698e8f897aed8aa64db6855b8f952fc Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 29 Jan 2015 14:58:54 -0500 Subject: 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 --- src/liblink/obj9.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) (limited to 'src/liblink/obj9.c') 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, -- cgit v1.3-5-g9baa