Skip to content

Commit 57f9fa6

Browse files
author
Daniel Kroening
authored
Merge pull request #721 from tautschnig/rename-_start
Rename _start to __CPROVER_start
2 parents c717737 + 9c68c07 commit 57f9fa6

File tree

9 files changed

+37
-21
lines changed

9 files changed

+37
-21
lines changed

regression/cbmc/graphml_witness1/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ main.c
4949
<node id="[0-9\.]*">
5050
<data key="entry">true</data>
5151
</node>
52-
<edge source="33.22" target="4.29">
52+
<edge source="[0-9\.]*" target="[0-9\.]*">
5353
<data key="originfile">main.c</data>
5454
<data key="startline">21</data>
5555
</edge>

src/cbmc/symex_coverage.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ void symex_coveraget::compute_overall_coverage(
343343
forall_goto_functions(gf_it, goto_functions)
344344
{
345345
if(!gf_it->second.body_available() ||
346-
gf_it->first==ID__start ||
346+
gf_it->first==goto_functions.entry_point() ||
347347
gf_it->first==CPROVER_PREFIX "initialize")
348348
continue;
349349

src/cegis/invariant/fitness/concrete_fitness_source_provider.cpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,15 @@ bool contains(const std::string &haystack, const std::string &needle)
6969
return std::string::npos != haystack.find(needle);
7070
}
7171

72-
bool handle_start(std::string &source, const std::string &line)
72+
bool handle_start(
73+
const goto_functionst &gf,
74+
std::string &source,
75+
const std::string &line)
7376
{
74-
if ("void _start(void)" != line) return false;
77+
std::ostringstream start_sig;
78+
start_sig << "void " << gf.entry_point() << "(void)";
79+
if(start_sig.str()!=line)
80+
return false;
7581
source+="int main(const int argc, const char * const argv[])\n";
7682
return true;
7783
}
@@ -212,17 +218,24 @@ bool handle_internals(const std::string &line)
212218
|| "static signed int assert#return_value;" == line;
213219
}
214220

215-
void post_process(std::string &source, std::stringstream &ss)
221+
void post_process(
222+
const goto_functionst &gf,
223+
std::string &source,
224+
std::stringstream &ss)
216225
{
217226
bool deserialise_initialised=false;
218227
bool ce_initialised=false;
219228
for (std::string line; std::getline(ss, line);)
220229
{
221-
if (handle_start(source, line) || handle_return_value(line)
222-
|| handle_ce_loop(line, ss) || handle_internals(line)
223-
|| handle_programs(source, deserialise_initialised, line)
224-
|| handle_x0(source, line) || handle_ce(source, ce_initialised, line)
225-
|| handle_second_instr_struct(source, line)) continue;
230+
if(handle_start(gf, source, line) ||
231+
handle_return_value(line) ||
232+
handle_ce_loop(line, ss) ||
233+
handle_internals(line) ||
234+
handle_programs(source, deserialise_initialised, line) ||
235+
handle_x0(source, line) ||
236+
handle_ce(source, ce_initialised, line) ||
237+
handle_second_instr_struct(source, line))
238+
continue;
226239
replace_ce_index(line);
227240
replace_assume(line);
228241
fix_cprover_names(line);
@@ -254,7 +267,7 @@ std::string &post_process_fitness_source(std::string &result,
254267
add_first_prog_offset(result, num_ce_vars);
255268
add_assume_implementation(result);
256269
add_danger_execute(result, num_vars, num_consts, max_prog_size, exec);
257-
post_process(result, ss);
270+
post_process(gf, result, ss);
258271
transform_program_individual_main_to_lib(result, danger);
259272
return result;
260273
}

src/cegis/jsa/genetic/jsa_source_provider.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ jsa_source_providert::jsa_source_providert(jsa_symex_learnt &lcfg) :
2626
{
2727
}
2828

29-
#define START_METHOD_PREFIX "void _start"
3029
#define RETURN_VALUE_ASSIGNMENT RETURN_VALUE_SUFFIX" ="
3130
#define JUMP_BUFFER "__CPROVER_jsa_jump_buffer"
3231
#define TEST_SIGNATURE "int " CEGIS_FITNESS_TEST_FUNC \
@@ -104,7 +103,9 @@ void add_main_body(std::string &result, const jsa_symex_learnt &lcfg)
104103
std::ostringstream oss;
105104
dump_c(entry_only, false, ns, oss);
106105
const std::string main_body(oss.str());
107-
result+=main_body.substr(main_body.find(START_METHOD_PREFIX));
106+
result+=
107+
main_body.substr(
108+
main_body.find(std::string("void ")+id2string(gf.entry_point())));
108109
}
109110

110111
void fix_return_values(std::string &result)
@@ -138,9 +139,11 @@ void fix_return_values(std::string &result)
138139
substitute(result, "\n return 0;", "");
139140
}
140141

