Skip to content

Commit

Permalink
added ElfVersion with stubbed out structs and getters; fixed broken m…
Browse files Browse the repository at this point in the history
…ap not returning a map to write to disk; updated oasis;
  • Loading branch information
m4b committed Sep 24, 2015
1 parent ff3d3c0 commit 7e0f0e8
Show file tree
Hide file tree
Showing 6 changed files with 162 additions and 6 deletions.
1 change: 1 addition & 0 deletions _oasis
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ Library "elf"
ElfHeader,
ElfProgramHeader,
ElfSectionHeader,
ElfVersion,
ElfConstants,
ElfDynamic,
ElfReloc,
Expand Down
3 changes: 2 additions & 1 deletion lib/SymbolMap.ml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,8 @@ let build ~verbose:verbose ~graph:graph ~libs:libstack =
RdrGraph.graph_lib_dependencies ~use_dot_storage:true lib_deps;
if (graph) then
RdrGraph.graph_library_dependencies
~use_sfdp:(RdrCommand.is_linux()) ~use_dot_storage:true
~use_sfdp:(RdrCommand.is_linux()) ~use_dot_storage:true;
map
end
else
let library = Stack.pop libstack in
Expand Down
151 changes: 151 additions & 0 deletions lib/elf/ElfVersion.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
open Binary

type elf32_verdef = {
vd_version: int [@size 4];
vd_flags: int [@size 4];
vd_ndx: int [@size 4];
vd_cnt: int [@size 4];
vd_hash: int [@size 4];
vd_aux: int [@size 4];
vd_next: int [@size 4];
}

type elf64_verdef = {
vd_version: int [@size 8];
vd_flags: int [@size 8];
vd_ndx: int [@size 8];
vd_cnt: int [@size 8];
vd_hash: int [@size 8];
vd_aux: int [@size 8];
vd_next: int [@size 8];
}

type elf32_verdaux = {
vda_name: int [@size 4];
vda_next: int [@size 4];
}

type elf64_verdaux = {
vda_name: int [@size 8];
vda_next: int [@size 8];
}

type elf32_verneed = {
vn_version: int [@size 4];
vn_cnt: int [@size 4];
vn_file: int [@size 4];
vn_aux: int [@size 4];
vn_next: int [@size 4];
}

type elf64_verneed = {
vn_version: int [@size 8];
vn_cnt: int [@size 8];
vn_file: int [@size 8];
vn_aux: int [@size 8];
vn_next: int [@size 8];
}

type elf32_vernaux = {
vna_hash: int [@size 4];
vna_flags: int [@size 4];
vna_other: int [@size 4];
vna_name: int [@size 4];
vna_next: int [@size 4];
}

type elf64_vernaux = {
vna_hash: int [@size 8];
vna_flags: int [@size 8];
vna_other: int [@size 8];
vna_name: int [@size 8];
vna_next: int [@size 8];
}

let kVER_DEF_NONE = 0

let kVER_DEF_CURRENT = 1

let kVER_DEF_NUM = 2

let kVER_FLG_BASE = 0x1

let kVER_FLG_WEAK = 0x2

let kVER_NDX_LOCAL = 0

let kVER_NDX_GLOBAL = 1

let kVER_NDX_LORESERVE = 0xff00

let kVER_NDX_ELIMINATE = 0xff01

let kVER_NEED_NONE = 0

let kVER_NEED_CURRENT = 1

let kVER_NEED_NUM = 2

let kVER_FLG_WEAK = 0x2

let get_elf32_verdef binary offset :elf32_verdef =
let vd_version,o = Binary.u32o binary offset in
let vd_flags,o = Binary.u32o binary o in
let vd_ndx,o = Binary.u32o binary o in
let vd_cnt,o = Binary.u32o binary o in
let vd_hash,o = Binary.u32o binary o in
let vd_aux,o = Binary.u32o binary o in
let vd_next = Binary.u32 binary o in
{vd_version;vd_flags;vd_ndx;vd_cnt;vd_hash;vd_aux;vd_next;}

let get_elf64_verdef binary offset :elf64_verdef =
let vd_version,o = Binary.u64o binary offset in
let vd_flags,o = Binary.u64o binary o in
let vd_ndx,o = Binary.u64o binary o in
let vd_cnt,o = Binary.u64o binary o in
let vd_hash,o = Binary.u64o binary o in
let vd_aux,o = Binary.u64o binary o in
let vd_next = Binary.u64 binary o in
{vd_version;vd_flags;vd_ndx;vd_cnt;vd_hash;vd_aux;vd_next;}

