Symbol *Dsymbol::toImport(Symbol *sym) { char *id; char *n; Symbol *s; type *t; //printf("Dsymbol::toImport('%s')\n", sym->Sident); n = sym->Sident; id = (char *) alloca(6 + strlen(n) + 1 + sizeof(type_paramsize(sym->Stype))*3 + 1); if (sym->Stype->Tmangle == mTYman_std && tyfunc(sym->Stype->Tty)) { if (config.exe == EX_WIN64) sprintf(id,"__imp_%s",n); else sprintf(id,"_imp__%s@%lu",n,(unsigned long)type_paramsize(sym->Stype)); } else if (sym->Stype->Tmangle == mTYman_d) sprintf(id,"_imp_%s",n); else sprintf(id,"_imp__%s",n); t = type_alloc(TYnptr | mTYconst); t->Tnext = sym->Stype; t->Tnext->Tcount++; t->Tmangle = mTYman_c; t->Tcount++; s = symbol_calloc(id); s->Stype = t; s->Sclass = SCextern; s->Sfl = FLextern; slist_add(s); return s; }
Symbol *Dsymbol::toImport(Symbol *sym) { char *id; char *n; Symbol *s; type *t; //printf("Dsymbol::toImport('%s')\n", sym->Sident); n = sym->Sident; id = (char *) alloca(6 + strlen(n) + 5 + 1); if (sym->Stype->Tmangle == mTYman_std) { sprintf(id,"_imp__%s@%d",n,type_paramsize(sym->Stype)); } else if (sym->Stype->Tmangle == mTYman_d) sprintf(id,"_imp_%s",n); else sprintf(id,"_imp__%s",n); t = type_alloc(TYnptr | mTYconst); t->Tnext = sym->Stype; t->Tnext->Tcount++; t->Tmangle = mTYman_c; t->Tcount++; s = symbol_calloc(id); s->Stype = t; s->Sclass = SCextern; s->Sfl = FLextern; slist_add(s); return s; }