plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

main.c (1437B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <bio.h>
      4 #include <mach.h>
      5 #include "dat.h"
      6 
      7 int verbose;
      8 
      9 void
     10 usage(void)
     11 {
     12 	fprint(2, "usage: acidtypes [-v] [-p prefix] executable...\n");
     13 	exits("usage");
     14 }
     15 
     16 void
     17 main(int argc, char **argv)
     18 {
     19 	int i, have;
     20 	Fhdr *fp;
     21 	Biobuf b;
     22 	char err[ERRMAX];
     23 
     24 	quotefmtinstall();
     25 	fmtinstall('B', Bfmt);
     26 
     27 	ARGBEGIN{
     28 	case 'v':
     29 		verbose = 1;
     30 		break;
     31 	case 'p':
     32 		prefix = EARGF(usage());
     33 		break;
     34 	default:
     35 		usage();
     36 	}ARGEND
     37 
     38 	if(argc < 1)
     39 		usage();
     40 
     41 	Binit(&b, 1, OWRITE);
     42 	for(i=0; i<argc; i++){
     43 		Bprint(&b, "\n//\n// symbols for %s\n//\n\n", argv[i]);
     44 		if((fp = crackhdr(argv[i], OREAD)) == nil){
     45 			rerrstr(err, sizeof err);
     46 			Bprint(&b, "// open %s: %s\n\n", argv[i], err);
     47 			fprint(2, "open %s: %s\n", argv[i], err);
     48 			continue;
     49 		}
     50 		have = 0;
     51 		if(fp->dwarf){
     52 			if(dwarf2acid(fp->dwarf, &b) < 0){
     53 				rerrstr(err, sizeof err);
     54 				Bprint(&b, "// dwarf2acid %s: %s\n\n", argv[i], err);
     55 				fprint(2, "dwarf2acid %s: %s\n", argv[i], err);
     56 			}
     57 			have = 1;
     58 		}
     59 		if(fp->stabs.stabbase){
     60 			if(stabs2acid(&fp->stabs, &b) < 0){
     61 				rerrstr(err, sizeof err);
     62 				Bprint(&b, "// dwarf2acid %s: %s\n\n", argv[i], err);
     63 				fprint(2, "dwarf2acid %s: %s\n", argv[i], err);
     64 			}
     65 			have = 1;
     66 		}
     67 
     68 		if(!have){
     69 			Bprint(&b, "// no debugging symbols in %s\n\n", argv[i]);
     70 		/*	fprint(2, "no debugging symbols in %s\n", argv[i]); */
     71 		}
     72 		uncrackhdr(fp);
     73 	}
     74 	Bflush(&b);
     75 	Bterm(&b);
     76 	exits(0);
     77 }