let get_elf32_verdaux binary offset :elf32_verdaux =
let vda_name,o = Binary.u32o binary offset in
let vda_next = Binary.u32 binary o in
{vda_name;vda_next;}

let get_elf64_verdaux binary offset :elf64_verdaux =
let vda_name,o = Binary.u64o binary offset in
let vda_next = Binary.u64 binary o in
{vda_name;vda_next;}

let get_elf32_verneed binary offset :elf32_verneed =
let vn_version,o = Binary.u32o binary offset in
let vn_cnt,o = Binary.u32o binary o in
let vn_file,o = Binary.u32o binary o in
let vn_aux,o = Binary.u32o binary o in
let vn_next = Binary.u32 binary o in
{vn_version;vn_cnt;vn_file;vn_aux;vn_next;}

let get_elf64_verneed binary offset :elf64_verneed =
let vn_version,o = Binary.u64o binary offset in
let vn_cnt,o = Binary.u64o binary o in
let vn_file,o = Binary.u64o binary o in
let vn_aux,o = Binary.u64o binary o in
let vn_next = Binary.u64 binary o in
{vn_version;vn_cnt;vn_file;vn_aux;vn_next;}

let get_elf32_vernaux binary offset :elf32_vernaux =
let vna_hash,o = Binary.u32o binary offset in
let vna_flags,o = Binary.u32o binary o in
let vna_other,o = Binary.u32o binary o in
let vna_name,o = Binary.u32o binary o in
let vna_next = Binary.u32 binary o in
{vna_hash;vna_flags;vna_other;vna_name;vna_next;}

let get_elf64_vernaux binary offset :elf64_vernaux =
let vna_hash,o = Binary.u64o binary offset in
let vna_flags,o = Binary.u64o binary o in
let vna_other,o = Binary.u64o binary o in
let vna_name,o = Binary.u64o binary o in
let vna_next = Binary.u64 binary o in
{vna_hash;vna_flags;vna_other;vna_name;vna_next;}
3 changes: 2 additions & 1 deletion lib/elf/elf.mldylib
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# OASIS_START
# DO NOT EDIT (digest: e93d6fd95d53dfc93eab879f82f97465)
# DO NOT EDIT (digest: ce24dc89c5ac84c2d6a3a945d434939d)
Elf
ElfHeader
ElfProgramHeader
ElfSectionHeader
ElfVersion
ElfConstants
ElfDynamic
ElfReloc
Expand Down
3 changes: 2 additions & 1 deletion lib/elf/elf.mllib
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# OASIS_START
# DO NOT EDIT (digest: e93d6fd95d53dfc93eab879f82f97465)
# DO NOT EDIT (digest: ce24dc89c5ac84c2d6a3a945d434939d)
Elf
ElfHeader
ElfProgramHeader
ElfSectionHeader
ElfVersion
ElfConstants
ElfDynamic
ElfReloc
Expand Down
7 changes: 4 additions & 3 deletions setup.ml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(* setup.ml generated for the first time by OASIS v0.4.5 *)

(* OASIS_START *)
(* DO NOT EDIT (digest: 5714b77474c8574494499b14e7a6eed4) *)
(* DO NOT EDIT (digest: c39a303aa3a389451d8a54eacf5d3dab) *)
(*
Regenerated by OASIS v0.4.5
Visit http://oasis.forge.ocamlcore.org for more information and
Expand Down Expand Up @@ -6854,6 +6854,7 @@ let setup_t =
"ElfHeader";
"ElfProgramHeader";
"ElfSectionHeader";
"ElfVersion";
"ElfConstants";
"ElfDynamic";
"ElfReloc";
Expand Down Expand Up @@ -7068,14 +7069,14 @@ let setup_t =
};
oasis_fn = Some "_oasis";
oasis_version = "0.4.5";
oasis_digest = Some "Ù\1296qá\b\129m°è@Þ\141º¥«";
oasis_digest = Some " \1455\180\132Y\221T\134\203 \024\189M\r/";
oasis_exec = None;
oasis_setup_args = [];
setup_update = false
};;

let setup () = BaseSetup.setup setup_t;;

# 7080 "setup.ml"
# 7081 "setup.ml"
(* OASIS_STOP *)
let () = setup ();;

0 comments on commit 7e0f0e8

Please sign in to comment.