int cbmc_parseoptionst::doit() { if(cmdline.isset("version")) { std::cout << CBMC_VERSION << std::endl; return 0; } // // unwinding of transition systems // if(cmdline.isset("module") || cmdline.isset("gen-interface")) { error("This version of CBMC has no support for " " hardware modules. Please use hw-cbmc."); return 1; } register_languages(); // // command line options // optionst options; get_command_line_options(options); bmct bmc(options, context, ui_message_handler); set_verbosity(bmc); set_verbosity(*this); if(cmdline.isset("preprocess")) { preprocessing(); return 0; } goto_functionst goto_functions; if(get_goto_program(options, bmc, goto_functions)) return 6; if(cmdline.isset("show-claims")) { const namespacet ns(context); show_claims(ns, get_ui(), goto_functions); return 0; } if(set_claims(goto_functions)) return 7; // do actual BMC return do_bmc(bmc, goto_functions); }
int preparet::doit() { register_languages(); try { // do we have a goto binary? if(cmdline.args.size()==1 && is_goto_binary(cmdline.args[0])) { status("Reading GOTO program from file"); if(read_goto_binary(cmdline.args[0], context, goto_functions, get_message_handler())) return 1; config.ansi_c.set_from_context(context); } else { // // parsing // if(parse()) return 1; // // type checking // if(typecheck()) return 1; // // final adjustments // if(final()) return 1; } { int return_value_get_sync_modules=get_sync_modules(); if(return_value_get_sync_modules>=0) return return_value_get_sync_modules; } { int return_value_get_async_modules=get_async_modules(); if(return_value_get_async_modules>=0) return return_value_get_async_modules; } if(cmdline.isset("show-claims")) { show_claims(ns, get_ui(), goto_functions); return 0; } // get the user provided predicates if(cmdline.isset("predicates")) get_predicates( cmdline.getval("predicates"), get_message_handler(), ns, user_provided_predicates); } catch(const char *e) { error(e); return 1; } catch(const std::string e) { error(e); return 1; } catch(int) { return 1; } return -1; // proceed! }