Skip to content

Commit 25971b4

Browse files
committed
fixed minor bug
1 parent d6e3062 commit 25971b4

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

lib/bap_disasm/bap_disasm_symtab.ml

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,18 @@ let filter_mem mem name entry =
6363
not(String.(name = n) || Block.(entry = e)))
6464

6565
let filter_callees name addr =
66-
Map.filter ~f:(function
67-
| Some a, Some n -> Addr.(addr <> a) && String.(name <> n)
68-
| Some a, _ -> Addr.(addr <> a)
69-
| _, Some n -> String.(name <> n)
70-
| _ -> true)
66+
let filter = function
67+
| Func name' -> String.(name <> name')
68+
| Fall addr' -> Addr.(addr <> addr') in
69+
Map.map ~f:(fun xs -> List.filter xs ~f:filter)
7170

7271
let remove t (name,entry,_) : t =
7372
if Map.mem t.addrs (Block.addr entry) then
7473
{
7574
names = Map.remove t.names name;
7675
addrs = Map.remove t.addrs (Block.addr entry);
7776
memory = filter_mem t.memory name entry;
78-
callees = Map.remove t.callees (Block.addr entry);
77+
callees = filter_callees name (Block.addr entry) t.callees;
7978
}
8079
else t
8180

@@ -104,21 +103,16 @@ let name_of_fn = fst
104103
let entry_of_fn = snd
105104
let span fn = span fn |> Memmap.map ~f:(fun _ -> ())
106105

107-
let add_call_name t b name =
106+
let add_callee t b callee =
108107
let callees =
109108
Map.update t.callees (Block.addr b)
110109
~f:(function
111-
| None -> [Func name]
112-
| Some cs -> Func name :: cs) in
110+
| None -> [callee]
111+
| Some cs -> callee :: cs) in
113112
{t with callees}
114113

115-
let add_fall_addr t b addr =
116-
let callees =
117-
Map.update t.callees (Block.addr b)
118-
~f:(function
119-
| None -> [Fall addr]
120-
| Some cs -> Fall addr :: cs) in
121-
{t with callees}
114+
let add_call_name t b name = add_callee t b (Func name)
115+
let add_fall_addr t b addr = add_callee t b (Fall addr)
122116

123117
let find_map_callee t addr ~f =
124118
match Map.find t.callees addr with

0 commit comments

Comments
 (0)