@@ -25,16 +25,28 @@ Author: Kareem Khazem <karkhaz@karkhaz.com>, 2017
2525
2626#include < goto-programs/read_goto_binary.h>
2727
28+ #include " compile.h"
29+
2830int linker_script_merget::add_linker_script_definitions ()
2931{
3032 if (!cmdline.isset (' T' ))
3133 return 0 ;
3234
35+ auto original_goto_model =
36+ read_goto_binary (goto_binary, log.get_message_handler ());
37+
38+ if (!original_goto_model.has_value ())
39+ {
40+ log.error () << " Unable to read goto binary for linker script merging"
41+ << messaget::eom;
42+ return 1 ;
43+ }
44+
3345 temporary_filet linker_def_outfile (" goto-cc-linker-info" , " .json" );
3446 std::list<irep_idt> linker_defined_symbols;
3547 int fail = get_linker_script_data (
3648 linker_defined_symbols,
37- compiler. goto_model . symbol_table ,
49+ original_goto_model-> symbol_table ,
3850 elf_binary,
3951 linker_def_outfile ());
4052 // ignore linker script parsing failures until the code is tested more widely
@@ -57,16 +69,6 @@ int linker_script_merget::add_linker_script_definitions()
5769 return fail;
5870 }
5971
60- auto original_goto_model =
61- read_goto_binary (goto_binary, log.get_message_handler ());
62-
63- if (!original_goto_model.has_value ())
64- {
65- log.error () << " Unable to read goto binary for linker script merging"
66- << messaget::eom;
67- return 1 ;
68- }
69-
7072 fail=1 ;
7173 linker_valuest linker_values;
7274 const auto &pair =
@@ -106,7 +108,11 @@ int linker_script_merget::add_linker_script_definitions()
106108 return fail;
107109 }
108110
109- fail = compiler.write_bin_object_file (goto_binary, *original_goto_model);
111+ fail = compilet::write_bin_object_file (
112+ goto_binary,
113+ *original_goto_model,
114+ cmdline.isset (" validate-goto-model" ),
115+ log.get_message_handler ());
110116
111117 if (fail!=0 )
112118 {
@@ -118,13 +124,11 @@ int linker_script_merget::add_linker_script_definitions()
118124}
119125
120126linker_script_merget::linker_script_merget (
121- compilet &compiler,
122127 const std::string &elf_binary,
123128 const std::string &goto_binary,
124129 const cmdlinet &cmdline,
125130 message_handlert &message_handler)
126- : compiler(compiler),
127- elf_binary(elf_binary),
131+ : elf_binary(elf_binary),
128132 goto_binary(goto_binary),
129133 cmdline(cmdline),
130134 log(message_handler),
0 commit comments