diff options
| author | Russ Cox <rsc@golang.org> | 2015-01-29 20:19:07 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2015-02-03 18:23:05 +0000 |
| commit | 2e5b065ac24912be82e7082eeb136afd18d9734b (patch) | |
| tree | 9658f6b04dda8a9dd921bad95b2ca5adceb90f9b /src/liblink | |
| parent | 3ac37c72ae56a229bdc75986a4071b29bd7298c8 (diff) | |
| download | go-2e5b065ac24912be82e7082eeb136afd18d9734b.tar.xz | |
liblink: define fixed A-numbers for common instructions
This makes names like ANOP, ATEXT, AGLOBL, ACALL, AJMP, ARET
available for use by architecture-independent processing passes.
On arm and ppc64, the alternate names are now aliases for the
official ones (ABL for ACALL, AB or ABR for AJMP, ARETURN for ARET).
Change-Id: Id027771243795af2b3745199c645b6e1bedd7d18
Reviewed-on: https://go-review.googlesource.com/3577
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/liblink')
| -rw-r--r-- | src/liblink/asm5.c | 16 | ||||
| -rw-r--r-- | src/liblink/asm6.c | 2 | ||||
| -rw-r--r-- | src/liblink/asm8.c | 20 | ||||
| -rw-r--r-- | src/liblink/asm9.c | 12 | ||||
| -rw-r--r-- | src/liblink/list9.c | 2 | ||||
| -rw-r--r-- | src/liblink/obj5.c | 27 | ||||
| -rw-r--r-- | src/liblink/obj6.c | 42 | ||||
| -rw-r--r-- | src/liblink/obj8.c | 27 | ||||
| -rw-r--r-- | src/liblink/obj9.c | 42 | ||||
| -rw-r--r-- | src/liblink/objfile.c | 16 | ||||
| -rw-r--r-- | src/liblink/pass.c | 6 | ||||
| -rw-r--r-- | src/liblink/pcln.c | 14 |
12 files changed, 44 insertions, 182 deletions
diff --git a/src/liblink/asm5.c b/src/liblink/asm5.c index 9ae041eeb8..5be4a87d7d 100644 --- a/src/liblink/asm5.c +++ b/src/liblink/asm5.c @@ -2187,13 +2187,13 @@ if(0 /*debug['G']*/) print("%ux: %s: arm %d\n", (uint32)(p->pc), p->from.sym->na o1 = oprrr(ctxt, p->as, p->scond); o1 |= ((p->from.reg&15)<<0); o1 |= ((FREGTMP&15)<<12); - o2 = oprrr(ctxt, AMOVFW+AEND, p->scond); + o2 = oprrr(ctxt, AMOVFW+ALAST, p->scond); o2 |= ((FREGTMP&15)<<16); o2 |= ((p->to.reg&15)<<12); break; case 87: /* movwf reg,freg - fix-to-float */ // macro for movw reg,FTMP; movwf FTMP,freg - o1 = oprrr(ctxt, AMOVWF+AEND, p->scond); + o1 = oprrr(ctxt, AMOVWF+ALAST, p->scond); o1 |= ((p->from.reg&15)<<12); o1 |= ((FREGTMP&15)<<16); o2 = oprrr(ctxt, p->as, p->scond); @@ -2201,17 +2201,17 @@ if(0 /*debug['G']*/) print("%ux: %s: arm %d\n", (uint32)(p->pc), p->from.sym->na o2 |= ((p->to.reg&15)<<12); break; case 88: /* movw reg,freg */ - o1 = oprrr(ctxt, AMOVWF+AEND, p->scond); + o1 = oprrr(ctxt, AMOVWF+ALAST, p->scond); o1 |= ((p->from.reg&15)<<12); o1 |= ((p->to.reg&15)<<16); break; case 89: /* movw freg,reg */ - o1 = oprrr(ctxt, AMOVFW+AEND, p->scond); + o1 = oprrr(ctxt, AMOVFW+ALAST, p->scond); o1 |= ((p->from.reg&15)<<16); o1 |= ((p->to.reg&15)<<12); break; case 90: /* tst reg */ - o1 = oprrr(ctxt, ACMP+AEND, p->scond); + o1 = oprrr(ctxt, ACMP+ALAST, p->scond); o1 |= (p->from.reg&15)<<16; break; case 91: /* ldrexd oreg,reg */ @@ -2416,11 +2416,11 @@ oprrr(Link *ctxt, int a, int sc) return o | (0xe<<24) | (0xb<<20) | (8<<16) | (0xa<<8) | (4<<4) | (1<<18) | (1<<8) | (1<<7); // toint, double, trunc - case AMOVWF+AEND: // copy WtoF + case AMOVWF+ALAST: // copy WtoF return o | (0xe<<24) | (0x0<<20) | (0xb<<8) | (1<<4); - case AMOVFW+AEND: // copy FtoW + case AMOVFW+ALAST: // copy FtoW return o | (0xe<<24) | (0x1<<20) | (0xb<<8) | (1<<4); - case ACMP+AEND: // cmp imm + case ACMP+ALAST: // cmp imm return o | (0x3<<24) | (0x5<<20); case ACLZ: diff --git a/src/liblink/asm6.c b/src/liblink/asm6.c index b3a19dc9fb..bc66c0b9a8 100644 --- a/src/liblink/asm6.c +++ b/src/liblink/asm6.c @@ -990,7 +990,6 @@ static Optab optab[] = { AFXRSTOR64, ysvrs, Pw, {0x0f,0xae,(01),0x0f,0xae,(01)} }, { AFXSAVE64, ysvrs, Pw, {0x0f,0xae,(00),0x0f,0xae,(00)} }, { AGLOBL }, - { AHISTORY }, { AHLT, ynone, Px, {0xf4} }, { AIDIVB, ydivb, Pb, {0xf6,(07)} }, { AIDIVL, ydivl, Px, {0xf7,(07)} }, @@ -1115,7 +1114,6 @@ static Optab optab[] = { AMULSD, yxm, Pf2, {0x59} }, { AMULSS, yxm, Pf3, {0x59} }, { AMULW, ydivl, Pe, {0xf7,(04)} }, - { ANAME }, { ANEGB, yscond, Pb, {0xf6,(03)} }, { ANEGL, yscond, Px, {0xf7,(03)} }, { ANEGQ, yscond, Pw, {0xf7,(03)} }, diff --git a/src/liblink/asm8.c b/src/liblink/asm8.c index c982ca98b7..1678958f2f 100644 --- a/src/liblink/asm8.c +++ b/src/liblink/asm8.c @@ -53,6 +53,8 @@ struct Optab uchar op[13]; }; +static Optab* opindex[ALAST+1]; + enum { Yxxx = 0, @@ -675,7 +677,6 @@ static Optab optab[] = { ADIVW, ydivl, Pe, {0xf7,(06)} }, { AENTER }, /* botch */ { AGLOBL }, - { AHISTORY }, { AHLT, ynone, Px, {0xf4} }, { AIDIVB, ydivb, Pb, {0xf6,(07)} }, { AIDIVL, ydivl, Px, {0xf7,(07)} }, @@ -748,7 +749,6 @@ static Optab optab[] = { AMULB, ydivb, Pb, {0xf6,(04)} }, { AMULL, ydivl, Px, {0xf7,(04)} }, { AMULW, ydivl, Pe, {0xf7,(04)} }, - { ANAME }, { ANEGB, yscond, Px, {0xf6,(03)} }, { ANEGL, yscond, Px, {0xf7,(03)} }, // TODO(rsc): yscond is wrong here. { ANEGW, yscond, Pe, {0xf7,(03)} }, // TODO(rsc): yscond is wrong here. @@ -967,9 +967,6 @@ static Optab optab[] = { AFYL2X, ynone, Px, {0xd9, 0xf1} }, { AFYL2XP1, ynone, Px, {0xd9, 0xf9} }, { AEND }, - { ADYNT_ }, - { AINIT_ }, - { ASIGNAME }, { ACMPXCHGB, yrb_mb, Pm, {0xb0} }, { ACMPXCHGL, yrl_ml, Pm, {0xb1} }, { ACMPXCHGW, yrl_ml, Pm, {0xb1} }, @@ -1379,11 +1376,14 @@ span8(Link *ctxt, LSym *s) static void instinit(void) { - int i; + int i, c; - for(i=1; optab[i].as; i++) - if(i != optab[i].as) - sysfatal("phase error in optab: at %A found %A", i, optab[i].as); + for(i=1; optab[i].as; i++) { + c = optab[i].as; + if(opindex[c] != nil) + sysfatal("phase error in optab: %d (%A)", i, c); + opindex[c] = &optab[i]; + } for(i=0; i<Ymax; i++) ycover[i*Ymax + i] = 1; @@ -2198,7 +2198,7 @@ doasm(Link *ctxt, Prog *p) ft = p->ft * Ymax; tt = p->tt * Ymax; - o = &optab[p->as]; + o = opindex[p->as]; t = o->ytab; if(t == 0) { ctxt->diag("asmins: noproto %P", p); diff --git a/src/liblink/asm9.c b/src/liblink/asm9.c index f1c7625747..84aa14e7f5 100644 --- a/src/liblink/asm9.c +++ b/src/liblink/asm9.c @@ -1788,7 +1788,7 @@ asmout(Link *ctxt, Prog *p, Optab *o, uint32 *out) r = p->to.reg; if(p->as == AADD && (!r0iszero && p->reg == 0 || r0iszero && p->to.reg == 0)) ctxt->diag("literal operation on R0\n%P", p); - o1 = AOP_IRR(opirr(ctxt, p->as+AEND), p->to.reg, r, v>>16); + o1 = AOP_IRR(opirr(ctxt, p->as+ALAST), p->to.reg, r, v>>16); break; case 22: /* add $lcon,r1,r2 ==> cau+or+add */ /* could do add/sub more efficiently */ @@ -2157,7 +2157,7 @@ asmout(Link *ctxt, Prog *p, Optab *o, uint32 *out) r = p->reg; if(r == 0) r = p->to.reg; - o1 = LOP_IRR(opirr(ctxt, p->as+AEND), p->to.reg, r, v>>16); /* oris, xoris, andis */ + o1 = LOP_IRR(opirr(ctxt, p->as+ALAST), p->to.reg, r, v>>16); /* oris, xoris, andis */ break; case 60: /* tw to,a,b */ @@ -2632,10 +2632,10 @@ opirr(Link *ctxt, int a) case AADD: return OPVCC(14,0,0,0); case AADDC: return OPVCC(12,0,0,0); case AADDCCC: return OPVCC(13,0,0,0); - case AADD+AEND: return OPVCC(15,0,0,0); /* ADDIS/CAU */ + case AADD+ALAST: return OPVCC(15,0,0,0); /* ADDIS/CAU */ case AANDCC: return OPVCC(28,0,0,0); - case AANDCC+AEND: return OPVCC(29,0,0,0); /* ANDIS./ANDIU. */ + case AANDCC+ALAST: return OPVCC(29,0,0,0); /* ANDIS./ANDIU. */ case ABR: return OPVCC(18,0,0,0); case ABL: return OPVCC(18,0,0,0) | 1; @@ -2662,7 +2662,7 @@ opirr(Link *ctxt, int a) case AMULLW: return OPVCC(7,0,0,0); case AOR: return OPVCC(24,0,0,0); - case AOR+AEND: return OPVCC(25,0,0,0); /* ORIS/ORIU */ + case AOR+ALAST: return OPVCC(25,0,0,0); /* ORIS/ORIU */ case ARLWMI: return OPVCC(20,0,0,0); /* rlwimi */ case ARLWMICC: return OPVCC(20,0,0,1); @@ -2692,7 +2692,7 @@ opirr(Link *ctxt, int a) case ATD: return OPVCC(2,0,0,0); case AXOR: return OPVCC(26,0,0,0); /* XORIL */ - case AXOR+AEND: return OPVCC(27,0,0,0); /* XORIU */ + case AXOR+ALAST: return OPVCC(27,0,0,0); /* XORIU */ } ctxt->diag("bad opcode i/r %A", a); return 0; diff --git a/src/liblink/list9.c b/src/liblink/list9.c index 522d3305d8..1cd0cdb353 100644 --- a/src/liblink/list9.c +++ b/src/liblink/list9.c @@ -93,7 +93,7 @@ Pconv(Fmt *fp) a = p->as; str[0] = 0; - if(a == ADATA || a == AINIT || a == ADYNT) + if(a == ADATA) sprint(str, "%.5lld (%L) %A %D/%lld,%D", p->pc, p->lineno, a, &p->from, p->from3.offset, &p->to); else if(a == ATEXT || a == AGLOBL) { if(p->from3.offset != 0) diff --git a/src/liblink/obj5.c b/src/liblink/obj5.c index 2f7562d53b..805b2b921d 100644 --- a/src/liblink/obj5.c +++ b/src/liblink/obj5.c @@ -35,18 +35,6 @@ #include "../cmd/5l/5.out.h" #include "../runtime/stack.h" -static int -isdata(Prog *p) -{ - return p->as == ADATA || p->as == AGLOBL; -} - -static int -iscall(Prog *p) -{ - return p->as == ABL; -} - static void progedit(Link *ctxt, Prog *p) { @@ -1010,24 +998,9 @@ LinkArch linkarm = { .preprocess = preprocess, .assemble = span5, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 4, .ptrsize = 4, .regsize = 4, - - .ACALL = ABL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = AB, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARET, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; diff --git a/src/liblink/obj6.c b/src/liblink/obj6.c index faa3de7f48..cddc723bf2 100644 --- a/src/liblink/obj6.c +++ b/src/liblink/obj6.c @@ -47,18 +47,6 @@ nopout(Prog *p) p->to.name = 0; } -static int -isdata(Prog *p) -{ - return p->as == ADATA || p->as == AGLOBL; -} - -static int -iscall(Prog *p) -{ - return p->as == ACALL; -} - static void nacladdr(Link*, Prog*, Addr*); static int @@ -1047,26 +1035,11 @@ LinkArch linkamd64 = { .preprocess = preprocess, .assemble = span6, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 1, .ptrsize = 8, .regsize = 8, - - .ACALL = ACALL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = AJMP, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARET, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; LinkArch linkamd64p32 = { @@ -1077,24 +1050,9 @@ LinkArch linkamd64p32 = { .preprocess = preprocess, .assemble = span6, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 1, .ptrsize = 4, .regsize = 8, - - .ACALL = ACALL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = AJMP, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARET, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; diff --git a/src/liblink/obj8.c b/src/liblink/obj8.c index 6565489c1c..eb8e318762 100644 --- a/src/liblink/obj8.c +++ b/src/liblink/obj8.c @@ -36,18 +36,6 @@ #include "../runtime/stack.h" static int -isdata(Prog *p) -{ - return p->as == ADATA || p->as == AGLOBL; -} - -static int -iscall(Prog *p) -{ - return p->as == ACALL; -} - -static int canuselocaltls(Link *ctxt) { switch(ctxt->headtype) { @@ -846,24 +834,9 @@ LinkArch link386 = { .preprocess = preprocess, .assemble = span8, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 1, .ptrsize = 4, .regsize = 4, - - .ACALL = ACALL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = AJMP, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARET, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; diff --git a/src/liblink/obj9.c b/src/liblink/obj9.c index 58b6cf72c8..450ed00306 100644 --- a/src/liblink/obj9.c +++ b/src/liblink/obj9.c @@ -35,18 +35,6 @@ #include "../runtime/stack.h" #include "../runtime/funcdata.h" -static int -isdata(Prog *p) -{ - return p->as == ADATA || p->as == AGLOBL; -} - -static int -iscall(Prog *p) -{ - return p->as == ABL; -} - static void progedit(Link *ctxt, Prog *p) { @@ -933,26 +921,11 @@ LinkArch linkppc64 = { .preprocess = preprocess, .assemble = span9, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 4, .ptrsize = 8, .regsize = 8, - - .ACALL = ABL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = ABR, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARETURN, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; LinkArch linkppc64le = { @@ -963,24 +936,9 @@ LinkArch linkppc64le = { .preprocess = preprocess, .assemble = span9, .follow = follow, - .iscall = iscall, - .isdata = isdata, .progedit = progedit, .minlc = 4, .ptrsize = 8, .regsize = 8, - - .ACALL = ABL, - .ADATA = ADATA, - .AEND = AEND, - .AFUNCDATA = AFUNCDATA, - .AGLOBL = AGLOBL, - .AJMP = ABR, - .ANOP = ANOP, - .APCDATA = APCDATA, - .ARET = ARETURN, - .ATEXT = ATEXT, - .ATYPE = ATYPE, - .AUSEFIELD = AUSEFIELD, }; diff --git a/src/liblink/objfile.c b/src/liblink/objfile.c index 79a88db0bf..c01160af7e 100644 --- a/src/liblink/objfile.c +++ b/src/liblink/objfile.c @@ -147,10 +147,10 @@ writeobj(Link *ctxt, Biobuf *b) plink = p->link; p->link = nil; - if(p->as == ctxt->arch->AEND) + if(p->as == AEND) continue; - if(p->as == ctxt->arch->ATYPE) { + if(p->as == ATYPE) { // Assume each TYPE instruction describes // a different local variable or parameter, // so no dedup. @@ -174,7 +174,7 @@ writeobj(Link *ctxt, Biobuf *b) continue; } - if(p->as == ctxt->arch->AGLOBL) { + if(p->as == AGLOBL) { s = p->from.sym; if(s->seenglobl++) print("duplicate %P\n", p); @@ -200,12 +200,12 @@ writeobj(Link *ctxt, Biobuf *b) continue; } - if(p->as == ctxt->arch->ADATA) { + if(p->as == ADATA) { savedata(ctxt, p->from.sym, p, "<input>"); continue; } - if(p->as == ctxt->arch->ATEXT) { + if(p->as == ATEXT) { s = p->from.sym; if(s == nil) { // func _() { } @@ -235,7 +235,7 @@ writeobj(Link *ctxt, Biobuf *b) continue; } - if(p->as == ctxt->arch->AFUNCDATA) { + if(p->as == AFUNCDATA) { // Rewrite reference to go_args_stackmap(SB) to the Go-provided declaration information. if(curtext == nil) // func _() {} continue; @@ -260,14 +260,14 @@ writeobj(Link *ctxt, Biobuf *b) continue; found = 0; for(p = s->text; p != nil; p = p->link) { - if(p->as == ctxt->arch->AFUNCDATA && p->from.type == TYPE_CONST && p->from.offset == FUNCDATA_ArgsPointerMaps) { + if(p->as == AFUNCDATA && p->from.type == TYPE_CONST && p->from.offset == FUNCDATA_ArgsPointerMaps) { found = 1; break; } } if(!found) { p = appendp(ctxt, s->text); - p->as = ctxt->arch->AFUNCDATA; + p->as = AFUNCDATA; p->from.type = TYPE_CONST; p->from.offset = FUNCDATA_ArgsPointerMaps; p->to.type = TYPE_MEM; diff --git a/src/liblink/pass.c b/src/liblink/pass.c index edc4d9ba73..a8bf76f4d6 100644 --- a/src/liblink/pass.c +++ b/src/liblink/pass.c @@ -40,8 +40,9 @@ brchain(Link *ctxt, Prog *p) { int i; + USED(ctxt); for(i=0; i<20; i++) { - if(p == nil || p->as != ctxt->arch->AJMP || p->pcond == nil) + if(p == nil || p->as != AJMP || p->pcond == nil) return p; p = p->pcond; } @@ -54,9 +55,10 @@ brloop(Link *ctxt, Prog *p) int c; Prog *q; + USED(ctxt); c = 0; for(q = p; q != nil; q = q->pcond) { - if(q->as != ctxt->arch->AJMP || q->pcond == nil) + if(q->as != AJMP || q->pcond == nil) break; c++; if(c >= 5000) diff --git a/src/liblink/pcln.c b/src/liblink/pcln.c index 0ab1581e1d..93e4127a1e 100644 --- a/src/liblink/pcln.c +++ b/src/liblink/pcln.c @@ -160,7 +160,7 @@ pctofileline(Link *ctxt, LSym *sym, int32 oldval, Prog *p, int32 phase, void *ar USED(sym); - if(p->as == ctxt->arch->ATEXT || p->as == ctxt->arch->ANOP || p->as == ctxt->arch->AUSEFIELD || p->lineno == 0 || phase == 1) + if(p->as == ATEXT || p->as == ANOP || p->as == AUSEFIELD || p->lineno == 0 || phase == 1) return oldval; linkgetline(ctxt, p->lineno, &f, &l); if(f == nil) { @@ -223,7 +223,7 @@ pctopcdata(Link *ctxt, LSym *sym, int32 oldval, Prog *p, int32 phase, void *arg) { USED(sym); - if(phase == 0 || p->as != ctxt->arch->APCDATA || p->from.offset != (uintptr)arg) + if(phase == 0 || p->as != APCDATA || p->from.offset != (uintptr)arg) return oldval; if((int32)p->to.offset != p->to.offset) { ctxt->diag("overflow in PCDATA instruction: %P", p); @@ -248,9 +248,9 @@ linkpcln(Link *ctxt, LSym *cursym) npcdata = 0; nfuncdata = 0; for(p = cursym->text; p != nil; p = p->link) { - if(p->as == ctxt->arch->APCDATA && p->from.offset >= npcdata) + if(p->as == APCDATA && p->from.offset >= npcdata) npcdata = p->from.offset+1; - if(p->as == ctxt->arch->AFUNCDATA && p->from.offset >= nfuncdata) + if(p->as == AFUNCDATA && p->from.offset >= nfuncdata) nfuncdata = p->from.offset+1; } @@ -269,12 +269,12 @@ linkpcln(Link *ctxt, LSym *cursym) havepc = emallocz(n); havefunc = havepc + (npcdata+31)/32; for(p = cursym->text; p != nil; p = p->link) { - if(p->as == ctxt->arch->AFUNCDATA) { + if(p->as == AFUNCDATA) { if((havefunc[p->from.offset/32]>>(p->from.offset%32))&1) ctxt->diag("multiple definitions for FUNCDATA $%d", p->from.offset); havefunc[p->from.offset/32] |= 1<<(p->from.offset%32); } - if(p->as == ctxt->arch->APCDATA) + if(p->as == APCDATA) havepc[p->from.offset/32] |= 1<<(p->from.offset%32); } // pcdata. @@ -288,7 +288,7 @@ linkpcln(Link *ctxt, LSym *cursym) // funcdata if(nfuncdata > 0) { for(p = cursym->text; p != nil; p = p->link) { - if(p->as == ctxt->arch->AFUNCDATA) { + if(p->as == AFUNCDATA) { i = p->from.offset; pcln->funcdataoff[i] = p->to.offset; if(p->to.type != TYPE_CONST) { |
