int goto_instrument_parse_optionst::doit() { if(cmdline.isset("version")) { std::cout << CBMC_VERSION << std::endl; return 0; } if(cmdline.args.size()!=1 && cmdline.args.size()!=2) { help(); return 0; } eval_verbosity(); try { register_languages(); get_goto_program(); instrument_goto_program(); if(cmdline.isset("show-value-sets")) { do_function_pointer_removal(); do_partial_inlining(); // recalculate numbers, etc. goto_functions.update(); status() << "Pointer Analysis" << eom; namespacet ns(symbol_table); value_set_analysist value_set_analysis(ns); value_set_analysis(goto_functions); show_value_sets(get_ui(), goto_functions, value_set_analysis); return 0; } if(cmdline.isset("show-global-may-alias")) { do_function_pointer_removal(); do_partial_inlining(); do_remove_returns(); parameter_assignments(symbol_table, goto_functions); // recalculate numbers, etc. goto_functions.update(); namespacet ns(symbol_table); global_may_alias_analysist global_may_alias_analysis; global_may_alias_analysis(goto_functions, ns); global_may_alias_analysis.output(ns, goto_functions, std::cout); return 0; } if(cmdline.isset("show-local-bitvector-analysis")) { do_function_pointer_removal(); do_partial_inlining(); parameter_assignments(symbol_table, goto_functions); // recalculate numbers, etc. goto_functions.update(); namespacet ns(symbol_table); forall_goto_functions(it, goto_functions) { local_bitvector_analysist local_bitvector_analysis(it->second); std::cout << ">>>>" << std::endl; std::cout << ">>>> " << it->first << std::endl; std::cout << ">>>>" << std::endl; local_bitvector_analysis.output(std::cout, it->second, ns); std::cout << std::endl; } return 0; }
int goto_fence_inserter_parse_optionst::doit() { if(cmdline.isset("version")) { std::cout << MUSKETEER_VERSION << std::endl; return 0; } if(cmdline.args.size()!=1 && cmdline.args.size()!=2) { help(); return 0; } set_verbosity(); try { register_languages(); goto_functionst goto_functions; get_goto_program(goto_functions); instrument_goto_program(goto_functions); // write new binary? if(cmdline.args.size()==2) { status() << "Writing GOTO program to " << cmdline.args[1] << eom; if(write_goto_binary( cmdline.args[1], symbol_table, goto_functions, get_message_handler())) return 1; else return 0; } // help(); return 0; } catch(const char *e) { error() << e << eom; return 11; } catch(const std::string e) { error() << e << eom; return 11; } catch(int) { return 11; } catch(std::bad_alloc) { error() << "Out of memory" << eom; return 11; } }