aboutsummaryrefslogtreecommitdiff
path: root/i386-gen.c
diff options
context:
space:
mode:
authorgrischka <grischka>2009-12-19 22:08:52 +0100
committergrischka <grischka>2009-12-19 22:16:21 +0100
commit94bf4d2c227e2073458cabc768d1167e1f3ab2f8 (patch)
treec18160b09f29b7a3dddbdb10756edb1526d98f4e /i386-gen.c
parent1308e8ebcfba43b4b96b7ef32f1a177b1168665d (diff)
downloadtinycc-94bf4d2c227e2073458cabc768d1167e1f3ab2f8.tar.gz
tinycc-94bf4d2c227e2073458cabc768d1167e1f3ab2f8.tar.bz2
tccpe: improve dllimport
Diffstat (limited to 'i386-gen.c')
-rw-r--r--i386-gen.c31
1 files changed, 2 insertions, 29 deletions
diff --git a/i386-gen.c b/i386-gen.c
index 93af341..0bc41aa 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -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;