Go to the documentation of this file.
17 #ifndef CPROVER_GOTO_PROGRAMS_RESTRICT_FUNCTION_POINTERS_H
18 #define CPROVER_GOTO_PROGRAMS_RESTRICT_FUNCTION_POINTERS_H
20 #include <unordered_map>
21 #include <unordered_set>
36 #define RESTRICT_FUNCTION_POINTER_OPT "restrict-function-pointer"
37 #define RESTRICT_FUNCTION_POINTER_FROM_FILE_OPT \
38 "function-pointer-restrictions-file"
39 #define RESTRICT_FUNCTION_POINTER_BY_NAME_OPT \
40 "restrict-function-pointer-by-name"
42 #define OPT_RESTRICT_FUNCTION_POINTER \
43 "(" RESTRICT_FUNCTION_POINTER_OPT \
45 "(" RESTRICT_FUNCTION_POINTER_FROM_FILE_OPT \
47 "(" RESTRICT_FUNCTION_POINTER_BY_NAME_OPT "):"
49 #define HELP_RESTRICT_FUNCTION_POINTER \
50 " --" RESTRICT_FUNCTION_POINTER_OPT \
51 " <pointer_name>/<target[,targets]*>\n" \
52 " restrict a function pointer to a set of " \
53 "possible targets\n" \
54 " targets must all exist in the symbol table" \
55 " with a matching type\n" \
56 " works for globals and function parameters" \
58 " --" RESTRICT_FUNCTION_POINTER_FROM_FILE_OPT \
60 " add function pointer restrictions from " \
62 " --" RESTRICT_FUNCTION_POINTER_BY_NAME_OPT \
63 " <symbol_name>/target[targets]*>\n" \
64 " restrict a function pointer where " \
66 " is the unmangled name, before labelling " \
80 std::string
what()
const override;
89 std::unordered_map<irep_idt, std::unordered_set<irep_idt>>;
105 const std::string &filename,
121 const std::list<std::string> &filenames,
126 const std::list<std::string> &restriction_opts,
130 const std::list<std::string> &restriction_opts,
131 const std::string &option,
135 const std::string &restriction_opt,
136 const std::string &option,
157 const std::list<std::string> &restriction_name_opts,
174 #endif // CPROVER_GOTO_PROGRAMS_RESTRICT_FUNCTION_POINTERS_H
std::string correct_format
static restrictiont parse_function_pointer_restriction(const std::string &restriction_opt, const std::string &option, const goto_modelt &goto_model)
void restrict_function_pointers(message_handlert &message_handler, goto_modelt &goto_model, const optionst &options)
Apply function pointer restrictions to a goto_model.
static function_pointer_restrictionst from_options(const optionst &options, const goto_modelt &goto_model, message_handlert &message_handler)
Parse function pointer restrictions from command line.
static restrictionst parse_function_pointer_restrictions_from_command_line(const std::list< std::string > &restriction_opts, const goto_modelt &goto_model)
static restrictionst parse_function_pointer_restrictions(const std::list< std::string > &restriction_opts, const std::string &option, const goto_modelt &goto_model)
const restrictionst restrictions
static restrictionst get_function_pointer_by_name_restrictions(const std::list< std::string > &restriction_name_opts, const goto_modelt &goto_model)
Get function pointer restrictions from restrictions with named pointers.
static restrictionst merge_function_pointer_restrictions(restrictionst lhs, const restrictionst &rhs)
static void json(json_objectT &result, const irep_idt &property_id, const property_infot &property_info)
std::unordered_map< irep_idt, std::unordered_set< irep_idt > > restrictionst
static function_pointer_restrictionst read_from_file(const std::string &filename, const goto_modelt &goto_model, message_handlert &message_handler)
static optionalt< restrictiont > get_by_name_restriction(const goto_functiont &goto_function, const function_pointer_restrictionst::restrictionst &by_name_restrictions, const goto_programt::const_targett &location)
A goto function, consisting of function body (see body) and parameter identifiers (see parameter_iden...
restrictionst::value_type restrictiont
nonstd::optional< T > optionalt
static function_pointer_restrictionst from_json(const jsont &json, const goto_modelt &goto_model)
std::string what() const override
A human readable description of what went wrong.
invalid_restriction_exceptiont(std::string reason, std::string correct_format="")
static restrictionst parse_function_pointer_restrictions_from_file(const std::list< std::string > &filenames, const goto_modelt &goto_model, message_handlert &message_handler)
void parse_function_pointer_restriction_options_from_cmdline(const cmdlinet &cmdline, optionst &options)
static void typecheck_function_pointer_restrictions(const goto_modelt &goto_model, const restrictionst &restrictions)
void write_to_file(const std::string &filename) const
instructionst::const_iterator const_targett
std::string reason
The reason this exception was generated.
Base class for exceptions thrown in the cprover project.