141-
void add_facade_function(std::string &result)
142+
void add_facade_function(const goto_functionst &gf, std::string &result)
142143
{
143-
substitute(result, "void _start(void)", TEST_SIGNATURE);
144+
std::ostringstream start_sig;
145+
start_sig << "void " << gf.entry_point() << "(void)";
146+
substitute(result, start_sig.str(), TEST_SIGNATURE);
144147
const std::string::size_type pos=result.find(" __CPROVER_initialize();");
145148
result.insert(pos, " if (setjmp(" JUMP_BUFFER")) return EXIT_FAILURE;\n");
146149
}
@@ -249,7 +252,7 @@ const std::string &jsa_source_providert::operator ()()
249252
add_temp_clean(source, lcfg.get_symbol_table());
250253
add_main_body(source, lcfg);
251254
fix_return_values(source);
252-
add_facade_function(source);
255+
add_facade_function(lcfg.get_goto_functions(), source);
253256
insert_solution(source, lcfg);
254257
insert_counterexample(source);
255258
cleanup(source);

src/goto-instrument/cover.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ void instrument_cover_goals(
13911391
{
13921392
Forall_goto_functions(f_it, goto_functions)
13931393
{
1394-
if(f_it->first==ID__start ||
1394+
if(f_it->first==goto_functions.entry_point() ||
13951395
f_it->first=="__CPROVER_initialize")
13961396
continue;
13971397

src/goto-programs/goto_functions_template.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Date: June 2003
1616

1717
#include <util/std_types.h>
1818
#include <util/symbol.h>
19+
#include <util/cprover_prefix.h>
1920

2021
template <class bodyT>
2122
class goto_function_templatet
@@ -123,7 +124,7 @@ class goto_functions_templatet
123124
static inline irep_idt entry_point()
124125
{
125126
// do not confuse with C's "int main()"
126-
return ID__start;
127+
return CPROVER_PREFIX "_start";
127128
}
128129

129130
void swap(goto_functions_templatet &other)

src/goto-programs/show_goto_functions_json.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ json_objectt show_goto_functions_jsont::convert(
6767
json_function["isBodyAvailable"]=
6868
jsont::json_boolean(function.body_available());
6969
bool is_internal=(has_prefix(id2string(function_name), CPROVER_PREFIX) ||
70-
function_name==ID__start);
70+
function_name==goto_functions.entry_point());
7171
json_function["isInternal"]=jsont::json_boolean(is_internal);
7272

7373
if(function.body_available())

src/goto-programs/show_goto_functions_xml.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ xmlt show_goto_functions_xmlt::convert(
8080
xml_function.set_attribute_bool(
8181
"is_body_available", function.body_available());
8282
bool is_internal=(has_prefix(id2string(function_name), CPROVER_PREFIX) ||
83-
function_name==ID__start);
83+
function_name==goto_functions.entry_point());
8484
xml_function.set_attribute_bool("is_internal", is_internal);
8585

8686
if(function.body_available())

src/util/irep_ids.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,6 @@ read
682682
write
683683
native
684684
final
685-
_start
686685
compound_literal
687686
custom_bv
688687
custom_unsignedbv

0 commit comments

Comments
 (0)