Skip to content

Commit

Permalink
Do not return imported symbols
Browse files Browse the repository at this point in the history
  • Loading branch information
nojb committed May 26, 2020
1 parent f7b64c9 commit 5a429b8
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions utils/binutils.ml
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,15 @@ module ELF = struct
Array.init (dynsym.sh_size / dynsym.sh_entsize) mk
end

let find_symbol symbols symname =
let f = function
| {st_shndx = 0; _} -> false
| {st_name; _} -> st_name = symname
in
array_find f symbols

let symbol_offset sections symbols symname =
match array_find (fun {st_name; _} -> st_name = symname) symbols with
match find_symbol symbols symname with
| None ->
None
| Some {st_shndx; st_value; _} ->
Expand All @@ -294,7 +301,7 @@ module ELF = struct
(sub st_value sections.(st_shndx).sh_addr))

let defines_symbol symbols symname =
Array.exists (fun {st_name; _} -> st_name = symname) symbols
Option.is_some (find_symbol symbols symname)

let read ic =
seek_in ic 0;
Expand Down Expand Up @@ -414,19 +421,22 @@ module Mach_O = struct
let fix symname =
"_" ^ symname

let find_symbol symbols symname =
let f {n_name; n_type; _} =
n_type land 0b1111 = 0b1111 (* N_EXT + N_SECT *) &&
n_name = symname
in
array_find f symbols

let symbol_offset symbols symname =
let symname = fix symname in
match array_find (function {n_name; _} -> n_name = symname) symbols with
match find_symbol symbols symname with
| None -> None
| Some {n_value; n_type; _} ->
if n_type land 0b1111 = 0b1111 (* N_EXT + N_SECT *) then
Some n_value
else
None
| Some {n_value; _} -> Some n_value

let defines_symbol symbols symname =
let symname = fix symname in
Array.exists (fun {n_name; _} -> n_name = symname) symbols
Option.is_some (find_symbol symbols symname)

type magic =
| MH_MAGIC
Expand Down

0 comments on commit 5a429b8

Please sign in to comment.