ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
esbmc_parseoptions.h
Go to the documentation of this file.
1#ifndef CPROVER_ESBMC_PARSEOPTIONS_H
2#define CPROVER_ESBMC_PARSEOPTIONS_H
3
4#include <esbmc/bmc.h>
11#include <util/base/threeval.h>
12#include <string_view>
13
14// Macro to determine if color output should be enabled
15#ifdef _WIN32
16# include <io.h>
17# define ENABLE_COLOR(val) \
18 ((val) == "always" || ((val) == "auto" && _isatty(_fileno(stderr))))
19#else
20# include <unistd.h>
21# define ENABLE_COLOR(val) \
22 ((val) == "always" || ((val) == "auto" && isatty(fileno(stderr))))
23#endif
24
25extern const struct group_opt_templ all_cmd_options[];
26
28{
29public:
30 int doit() override;
31 void help() override;
32 const char *fatal_signal_advice() const override
33 {
34 return "Re-run with --segfault-handler for a backtrace.\n";
35 }
36
37 esbmc_parseoptionst(int argc, const char **argv)
39 {
40 }
41
43 {
44 close_file(out);
45 }
46
47protected:
48 virtual void get_command_line_options(optionst &options);
49 virtual int do_bmc(bmct &bmc);
50
51 virtual bool
53
54 virtual bool
56
57 virtual bool
59
60 virtual bool
62
64 bool wants_loop_invariants() const;
65
70 const optionst &options,
71 bool k_induction_ran);
72
73 virtual bool
75
87 bool has_replace,
88 bool has_enforce,
89 bool has_enforce_all,
90 bool has_replace_all);
91
93
95 bool ts_strategy_requested() const;
96
98 optionst &options,
100
102 optionst &options,
104
106
108
110 optionst &options,
112 const uint64_t &k_step);
113
115 optionst &options,
117 const uint64_t &k_step);
118
120 optionst &options,
122 const uint64_t &k_step);
123
125 optionst &options,
127 uint64_t k_step);
128
130
133
140 optionst &options,
142
144
145 uint64_t read_time_spec(std::string_view str);
146 uint64_t read_mem_spec(std::string_view str);
147
148 void preprocessing();
149
152 const std::string &prefix,
153 std::set<std::string> &used_syms) const;
157 const std::map<std::string, std::pair<std::set<std::string>, expr2tc>>
158 &monitors);
159
161
163
164 std::vector<std::unique_ptr<goto_functions_algorithm>>
166
167 // Dead-store advisories (CWE-563) collected by --dead-store-check during
168 // goto preprocessing; surfaced textually and (via bmct) in SARIF.
169 std::vector<dead_store_advisoryt> dead_store_advisories;
170
171 // coverage mode
173
174private:
175 bool resolve_color_option() const;
176 void close_file(FILE *f)
177 {
178 if (f != stdout && f != stderr)
179 {
180 fclose(f);
181 }
182 }
183
184public:
186};
187
188#endif
Definition bmc.h:25
Definition context.h:57
void apply_loop_invariants(goto_functionst &goto_functions, contextt &context, const optionst &options, bool k_induction_ran)
Synthesise the invariants when asked, then run the schema over them.
Definition process_goto_program.cpp:886
void add_monitor_exprs(goto_programt::targett insn, goto_programt::instructionst &insn_list, const std::map< std::string, std::pair< std::set< std::string >, expr2tc > > &monitors)
Definition property_monitors.cpp:223
void print_ileave_points(namespacet &ns, goto_functionst &goto_functions)
Definition property_monitors.cpp:309
void diagnose_unknown_properties(optionst &options, goto_functionst &goto_functions, uint64_t k_step)
Definition k_induction.cpp:931
int falsify_with_bounded_schedules(optionst &options, goto_functionst &goto_functions)
Definition bmc_strategy.cpp:632
goto_functionst goto_functions
Definition esbmc_parseoptions.h:185
bool read_goto_binary(goto_functionst &goto_functions)
Definition goto_program.cpp:491
uint64_t read_mem_spec(std::string_view str)
Definition command_line_options.cpp:263
void preprocessing()
Definition goto_program.cpp:1049
expr2tc calculate_a_property_monitor(const std::string &prefix, std::set< std::string > &used_syms) const
Definition property_monitors.cpp:200
const char * fatal_signal_advice() const override
One line naming what this driver offers for a fuller crash report, or null.
Definition esbmc_parseoptions.h:32
bool has_cbmc_binary_input()
True if any –binary input is a CBMC goto-binary (magic 0x7f 'G' 'B' 'F').
Definition goto_program.cpp:509
int run_chosen_strategy(optionst &options, goto_functionst &goto_functions)
Definition driver.cpp:311
bool wants_loop_invariants() const
Whether the run needs the loop-invariant machinery.
Definition process_goto_program.cpp:878
bool set_claims(goto_functionst &goto_functions)
Definition goto_program.cpp:103
bool process_function_contracts(goto_functionst &goto_functions, bool has_replace, bool has_enforce, bool has_enforce_all, bool has_replace_all)
Process function contracts if enabled.
Definition function_contracts.cpp:12
int doit_k_induction_parallel()
Definition k_induction.cpp:167
int do_context_bound_deepening(optionst &options, goto_functionst &goto_functions)
Definition bmc_strategy.cpp:571
virtual void get_command_line_options(optionst &options)
Definition command_line_options.cpp:387
int do_bmc_strategy(optionst &options, goto_functionst &goto_functions)
Definition bmc_strategy.cpp:255
virtual int do_bmc(bmct &bmc)
Definition bmc_strategy.cpp:714
bool is_coverage
Definition esbmc_parseoptions.h:172
void add_property_monitors(goto_functionst &goto_functions, namespacet &ns)
Definition property_monitors.cpp:73
tvt does_forward_condition_hold(optionst &options, goto_functionst &goto_functions, const uint64_t &k_step)
Definition k_induction.cpp:803
uint64_t read_time_spec(std::string_view str)
Definition command_line_options.cpp:206
virtual bool create_goto_program(optionst &options, goto_functionst &goto_functions)
Definition goto_program.cpp:384
int do_ts_strategy(optionst &options, goto_functionst &goto_functions)
Definition ts_strategy.cpp:18
virtual bool output_goto_program(optionst &options, goto_functionst &goto_functions)
Definition goto_program.cpp:890
virtual bool parse_goto_program(optionst &options, goto_functionst &goto_functions)
Definition goto_program.cpp:801
tvt is_inductive_step_violated(optionst &options, goto_functionst &goto_functions, const uint64_t &k_step)
Definition k_induction.cpp:872
esbmc_parseoptionst(int argc, const char **argv)
Definition esbmc_parseoptions.h:37
bool ts_strategy_requested() const
Definition ts_strategy.cpp:13
virtual bool get_goto_program(optionst &options, goto_functionst &goto_functions)
Definition goto_program.cpp:144
virtual bool process_goto_program(optionst &options, goto_functionst &goto_functions)
Definition process_goto_program.cpp:224
~esbmc_parseoptionst()
Definition esbmc_parseoptions.h:42
int doit() override
Definition driver.cpp:332
FILE * out
Definition esbmc_parseoptions.h:162
std::vector< std::unique_ptr< goto_functions_algorithm > > goto_preprocess_algorithms
Definition esbmc_parseoptions.h:165
std::vector< dead_store_advisoryt > dead_store_advisories
Definition esbmc_parseoptions.h:169
void help() override
Definition driver.cpp:643
bool synthesize_cprover_additions(optionst &options, goto_functionst &goto_functions)
Synthesises ESBMC's "additions" (the __ESBMC_main entry wrapper and the CPROVER-intrinsic bodies) by ...
Definition goto_program.cpp:603
tvt is_base_case_violated(optionst &options, goto_functionst &goto_functions, const uint64_t &k_step)
Definition k_induction.cpp:750
Definition goto_functions.h:56
std::list< class instructiont > instructionst
Definition goto_program.h:588
instructionst::iterator targett
Definition goto_program.h:590
contextt context
Definition language_ui.h:13
language_uit()
Definition language_ui.cpp:9
namespacet ns
Definition language_ui.h:14
Definition namespace.h:10
Definition options.h:11
parseoptions_baset(const struct group_opt_templ *opts, int argc, const char **argv)
Definition parseoptions.cpp:13
Definition threeval.h:10
const struct group_opt_templ all_cmd_options[]
Definition options.cpp:8
irep_container< expr2t > expr2tc
Definition irep2.h:431
int fclose(FILE *stream)
Definition io.c:105
FILE * stdout
FILE * stderr
__ESBMC_C_CPP_BEGIN struct __esbmc_file_t FILE
Definition cmdline.h:25