int main(int argc, char **argv) { char **sp; nltype **timesortnlp; char **defaultEs; --argc; argv++; debug = 0; bflag = TRUE; while ( *argv != 0 && **argv == '-' ) { (*argv)++; switch ( **argv ) { case 'a': aflag = TRUE; break; case 'b': bflag = FALSE; break; case 'C': Cflag = TRUE; cyclethreshold = atoi( *++argv ); break; case 'd': dflag = TRUE; setlinebuf(stdout); debug |= atoi( *++argv ); debug |= ANYDEBUG; # ifdef DEBUG printf("[main] debug = %d\n", debug); # else /* not DEBUG */ printf("gprof: -d ignored\n"); # endif /* DEBUG */ break; case 'E': ++argv; addlist( Elist , *argv ); Eflag = TRUE; addlist( elist , *argv ); eflag = TRUE; break; case 'e': addlist( elist , *++argv ); eflag = TRUE; break; case 'F': ++argv; addlist( Flist , *argv ); Fflag = TRUE; addlist( flist , *argv ); fflag = TRUE; break; case 'f': addlist( flist , *++argv ); fflag = TRUE; break; case 'k': addlist( kfromlist , *++argv ); addlist( ktolist , *++argv ); kflag = TRUE; break; case 'K': Kflag = TRUE; break; case 'l': lflag = 1; Lflag = 0; break; case 'L': Lflag = 1; lflag = 0; break; case 's': sflag = TRUE; break; case 'u': uflag = TRUE; break; case 'z': zflag = TRUE; break; } argv++; } if ( *argv != 0 ) { a_outname = *argv; argv++; } else { a_outname = A_OUTNAME; } if ( *argv != 0 ) { gmonname = *argv; argv++; } else { gmonname = (char *) malloc(strlen(a_outname)+6); strcpy(gmonname, a_outname); strcat(gmonname, ".gmon"); } /* * get information from the executable file. */ if ((Kflag && kernel_getnfile(a_outname, &defaultEs) == -1) || (!Kflag && elf_getnfile(a_outname, &defaultEs) == -1 && aout_getnfile(a_outname, &defaultEs) == -1)) errx(1, "%s: bad format", a_outname); /* * sort symbol table. */ qsort(nl, nname, sizeof(nltype), valcmp); /* * turn off default functions */ for ( sp = defaultEs ; *sp ; sp++ ) { Eflag = TRUE; addlist( Elist , *sp ); eflag = TRUE; addlist( elist , *sp ); } /* * get information about mon.out file(s). */ do { getpfile( gmonname ); if ( *argv != 0 ) { gmonname = *argv; } } while ( *argv++ != 0 ); /* * how many ticks per second? * if we can't tell, report time in ticks. */ if (hz == 0) { hz = 1; fprintf(stderr, "time is in ticks, not seconds\n"); } /* * dump out a gmon.sum file if requested */ if ( sflag ) { dumpsum( GMONSUM ); } /* * assign samples to procedures */ asgnsamples(); /* * assemble the dynamic profile */ timesortnlp = doarcs(); /* * print the dynamic profile */ if(!lflag) { printgprof( timesortnlp ); } /* * print the flat profile */ if(!Lflag) { printprof(); } /* * print the index */ printindex(); exit(0); }
int main(int argc, char *argv[]) { char **sp; nltype **timesortnlp; char **defaultEs; --argc; argv++; debug = 0; bflag = TRUE; while ( *argv != 0 && **argv == '-' ) { (*argv)++; switch ( **argv ) { case 'a': aflag = TRUE; break; case 'b': bflag = FALSE; break; case 'C': Cflag = TRUE; cyclethreshold = atoi( *++argv ); break; case 'c': #if defined(__i386__) || defined(__vax__) || defined(__tahoe__) || \ defined(__sparc__) || defined(__sparc64__) cflag = TRUE; #else fprintf(stderr, "%s: -c isn't supported on this architecture yet\n", __progname); exit(1); #endif break; case 'd': dflag = TRUE; setlinebuf(stdout); debug |= atoi( *++argv ); debug |= ANYDEBUG; # ifdef DEBUG printf("[main] debug = %d\n", debug); # else /* not DEBUG */ warnx("-d ignored"); # endif /* DEBUG */ break; case 'E': ++argv; addlist( Elist , *argv ); Eflag = TRUE; addlist( elist , *argv ); eflag = TRUE; break; case 'e': addlist( elist , *++argv ); eflag = TRUE; break; case 'F': ++argv; addlist( Flist , *argv ); Fflag = TRUE; addlist( flist , *argv ); fflag = TRUE; break; case 'f': addlist( flist , *++argv ); fflag = TRUE; break; case 'k': addlist( kfromlist , *++argv ); addlist( ktolist , *++argv ); kflag = TRUE; break; case 's': sflag = TRUE; break; case 'z': zflag = TRUE; break; } argv++; } if ( *argv != 0 ) { a_outname = *argv; argv++; } else { a_outname = A_OUTNAME; } if ( *argv != 0 ) { gmonname = *argv; argv++; } else { gmonname = GMONNAME; } /* * get information about a.out file. */ if (getnfile(a_outname, &defaultEs) == -1) errx(1, "%s: bad format", a_outname); /* * sort symbol table. */ qsort(nl, nname, sizeof(nltype), valcmp); /* * turn off default functions */ for ( sp = &defaultEs[0] ; *sp ; sp++ ) { Eflag = TRUE; addlist( Elist , *sp ); eflag = TRUE; addlist( elist , *sp ); } /* * get information about mon.out file(s). */ do { getpfile( gmonname ); if ( *argv != 0 ) { gmonname = *argv; } } while ( *argv++ != 0 ); /* * how many ticks per second? * if we can't tell, report time in ticks. */ if (hz == 0) { hz = 1; warnx("time is in ticks, not seconds"); } /* * dump out a gmon.sum file if requested */ if ( sflag ) { dumpsum( GMONSUM ); } /* * assign samples to procedures */ asgnsamples(); /* * assemble the dynamic profile */ timesortnlp = doarcs(); /* * print the dynamic profile */ printgprof( timesortnlp ); /* * print the flat profile */ printprof(); /* * print the index */ printindex(); return (0); }
int main( int argc, char **argv, char **envp) { uint32_t i; char **sp; nltype **timesortnlp; progname = argv[0]; --argc; argv++; debug = 0; bflag = TRUE; while(*argv != 0 && **argv == '-'){ (*argv)++; switch(**argv){ case 'a': aflag = TRUE; break; case 'b': bflag = FALSE; break; case 'c': printf("%s: -c not supported\n", progname); /* cflag = TRUE; */ break; case 'd': dflag = TRUE; (*argv)++; debug |= atoi(*argv); debug |= ANYDEBUG; #ifdef DEBUG printf("[main] debug = %u\n", debug); #else printf("%s: -d ignored\n", progname); #endif break; case 'E': ++argv; addlist(Elist, *argv); Eflag = TRUE; addlist(elist, *argv); eflag = TRUE; break; case 'e': addlist(elist, *++argv); eflag = TRUE; break; case 'F': ++argv; addlist(Flist, *argv); Fflag = TRUE; addlist(flist, *argv); fflag = TRUE; break; case 'f': addlist(flist, *++argv); fflag = TRUE; break; case 'S': Sflag = TRUE; break; case 's': sflag = TRUE; break; case 'x': xflag = TRUE; break; case 'z': zflag = TRUE; break; } argv++; } if(*argv != 0){ a_outname = *argv; argv++; } else{ a_outname = A_OUTNAME; } if(*argv != 0){ gmonname = *argv; argv++; } else{ gmonname = GMONNAME; } /* * Turn off default functions. */ for(sp = &defaultEs[0]; *sp; sp++){ Eflag = TRUE; addlist(Elist, *sp); eflag = TRUE; addlist(elist, *sp); } /* * Get information about a.out file. */ getnfile(); if(errors != 0) exit(1); /* * Get information about mon.out file(s). */ hz = 0; do{ getpfile(gmonname); if(*argv != 0){ gmonname = *argv; } }while(*argv++ != 0); /* * How many ticks per second? If we can't tell, report time in ticks. * If this was picked up from the mon.out files use that value. */ #ifndef __OPENSTEP__ if(hz == 0) #endif hz = hertz(); if(hz == 0){ hz = 1; fprintf(stderr, "time is in ticks, not seconds\n"); } /* * Dump out a gmon.sum file if requested. */ if(sflag){ dumpsum(GMONSUM); exit(0); } /* * Assign samples to procedures. */ alignentries(); for(i = 0; i < nsample_sets; i++) asgnsamples(sample_sets + i); /* * Assemble the dynamic profile. */ timesortnlp = doarcs(); /* * Print the dynamic profile. */ printgprof(timesortnlp); /* * Print the flat profile. */ printprof(); /* * Print the index. */ printindex(); /* * Dump out the order files if requested. */ if(Sflag) printscatter(); return(0); }