symbol *except_gentables() { //printf("except_gentables()\n"); if (OUREH) { // BUG: alloca() changes the stack size, which is not reflected // in the fixed eh tables. assert(!usedalloca); char name[13+5+1]; static int tmpnum; sprintf(name,"_HandlerTable%d",tmpnum++); symbol *s = symbol_name(name,SCstatic,tsint); symbol_keep(s); symbol_debug(s); except_fillInEHTable(s); outdata(s); // output the scope table objmod->ehtables(funcsym_p,funcsym_p->Ssize,s); } return NULL; }
symbol *except_gentables() { //printf("except_gentables()\n"); if (config.ehmethod == EH_DM) { // BUG: alloca() changes the stack size, which is not reflected // in the fixed eh tables. if (Alloca.size) error(NULL, 0, 0, "cannot mix core.std.stdlib.alloca() and exception handling in %s()", funcsym_p->Sident); char name[13+5+1]; static int tmpnum; sprintf(name,"_HandlerTable%d",tmpnum++); symbol *s = symbol_name(name,SCstatic,tsint); symbol_keep(s); symbol_debug(s); except_fillInEHTable(s); outdata(s); // output the scope table objmod->ehtables(funcsym_p,funcsym_p->Ssize,s); } return NULL; }
void nteh_filltables() { #if MARS symbol *s = s_table; symbol_debug(s); except_fillInEHTable(s); #endif }
symbol *except_gentables() { //printf("except_gentables()\n"); #if OUREH // BUG: alloca() changes the stack size, which is not reflected // in the fixed eh tables. assert(!usedalloca); symbol *s = symbol_generate(SCstatic,tsint); s->Sseg = UNKNOWN; symbol_keep(s); symbol_debug(s); except_fillInEHTable(s); outdata(s); // output the scope table obj_ehtables(funcsym_p,funcsym_p->Ssize,s); #endif return NULL; }