/* List a variable */ void list_var(SYM *sp, int i) { int j; long val; if (!prm_listfile) return ; if (sp->dontlist) return; if (sp->tp->type == bt_defunc) { sp = sp->tp->lst.head; while (sp) { list_var(sp, 0); sp = sp->next; } return ; } for (j = i; j; --j) fprintf(listFile, " "); if ((sp->storage_class == sc_auto || sp->storage_class == sc_autoreg) && !sp->inreg) val = (long)getautoval(sp->value.i); else if (sp->storage_class == sc_static || sp->storage_class == sc_global) val = sp->offset; else val = sp->value.u; fprintf(listFile,"Identifier: %s\n ", unmangledname(sp->name)); for (j = i; j; --j) fprintf(listFile, " "); if (sp->inreg) { fprintf(listFile,"Register: %-3s ", registers[( - val) & 255]); } else fprintf(listFile,"Offset: %08X ", val); fprintf(listFile,"Storage: "); if (sp->tp->type == bt_ifunc) if (sp->value.classdata.cppflags &PF_INLINE) fprintf(listFile,"%-7s","inline"); else fprintf(listFile,"%-7s","code"); else if (sp->storage_class == sc_auto) if (sp->inreg) fprintf(listFile,"%-7s","reg"); else fprintf(listFile,"%-7s","stack"); else if (sp->storage_class == sc_global || sp->storage_class == sc_static) if ((sp->tp->cflags &DF_CONST) && !(sp->tp->cflags &DF_VOL)) fprintf(listFile,"%-7s","const"); else if (sp->init) fprintf(listFile,"%-7s","data"); else fprintf(listFile,"%-7s","bss"); else if (sp->storage_class == sc_const) fprintf(listFile,"%-7s","inline"); else fprintf(listFile,"%-7s","none"); put_sc(sp->storage_class); put_ty(sp->tp); fprintf(listFile, "\n"); if (sp->tp == 0) return ; if (isstructured(sp->tp) && sp->storage_class == sc_type) list_table(&(sp->tp->lst), i + 1); }
/* List a variable */ void list_var(SYMBOL *sp, int i) { int j; long val; if (!cparams.prm_listfile) return ; if (sp->dontlist) return; if (sp->tp->type == bt_aggregate) { HASHREC *hr = sp->tp->syms->table[0]; while (hr) { sp = (SYMBOL *)hr->p; list_var(sp, 0); hr = hr->next; } return ; } for (j = i; j; --j) fprintf(listFile, " "); if (sp->storage_class == sc_auto && !sp->regmode) val = (long)getautoval(sp->offset); else val = sp->value.u; fprintf(listFile,"Identifier: %s\n ", unmangledname(sp->name)); for (j = i; j; --j) fprintf(listFile, " "); if (sp->regmode == 1) { fprintf(listFile,"Register: %-3s& ",lookupRegName((-sp->offset) & 255)); } else if (sp->regmode == 2) { fprintf(listFile,"Register: %-3s ",lookupRegName((-sp->offset) & 255)); } else fprintf(listFile,"Offset: %08lX ", val); fprintf(listFile,"Storage: "); if (sp->tp->type == bt_ifunc) if (sp->isInline && !sp->noinline) fprintf(listFile,"%-7s","inline"); else fprintf(listFile,"%-7s","code"); else if (sp->storage_class == sc_auto) if (sp->regmode) fprintf(listFile,"%-7s","reg"); else fprintf(listFile,"%-7s","stack"); else if (sp->storage_class == sc_global || sp->storage_class == sc_static || sp->storage_class == sc_localstatic) if (isconst(sp->tp)) fprintf(listFile,"%-7s","const"); else if (sp->init) fprintf(listFile,"%-7s","data"); else fprintf(listFile,"%-7s","bss"); else if (sp->storage_class == sc_constant || sp->storage_class == sc_enumconstant) fprintf(listFile,"%-7s","constant"); else fprintf(listFile,"%-7s","none"); put_sc(sp->storage_class); put_ty(sp->tp); fprintf(listFile, "\n"); if (sp->tp == 0) return ; if (isstructured(sp->tp) && sp->storage_class == sc_type) list_table(sp->tp->syms, i + 1); }