diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-04-20 15:44:41 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-04-20 15:44:41 +0200 |
commit | 50104cc32a498f7517a51c8dc93106c51c7a54b4 (patch) | |
tree | 47af80be259cc7c45d0eaec7d42e61fa38c8e4fb /src/cmd/6l/pass.c | |
parent | c072558b90f1bbedc2022b0f30c8b1ac4712538e (diff) | |
download | golang-upstream/2011.03.07.1.tar.gz |
Imported Upstream version 2011.03.07.1upstream/2011.03.07.1
Diffstat (limited to 'src/cmd/6l/pass.c')
-rw-r--r-- | src/cmd/6l/pass.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index 5eb221a35..8fda94392 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -32,16 +32,10 @@ #include "l.h" #include "../ld/lib.h" +#include "../../pkg/runtime/stack.h" static void xfol(Prog*, Prog**); -// see ../../runtime/proc.c:/StackGuard -enum -{ - StackSmall = 128, - StackBig = 4096, -}; - Prog* brchain(Prog *p) { @@ -277,7 +271,7 @@ patch(void) vexit = s->value; for(cursym = textp; cursym != nil; cursym = cursym->next) for(p = cursym->text; p != P; p = p->link) { - if(HEADTYPE == 10) { + if(HEADTYPE == Hwindows) { // Windows // Convert // op n(GS), reg @@ -289,7 +283,7 @@ patch(void) // a different method is used to access them. if(p->from.type == D_INDIR+D_GS && p->to.type >= D_AX && p->to.type <= D_DI - && p->from.offset != 0x58) { + && p->from.offset <= 8) { q = appendp(p); q->from = p->from; q->from.type = D_INDIR + p->to.type; @@ -300,7 +294,7 @@ patch(void) p->from.offset = 0x58; } } - if(HEADTYPE == 7 || HEADTYPE == 9) { + if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd) { // ELF uses FS instead of GS. if(p->from.type == D_INDIR+D_GS) p->from.type = D_INDIR+D_FS; @@ -428,13 +422,13 @@ dostkoff(void) if(!(p->from.scale & NOSPLIT)) { p = appendp(p); // load g into CX p->as = AMOVQ; - if(HEADTYPE == 7 || HEADTYPE == 9) // ELF uses FS + if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd) // ELF uses FS p->from.type = D_INDIR+D_FS; else p->from.type = D_INDIR+D_GS; p->from.offset = tlsoffset+0; p->to.type = D_CX; - if(HEADTYPE == 10) { // Windows + if(HEADTYPE == Hwindows) { // movq %gs:0x58, %rcx // movq (%rcx), %rcx p->as = AMOVQ; @@ -724,15 +718,3 @@ atolwhex(char *s) n = -n; return n; } - -void -undef(void) -{ - int i; - Sym *s; - - for(i=0; i<NHASH; i++) - for(s = hash[i]; s != S; s = s->hash) - if(s->type == SXREF) - diag("%s: not defined", s->name); -} |