@@ -42,27 +42,28 @@ int linker_script_merget::add_linker_script_definitions()
42
42
return 0 ;
43
43
44
44
jsont data;
45
- fail= parse_json (linker_def_outfile (), get_message_handler (), data);
45
+ fail = parse_json (linker_def_outfile (), log. get_message_handler (), data);
46
46
if (fail!=0 )
47
47
{
48
- error () << " Problem parsing linker script JSON data" << eom;
48
+ log. error () << " Problem parsing linker script JSON data" << messaget:: eom;
49
49
return fail;
50
50
}
51
51
52
52
fail=linker_data_is_malformed (data);
53
53
if (fail!=0 )
54
54
{
55
- error () << " Malformed linker-script JSON document" << eom;
56
- data.output (error ());
55
+ log. error () << " Malformed linker-script JSON document" << messaget:: eom;
56
+ data.output (log. error ());
57
57
return fail;
58
58
}
59
59
60
60
auto original_goto_model =
61
- read_goto_binary (goto_binary, get_message_handler ());
61
+ read_goto_binary (goto_binary, log. get_message_handler ());
62
62
63
63
if (!original_goto_model.has_value ())
64
64
{
65
- error () << " Unable to read goto binary for linker script merging" << eom;
65
+ log.error () << " Unable to read goto binary for linker script merging"
66
+ << messaget::eom;
66
67
return 1 ;
67
68
}
68
69
@@ -72,8 +73,8 @@ int linker_script_merget::add_linker_script_definitions()
72
73
original_goto_model->goto_functions .function_map .find (INITIALIZE_FUNCTION);
73
74
if (pair == original_goto_model->goto_functions .function_map .end ())
74
75
{
75
- error () << " No " << INITIALIZE_FUNCTION << " found in goto_functions"
76
- << eom;
76
+ log. error () << " No " << INITIALIZE_FUNCTION << " found in goto_functions"
77
+ << messaget:: eom;
77
78
return fail;
78
79
}
79
80
fail = ls_data2instructions (
@@ -84,7 +85,8 @@ int linker_script_merget::add_linker_script_definitions()
84
85
linker_values);
85
86
if (fail!=0 )
86
87
{
87
- error () << " Could not add linkerscript defs to " INITIALIZE_FUNCTION << eom;
88
+ log.error () << " Could not add linkerscript defs to " INITIALIZE_FUNCTION
89
+ << messaget::eom;
88
90
return fail;
89
91
}
90
92
@@ -99,14 +101,18 @@ int linker_script_merget::add_linker_script_definitions()
99
101
100
102
if (fail!=0 )
101
103
{
102
- error () << " Could not pointerize all linker-defined expressions" << eom;
104
+ log.error () << " Could not pointerize all linker-defined expressions"
105
+ << messaget::eom;
103
106
return fail;
104
107
}
105
108
106
109
fail = compiler.write_bin_object_file (goto_binary, *original_goto_model);
107
110
108
111
if (fail!=0 )
109
- error () << " Could not write linkerscript-augmented binary" << eom;
112
+ {
113
+ log.error () << " Could not write linkerscript-augmented binary"
114
+ << messaget::eom;
115
+ }
110
116
111
117
return fail;
112
118
}
@@ -117,11 +123,11 @@ linker_script_merget::linker_script_merget(
117
123
const std::string &goto_binary,
118
124
const cmdlinet &cmdline,
119
125
message_handlert &message_handler)
120
- : messaget(message_handler),
121
- compiler(compiler),
126
+ : compiler(compiler),
122
127
elf_binary(elf_binary),
123
128
goto_binary(goto_binary),
124
129
cmdline(cmdline),
130
+ log(message_handler),
125
131
replacement_predicates(
126
132
{replacement_predicatet (
127
133
" address of array's first member" ,
@@ -225,8 +231,8 @@ int linker_script_merget::pointerize_linker_defined_symbols(
225
231
226
232
if (to_pointerize.empty ())
227
233
continue ;
228
- debug () << " Pointerizing the symbol-table value of symbol " << pair. first
229
- << eom;
234
+ log. debug () << " Pointerizing the symbol-table value of symbol "
235
+ << pair. first << messaget:: eom;
230
236
int fail = pointerize_subexprs_of (
231
237
goto_model.symbol_table .get_writeable_ref (pair.first ).value ,
232
238
to_pointerize,
@@ -235,10 +241,12 @@ int linker_script_merget::pointerize_linker_defined_symbols(
235
241
continue ;
236
242
ret=1 ;
237
243
for (const auto &sym : to_pointerize)
238
- error () << " Could not pointerize '" << sym.get_identifier ()
239
- << " ' in symbol table entry " << pair.first << " . Pretty:\n "
240
- << sym.pretty () << " \n " ;
241
- error () << eom;
244
+ {
245
+ log.error () << " Could not pointerize '" << sym.get_identifier ()
246
+ << " ' in symbol table entry " << pair.first << " . Pretty:\n "
247
+ << sym.pretty () << " \n " ;
248
+ }
249
+ log.error () << messaget::eom;
242
250
}
243
251
244
252
// Finally, pointerize all occurrences of linker-defined symbols in the
@@ -254,19 +262,19 @@ int linker_script_merget::pointerize_linker_defined_symbols(
254
262
symbols_to_pointerize (linker_values, *insts, to_pointerize);
255
263
if (to_pointerize.empty ())
256
264
continue ;
257
- debug () << " Pointerizing a program expression..." << eom;
265
+ log. debug () << " Pointerizing a program expression..." << messaget:: eom;
258
266
int fail = pointerize_subexprs_of (*insts, to_pointerize, linker_values);
259
267
if (to_pointerize.empty () && fail==0 )
260
268
continue ;
261
269
ret=1 ;
262
270
for (const auto &sym : to_pointerize)
263
271
{
264
- error () << " Could not pointerize '" << sym.get_identifier ()
265
- << " ' in function " << gf.first << " . Pretty:\n "
266
- << sym.pretty () << " \n " ;
267
- error ().source_location = iit->source_location ;
272
+ log. error () << " Could not pointerize '" << sym.get_identifier ()
273
+ << " ' in function " << gf.first << " . Pretty:\n "
274
+ << sym.pretty () << " \n " ;
275
+ log. error ().source_location = iit->source_location ;
268
276
}
269
- error () << eom;
277
+ log. error () << messaget:: eom;
270
278
}
271
279
}
272
280
}
@@ -283,14 +291,14 @@ int linker_script_merget::replace_expr(
283
291
auto it=linker_values.find (ident);
284
292
if (it==linker_values.end ())
285
293
{
286
- error () << " Could not find a new expression for linker script-defined "
287
- << " symbol '" << ident << " '" << eom;
294
+ log. error () << " Could not find a new expression for linker script-defined "
295
+ << " symbol '" << ident << " '" << messaget:: eom;
288
296
return 1 ;
289
297
}
290
298
symbol_exprt new_expr=it->second .first ;
291
299
new_expr.add_source_location ()=old_symbol.source_location ();
292
- debug () << " Pointerizing linker-defined symbol '" << ident << " ' of shape < "
293
- << shape << " >." << eom;
300
+ log. debug () << " Pointerizing linker-defined symbol '" << ident
301
+ << " ' of shape <" << shape << " >." << messaget:: eom;
294
302
old_expr=new_expr;
295
303
return 0 ;
296
304
}
@@ -318,8 +326,8 @@ int linker_script_merget::pointerize_subexprs_of(
318
326
if (result==to_pointerize.end ())
319
327
{
320
328
fail=1 ;
321
- error () << " Too many removals of '" << inner_symbol.get_identifier ()
322
- << " '" << eom;
329
+ log. error () << " Too many removals of '" << inner_symbol.get_identifier ()
330
+ << " '" << messaget:: eom;
323
331
}
324
332
else
325
333
to_pointerize.erase (result);
@@ -427,9 +435,9 @@ int linker_script_merget::ls_data2instructions(
427
435
mp_integer array_size = string2integer (d[" size" ].value );
428
436
if (array_size > MAX_FLATTENED_ARRAY_SIZE)
429
437
{
430
- warning () << " Object section '" << d[" section" ].value << " ' of size "
431
- << array_size << " is too large to model. Truncating to "
432
- << MAX_FLATTENED_ARRAY_SIZE << " bytes" << eom;
438
+ log. warning () << " Object section '" << d[" section" ].value << " ' of size "
439
+ << array_size << " is too large to model. Truncating to "
440
+ << MAX_FLATTENED_ARRAY_SIZE << " bytes" << messaget:: eom;
433
441
array_size=MAX_FLATTENED_ARRAY_SIZE;
434
442
if (!has_end)
435
443
truncated_symbols[d[" size-symbol" ].value ]=MAX_FLATTENED_ARRAY_SIZE;
@@ -466,8 +474,9 @@ int linker_script_merget::ls_data2instructions(
466
474
});
467
475
if (it == to_json_array (data[" addresses" ]).end ())
468
476
{
469
- error () << " Start: Could not find address corresponding to symbol '"
470
- << d[" start-symbol" ].value << " ' (start of section)" << eom;
477
+ log.error () << " Start: Could not find address corresponding to symbol '"
478
+ << d[" start-symbol" ].value << " ' (start of section)"
479
+ << messaget::eom;
471
480
return 1 ;
472
481
}
473
482
source_locationt start_loc;
@@ -502,8 +511,9 @@ int linker_script_merget::ls_data2instructions(
502
511
});
503
512
if (entry == to_json_array (data[" addresses" ]).end ())
504
513
{
505
- error () << " Could not find address corresponding to symbol '"
506
- << d[" end-symbol" ].value << " ' (end of section)" << eom;
514
+ log.debug () << " Could not find address corresponding to symbol '"
515
+ << d[" end-symbol" ].value << " ' (end of section)"
516
+ << messaget::eom;
507
517
return 1 ;
508
518
}
509
519
source_locationt end_loc;
@@ -566,10 +576,11 @@ int linker_script_merget::ls_data2instructions(
566
576
symbol_value=d[" val" ].value ;
567
577
else
568
578
{
569
- debug () << " Truncating the value of symbol " << d[" sym" ].value << " from "
570
- << d[" val" ].value << " to " << MAX_FLATTENED_ARRAY_SIZE
571
- << " because it corresponds to the size of a too-large section."
572
- << eom;
579
+ log.debug ()
580
+ << " Truncating the value of symbol " << d[" sym" ].value << " from "
581
+ << d[" val" ].value << " to " << MAX_FLATTENED_ARRAY_SIZE
582
+ << " because it corresponds to the size of a too-large section."
583
+ << messaget::eom;
573
584
symbol_value=std::to_string (MAX_FLATTENED_ARRAY_SIZE);
574
585
}
575
586
@@ -685,8 +696,8 @@ int linker_script_merget::get_linker_script_data(
685
696
linker_defined_symbols.begin (),
686
697
linker_defined_symbols.end (),
687
698
std::ostream_iterator<irep_idt>(linker_def_str, " \n " ));
688
- debug () << " Linker-defined symbols: [" << linker_def_str.str () << " ]\n "
689
- << eom;
699
+ log. debug () << " Linker-defined symbols: [" << linker_def_str.str () << " ]\n "
700
+ << messaget:: eom;
690
701
691
702
temporary_filet linker_def_infile (" goto-cc-linker-defs" , " " );
692
703
std::ofstream linker_def_file (linker_def_infile ());
@@ -702,19 +713,19 @@ int linker_script_merget::get_linker_script_data(
702
713
" --out-file" , def_out_file
703
714
};
704
715
705
- if (get_message_handler ().get_verbosity () >= messaget::M_DEBUG)
716
+ if (log. get_message_handler ().get_verbosity () >= messaget::M_DEBUG)
706
717
argv.push_back (" --very-verbose" );
707
- else if (get_message_handler ().get_verbosity () > messaget::M_RESULT)
718
+ else if (log. get_message_handler ().get_verbosity () > messaget::M_RESULT)
708
719
argv.push_back (" --verbose" );
709
720
710
- debug () << " RUN:" ;
721
+ log. debug () << " RUN:" ;
711
722
for (std::size_t i=0 ; i<argv.size (); i++)
712
- debug () << " " << argv[i];
713
- debug () << eom;
723
+ log. debug () << " " << argv[i];
724
+ log. debug () << messaget:: eom;
714
725
715
726
int rc = run (argv[0 ], argv, linker_def_infile (), def_out_file, " " );
716
727
if (rc!=0 )
717
- warning () << " Problem parsing linker script" << eom;
728
+ log. warning () << " Problem parsing linker script" << messaget:: eom;
718
729
719
730
return rc;
720
731
}
@@ -728,8 +739,9 @@ int linker_script_merget::goto_and_object_mismatch(
728
739
if (linker_values.find (sym)==linker_values.end ())
729
740
{
730
741
fail=1 ;
731
- error () << " Variable '" << sym << " ' was declared extern but never given "
732
- << " a value, even in a linker script" << eom;
742
+ log.error () << " Variable '" << sym
743
+ << " ' was declared extern but never given "
744
+ << " a value, even in a linker script" << messaget::eom;
733
745
}
734
746
735
747
for (const auto &pair : linker_values)
@@ -739,10 +751,11 @@ int linker_script_merget::goto_and_object_mismatch(
739
751
if (it==linker_defined_symbols.end ())
740
752
{
741
753
fail=1 ;
742
- error () << " Linker script-defined symbol '" << pair.first << " ' was "
743
- << " either defined in the C source code, not declared extern in "
744
- << " the C source code, or does not appear in the C source code"
745
- << eom;
754
+ log.error ()
755
+ << " Linker script-defined symbol '" << pair.first << " ' was "
756
+ << " either defined in the C source code, not declared extern in "
757
+ << " the C source code, or does not appear in the C source code"
758
+ << messaget::eom;
746
759
}
747
760
}
748
761
return fail;
0 commit comments