diff options
| author | grischka <grischka> | 2009-12-19 22:08:52 +0100 |
|---|---|---|
| committer | grischka <grischka> | 2009-12-19 22:16:21 +0100 |
| commit | 94bf4d2c227e2073458cabc768d1167e1f3ab2f8 (patch) | |
| tree | c18160b09f29b7a3dddbdb10756edb1526d98f4e /i386-gen.c | |
| parent | 1308e8ebcfba43b4b96b7ef32f1a177b1168665d (diff) | |
| download | tinycc-94bf4d2c227e2073458cabc768d1167e1f3ab2f8.tar.gz tinycc-94bf4d2c227e2073458cabc768d1167e1f3ab2f8.tar.bz2 | |
tccpe: improve dllimport
Diffstat (limited to 'i386-gen.c')
| -rw-r--r-- | i386-gen.c | 31 |
1 files changed, 2 insertions, 29 deletions
@@ -197,33 +197,6 @@ static void gen_modrm(int op_reg, int r, Sym *sym, int c) } } -#ifdef TCC_TARGET_PE -static void mk_pointer(CType *type); -static void indir(void); - -int handle_dllimport(int r, SValue *sv, void (*fn)(int r, SValue *sv)) -{ - if ((sv->r & (VT_VALMASK|VT_SYM|VT_CONST)) != (VT_SYM|VT_CONST)) - return 0; - if (0 == (sv->sym->type.t & VT_IMPORT)) - return 0; - - printf("import %d %04x %s\n", r, ind, get_tok_str(sv->sym->v, NULL)); - - sv->sym->type.t &= ~VT_IMPORT; - ++vtop; - - *vtop = *sv; - mk_pointer(&vtop->type); - indir(); - fn(r, vtop); - - --vtop; - sv->sym->type.t |= VT_IMPORT; - return 1; -} -#endif - /* load 'r' from value 'sv' */ void load(int r, SValue *sv) { @@ -231,7 +204,7 @@ void load(int r, SValue *sv) SValue v1; #ifdef TCC_TARGET_PE - if (handle_dllimport(r, sv, load)) + if (pe_dllimport(r, sv, load)) return; #endif fr = sv->r; @@ -299,7 +272,7 @@ void store(int r, SValue *v) int fr, bt, ft, fc; #ifdef TCC_TARGET_PE - if (handle_dllimport(r, v, store)) + if (pe_dllimport(r, v, store)) return; #endif ft = v->type.t; |
