CBMC
|
This contains implementation details of function call harness generator to avoid leaking them out into the header. More...
Public Member Functions | |
void | generate (goto_modelt &goto_model, const irep_idt &harness_function_name) |
void | generate_nondet_globals (code_blockt &function_body) |
Iterate over the symbol table and generate initialisation code for globals into the function body. More... | |
const symbolt & | lookup_function_to_call () |
Return a reference to the entry function or throw if it doesn't exist. More... | |
void | generate_initialisation_code_for (code_blockt &block, const exprt &lhs) |
Generate initialisation code for one lvalue inside block. More... | |
void | ensure_harness_does_not_already_exist () |
Throw if the harness function already exists in the symbol table. More... | |
void | add_harness_function_to_goto_model (code_blockt function_body) |
Update the goto-model with the new harness function. More... | |
code_function_callt::argumentst | declare_arguments (code_blockt &function_body) |
Declare local variables for each of the parameters of the entry function and return them. More... | |
void | call_function (const code_function_callt::argumentst &arguments, code_blockt &function_body) |
Write initialisation code for each of the arguments into function_body, then insert a call to the entry function with the arguments. More... | |
std::unordered_set< irep_idt > | map_function_parameters_to_function_argument_names () |
For function parameters that are pointers to functions we want to be able to specify whether or not they can be NULL. More... | |
Public Attributes | |
ui_message_handlert * | message_handler |
irep_idt | function |
irep_idt | harness_function_name |
symbol_tablet * | symbol_table |
goto_functionst * | goto_functions |
bool | nondet_globals = false |
recursive_initialization_configt | recursive_initialization_config |
std::unique_ptr< recursive_initializationt > | recursive_initialization |
std::set< irep_idt > | function_parameters_to_treat_as_arrays |
std::set< irep_idt > | function_arguments_to_treat_as_arrays |
std::vector< std::set< irep_idt > > | function_parameters_to_treat_equal |
std::vector< std::set< irep_idt > > | function_arguments_to_treat_equal |
std::set< irep_idt > | function_parameters_to_treat_as_cstrings |
std::set< irep_idt > | function_arguments_to_treat_as_cstrings |
std::map< irep_idt, irep_idt > | function_argument_to_associated_array_size |
std::map< irep_idt, irep_idt > | function_parameter_to_associated_array_size |
std::set< symbol_exprt > | global_pointers |
This contains implementation details of function call harness generator to avoid leaking them out into the header.
Definition at line 36 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::add_harness_function_to_goto_model | ( | code_blockt | function_body | ) |
Update the goto-model with the new harness function.
Definition at line 439 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::call_function | ( | const code_function_callt::argumentst & | arguments, |
code_blockt & | function_body | ||
) |
Write initialisation code for each of the arguments into function_body, then insert a call to the entry function with the arguments.
Definition at line 537 of file function_call_harness_generator.cpp.
code_function_callt::argumentst function_call_harness_generatort::implt::declare_arguments | ( | code_blockt & | function_body | ) |
Declare local variables for each of the parameters of the entry function and return them.
Definition at line 459 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::ensure_harness_does_not_already_exist | ( | ) |
Throw if the harness function already exists in the symbol table.
Definition at line 428 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::generate | ( | goto_modelt & | goto_model, |
const irep_idt & | harness_function_name | ||
) |
Definition at line 224 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::generate_initialisation_code_for | ( | code_blockt & | block, |
const exprt & | lhs | ||
) |
Generate initialisation code for one lvalue inside block.
Definition at line 295 of file function_call_harness_generator.cpp.
void function_call_harness_generatort::implt::generate_nondet_globals | ( | code_blockt & | function_body | ) |
Iterate over the symbol table and generate initialisation code for globals into the function body.
Definition at line 268 of file function_call_harness_generator.cpp.
const symbolt & function_call_harness_generatort::implt::lookup_function_to_call | ( | ) |
Return a reference to the entry function or throw if it doesn't exist.
Definition at line 413 of file function_call_harness_generator.cpp.
std::unordered_set< irep_idt > function_call_harness_generatort::implt::map_function_parameters_to_function_argument_names | ( | ) |
For function parameters that are pointers to functions we want to be able to specify whether or not they can be NULL.
To disambiguate this specification from that for a global variable of the same name, we prepend the name of the function to the parameter name. However, what is actually being initialised in the implementation is not the parameter itself, but a corresponding function argument (local variable of the harness function). We need a mapping from function parameter name to function argument names, and this is what this function does.
Definition at line 556 of file function_call_harness_generator.cpp.
irep_idt function_call_harness_generatort::implt::function |
Definition at line 39 of file function_call_harness_generator.cpp.
std::map<irep_idt, irep_idt> function_call_harness_generatort::implt::function_argument_to_associated_array_size |
Definition at line 57 of file function_call_harness_generator.cpp.
std::set<irep_idt> function_call_harness_generatort::implt::function_arguments_to_treat_as_arrays |
Definition at line 49 of file function_call_harness_generator.cpp.
std::set<irep_idt> function_call_harness_generatort::implt::function_arguments_to_treat_as_cstrings |
Definition at line 55 of file function_call_harness_generator.cpp.
std::vector<std::set<irep_idt> > function_call_harness_generatort::implt::function_arguments_to_treat_equal |
Definition at line 52 of file function_call_harness_generator.cpp.
std::map<irep_idt, irep_idt> function_call_harness_generatort::implt::function_parameter_to_associated_array_size |
Definition at line 58 of file function_call_harness_generator.cpp.
std::set<irep_idt> function_call_harness_generatort::implt::function_parameters_to_treat_as_arrays |
Definition at line 48 of file function_call_harness_generator.cpp.
std::set<irep_idt> function_call_harness_generatort::implt::function_parameters_to_treat_as_cstrings |
Definition at line 54 of file function_call_harness_generator.cpp.
std::vector<std::set<irep_idt> > function_call_harness_generatort::implt::function_parameters_to_treat_equal |
Definition at line 51 of file function_call_harness_generator.cpp.
std::set<symbol_exprt> function_call_harness_generatort::implt::global_pointers |
Definition at line 60 of file function_call_harness_generator.cpp.
goto_functionst* function_call_harness_generatort::implt::goto_functions |
Definition at line 42 of file function_call_harness_generator.cpp.
irep_idt function_call_harness_generatort::implt::harness_function_name |
Definition at line 40 of file function_call_harness_generator.cpp.
ui_message_handlert* function_call_harness_generatort::implt::message_handler |
Definition at line 38 of file function_call_harness_generator.cpp.
bool function_call_harness_generatort::implt::nondet_globals = false |
Definition at line 43 of file function_call_harness_generator.cpp.
std::unique_ptr<recursive_initializationt> function_call_harness_generatort::implt::recursive_initialization |
Definition at line 46 of file function_call_harness_generator.cpp.
recursive_initialization_configt function_call_harness_generatort::implt::recursive_initialization_config |
Definition at line 45 of file function_call_harness_generator.cpp.
symbol_tablet* function_call_harness_generatort::implt::symbol_table |
Definition at line 41 of file function_call_harness_generator.cpp.