Blame


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