12 void print_help (char *prgname
)
16 " %s [-g] [-n nidsfile] [-v] prxfile\n"
18 " -g output graphviz dot\n"
19 " -t print depth first search number\n"
20 " -r print the reverse depth first search number\n"
21 " -d print the dominator\n"
22 " -x print the reverse dominator\n"
23 " -f print the frontier\n"
24 " -z print the reverse frontier\n"
25 " -p print phi functions\n"
26 " -q print code into nodes\n"
27 " -s print structures\n"
28 " -e print edge types\n"
30 " -v increase verbosity\n"
31 " -n specify nids xml file\n"
32 " -i print prx info\n",
37 int main (int argc
, char **argv
)
39 char *prxfilename
= NULL
;
40 char *nidsfilename
= NULL
;
42 int i
, j
, verbosity
= 0;
43 int printgraph
= FALSE
;
44 int printcode
= FALSE
;
45 int printinfo
= FALSE
;
48 struct nidstable
*nids
= NULL
;
52 for (i
= 1; i
< argc
; i
++) {
53 if (strcmp ("--help", argv
[i
]) == 0) {
56 } else if (argv
[i
][0] == '-') {
58 for (j
= 0; s
[j
]; j
++) {
60 case 'v': verbosity
++; break;
61 case 'g': printgraph
= TRUE
; break;
62 case 'c': printcode
= TRUE
; break;
63 case 'i': printinfo
= TRUE
; break;
64 case 't': graphoptions
|= OUT_PRINT_DFS
; break;
65 case 'r': graphoptions
|= OUT_PRINT_RDFS
; break;
66 case 'd': graphoptions
|= OUT_PRINT_DOMINATOR
; break;
67 case 'x': graphoptions
|= OUT_PRINT_RDOMINATOR
; break;
68 case 'f': graphoptions
|= OUT_PRINT_FRONTIER
; break;
69 case 'z': graphoptions
|= OUT_PRINT_RFRONTIER
; break;
70 case 'p': graphoptions
|= OUT_PRINT_PHIS
; break;
71 case 'q': graphoptions
|= OUT_PRINT_CODE
; break;
72 case 's': graphoptions
|= OUT_PRINT_STRUCTURES
; break;
73 case 'e': graphoptions
|= OUT_PRINT_EDGE_TYPES
; break;
76 fatal (__FILE__
": missing nids file");
78 nidsfilename
= argv
[++i
];
83 prxfilename
= argv
[i
];
93 nids
= nids_load (nidsfilename
);
95 p
= prx_load (prxfilename
);
97 fatal (__FILE__
": can't load prx `%s'", prxfilename
);
100 prx_resolve_nids (p
, nids
);
102 if (verbosity
> 2 && nids
&& printinfo
)
105 if (verbosity
> 0 && printinfo
)
106 prx_print (p
, (verbosity
> 1));
108 c
= code_analyse (p
);
110 fatal (__FILE__
": can't analyse code `%s'", prxfilename
);
114 print_graph (c
, prxfilename
, graphoptions
);
117 print_code (c
, prxfilename
, verbosity
);