Skip to content

Commit 24c678f

Browse files
committed
CHB:remove redundant method
1 parent 94d011a commit 24c678f

File tree

3 files changed

+48
-96
lines changed

3 files changed

+48
-96
lines changed

CodeHawk/CHB/bchlib/bCHFunctionInfo.ml

Lines changed: 29 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ open BCHBCTypePretty
5353
open BCHBCTypes
5454
open BCHBCTypeUtil
5555
open BCHBTerm
56-
open BCHCallTarget
5756
open BCHCallTargetInfo
5857
open BCHCPURegisters
5958
open 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

CodeHawk/CHB/bchlib/bCHLibTypes.mli

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4547,9 +4547,23 @@ class type function_environment_int =
45474547
-> numerical_t
45484548
-> variable_t traceresult
45494549

4550+
(** [mk_gloc_variable gloc memoff] creates a global variable for an existing
4551+
global location [gloc] with memory offset [memoff].
4552+
4553+
It also sets the name of the global variable and the name of the global
4554+
variable with offset according to the name of the global location [gloc]
4555+
*)
45504556
method mk_gloc_variable:
45514557
global_location_int -> memory_offset_t -> variable_t
45524558

4559+
(** [mk_initial_memory_value var] returns an auxiliary variable that
4560+
represents the initial value of [var] at function entry.
4561+
4562+
If [var] is a global struct variable, it also creates initial values
4563+
for the struct fields.
4564+
4565+
If [var] is not an external memory variable an error is returned.
4566+
*)
45534567
method mk_initial_memory_value: variable_t -> variable_t traceresult
45544568

45554569
(** [mk_memory_variable memref offset] returns a memory variable with
@@ -4567,13 +4581,14 @@ class type function_environment_int =
45674581
(** [mk_offset_memory_variable memref memoff] returns a memory variable
45684582
with [memref] as basis and a generic memory offset.
45694583
4570-
If [memref] is an unknown base a temp variable is returned
4584+
@raise [BCH_failure] if [memref] is an unknown memory reference.
4585+
4586+
Note: eventually unknown memory references should be eliminated. *)
45714587
method mk_offset_memory_variable:
45724588
?size:int
45734589
-> memory_reference_int
45744590
-> memory_offset_t
45754591
-> variable_t
4576-
*)
45774592
(*
45784593
method mk_index_offset_global_memory_variable:
45794594
?elementsize:int
@@ -4926,7 +4941,6 @@ class type function_environment_int =
49264941
method get_globalbasevar_with_offsets:
49274942
variable_t -> (variable_t * numerical_t list) option
49284943

4929-
method get_initialized_call_target_value: variable_t -> call_target_t
49304944
method get_initialized_string_value: variable_t -> int -> string
49314945

49324946
method variables_in_expr: xpr_t -> variable_t list
@@ -4952,7 +4966,6 @@ class type function_environment_int =
49524966
(** {1 Envionment data predicates} *)
49534967

49544968
method is_virtual_call : variable_t -> bool
4955-
method has_initialized_call_target_value: variable_t -> bool
49564969
method has_initialized_string_value : variable_t -> int -> bool
49574970

49584971
(** {1 Printing} *)

CodeHawk/CHB/bchlib/bCHMemoryReference.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,8 @@ let get_index_offset_variables (offset: memory_offset_t): variable_t list =
206206
let rec aux (o: memory_offset_t) (vlst: variable_t list) =
207207
match o with
208208
| IndexOffset (v, _, suboffset) -> aux suboffset (v :: vlst)
209+
| ArrayIndexOffset (x, suboffset) ->
210+
aux suboffset ((Xprt.variables_in_expr x) @ vlst)
209211
| ConstantOffset (_, suboffset)
210212
| FieldOffset (_, suboffset) -> aux suboffset vlst
211213
| _ -> vlst in

0 commit comments

Comments
 (0)