@@ -53,7 +53,6 @@ open BCHBCTypePretty
5353open BCHBCTypes
5454open BCHBCTypeUtil
5555open BCHBTerm
56- open BCHCallTarget
5756open BCHCallTargetInfo
5857open BCHCPURegisters
5958open BCHConstantDefinitions
@@ -171,7 +170,6 @@ object (self)
171170
172171 val scope = LF. mkScope ()
173172 val virtual_calls = H. create 3
174- val initial_call_target_values = H. create 3
175173 val initial_string_values = H. create 3
176174
177175 initializer
@@ -313,51 +311,6 @@ object (self)
313311 STR " -- " ;
314312 STR s])
315313 end
316- | FieldCallTarget tgt ->
317- begin
318- H. add
319- initial_call_target_values
320- mvarin#getName#getSeqNumber
321- tgt;
322- chlog#add
323- " struct constant invariant"
324- (LBLOCK [
325- faddr#toPretty;
326- STR " : " ;
327- mvarin#toPretty;
328- STR " -- " ;
329- call_target_to_pretty tgt])
330- end
331- | FieldValues ll ->
332- List. iter (fun (offset , ssc ) ->
333- log_tfold
334- (log_error
335- " set_argument_structconstant" " invalid memref-2" )
336- ~ok: (fun mref ->
337- let mvar =
338- self#mk_memory_variable mref
339- (mkNumerical offset) in
340- let mvarin =
341- TR. tget_ok (self#mk_initial_memory_value mvar) in
342- match ssc with
343- | FieldCallTarget tgt ->
344- begin
345- H. add
346- initial_call_target_values
347- mvarin#getName#getSeqNumber
348- tgt;
349- chlog#add
350- " struct constant invariant"
351- (LBLOCK [
352- faddr#toPretty;
353- STR " : " ;
354- mvarin#toPretty;
355- STR " -- " ;
356- call_target_to_pretty tgt])
357- end
358- | _ -> () )
359- ~error: (fun _ -> () )
360- (self#mk_base_variable_reference mvarin)) ll
361314 | _ -> () )
362315 ~error: (fun _ -> () )
363316 (self#mk_base_variable_reference argvarin)) l
@@ -787,13 +740,17 @@ object (self)
787740 self#mk_variable
788741 (varmgr#make_memory_variable (self#mk_unknown_memory_reference s) NoOffset )
789742
743+ (* Eventually this function should be replaced with mk_offset_memory_variable *)
790744 method mk_memory_variable
791745 ?(save_name =true )
792746 ?(size =4 )
793747 (memref : memory_reference_int )
794748 (offset : numerical_t ) =
795749 if memref#is_unknown_reference then
796- self#mk_num_temp
750+ begin
751+ log_error_result __FILE__ __LINE__ [" unknown memory reference: tmp created" ];
752+ self#mk_num_temp
753+ end
797754 else
798755 let optName = match memref#get_base with
799756 | BaseVar v when variable_names#has v#getName#getSeqNumber ->
@@ -821,17 +778,19 @@ object (self)
821778 else
822779 Error [__FILE__ ^ " :" ^ (string_of_int __LINE__) ^ " : "
823780 ^ " variable " ^ (p2s v#toPretty) ^ " is not a memory variable" ]
824- (*
781+
825782 method mk_offset_memory_variable
826783 ?(size =4 )
827784 (memref : memory_reference_int )
828785 (offset : memory_offset_t ): variable_t =
829786 if memref#is_unknown_reference then
830- self#mk_num_temp
787+ raise
788+ (BCH_failure
789+ (LBLOCK [STR " Unknown memory reference in mk_offset_memory_variable" ]))
831790 else
832791 let avar = varmgr#make_memory_variable memref ~size offset in
833792 self#mk_variable avar
834- *)
793+
835794
836795 (*
837796 method mk_index_offset_global_memory_variable
@@ -1047,7 +1006,7 @@ object (self)
10471006 self#set_variable_name iv (vname ^ " _in" ) in
10481007 if is_ptrto_known_struct vtype then
10491008 self#set_pointedto_struct_field_names 1 iv vname vtype)
1050- ~error: (fun _ -> () )
1009+ ~error: (fun e -> log_error_result __FILE__ __LINE__ e )
10511010 (varmgr#get_global_variable_address v)
10521011
10531012 method mk_initial_memory_value (v :variable_t ): variable_t traceresult =
@@ -1070,38 +1029,32 @@ object (self)
10701029
10711030 method private nested_exprs_in_var (v : variable_t ): xpr_t list =
10721031 if self#is_symbolic_value v then
1073- log_tfold
1074- (log_error " nested_exprs_in_var " " invalid symbolic value " )
1075- ~ok : (fun x ->
1076- let _ =
1077- chlog#add
1078- " nested exprs in var "
1079- ( LBLOCK [v#toPretty; STR " : " ; x2p x]) in
1080- [x])
1081- ~error: ( fun _ -> [] )
1032+ TR. tfold
1033+ ~ok: ( fun x -> [x] )
1034+ ~error : (fun e ->
1035+ begin
1036+ log_error_result
1037+ ~msg: ( " invalid symbolic value: " ^ v#getName#getBaseName)
1038+ __FILE__ __LINE__ e;
1039+ []
1040+ end )
10821041 (self#get_symbolic_value_expr v)
10831042
1084- else if self#is_global_variable v then
1085- log_tfold
1086- (log_error " nested_exprs_in_var" " invalid offset" )
1043+ else if self#is_memory_variable v then
1044+ TR. tfold
10871045 ~ok: (fun memoff ->
1088- match memoff with
1089- | ConstantOffset (_ , IndexOffset (indexvar , _ , _ )) ->
1090- let _ =
1091- chlog#add
1092- " nested exprs in var"
1093- (LBLOCK [v#toPretty; STR " : " ; indexvar#toPretty]) in
1094- [XVar indexvar]
1095- | _ -> [] )
1096- ~error: (fun _ -> [] )
1046+ List. map (fun v -> XVar v) (get_index_offset_variables memoff))
1047+ ~error: (fun e ->
1048+ begin
1049+ log_error_result __FILE__ __LINE__ e;
1050+ []
1051+ end )
10971052 (self#get_memvar_offset v)
10981053 else
10991054 []
11001055
11011056 method variables_in_expr (expr : xpr_t ): variable_t list =
1102-
11031057 let s = new VariableCollections. set_t in
1104-
11051058 let rec vs x =
11061059 match x with
11071060 | XVar v ->
@@ -1118,24 +1071,8 @@ object (self)
11181071 s#toList
11191072 end
11201073
1121- method has_initialized_call_target_value (v :variable_t ) =
1122- H. mem initial_call_target_values v#getName#getSeqNumber
1123-
1124- method get_initialized_call_target_value (v :variable_t ) =
1125- let index = v#getName#getSeqNumber in
1126- if H. mem initial_call_target_values index then
1127- H. find initial_call_target_values index
1128- else
1129- raise
1130- (BCH_failure
1131- (LBLOCK [
1132- STR " initialized call target value not found for " ;
1133- v#toPretty;
1134- STR " in " ;
1135- faddr#toPretty]))
1136-
11371074 method has_initialized_string_value (v :variable_t ) (offset :int ) =
1138- H. mem initial_string_values (v#getName#getSeqNumber,offset)
1075+ H. mem initial_string_values (v#getName#getSeqNumber, offset)
11391076
11401077 method get_initialized_string_value (v :variable_t ) (offset :int ) =
11411078 let index = v#getName#getSeqNumber in
0 commit comments